forked from minhngoc25a/freetype2
[sfnt] PaintRotate/PaintRotateAroundCenter spec updates
* src/sfnt/ttcolr.c (read_paint): Implement spec change where PaintRotate and PaintRotateAroundCenter were split for a more compact format definition. Update parsing to read shorter values as changed in the spec. * include/freetype/ftcolor.h (FT_PaintRotate): Update documentation.
This commit is contained in:
parent
d7bdcb1bb5
commit
48df0fa652
|
@ -1173,7 +1173,9 @@ FT_BEGIN_HEADER
|
||||||
* rotated.
|
* rotated.
|
||||||
*
|
*
|
||||||
* angle ::
|
* angle ::
|
||||||
* The rotation angle that is to be applied.
|
* The rotation angle that is to be applied in degrees divided by
|
||||||
|
* 180.0 (as in the spec). Multiply by 180.0f to receive degrees
|
||||||
|
* value.
|
||||||
*
|
*
|
||||||
* center_x ::
|
* center_x ::
|
||||||
* The x~coordinate of the pivot point of the rotation (in font
|
* The x~coordinate of the pivot point of the rotation (in font
|
||||||
|
|
|
@ -619,15 +619,32 @@
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
else if ( apaint->format == FT_COLR_PAINTFORMAT_ROTATE )
|
else if ( apaint->format == FT_COLR_PAINTFORMAT_ROTATE ||
|
||||||
|
(FT_PaintFormat_Internal)apaint->format ==
|
||||||
|
FT_COLR_PAINTFORMAT_INTERNAL_ROTATE_CENTER )
|
||||||
{
|
{
|
||||||
apaint->u.rotate.paint.p = child_table_p;
|
apaint->u.rotate.paint.p = child_table_p;
|
||||||
apaint->u.rotate.paint.insert_root_transform = 0;
|
apaint->u.rotate.paint.insert_root_transform = 0;
|
||||||
|
|
||||||
apaint->u.rotate.angle = FT_NEXT_LONG( p );
|
/* The angle is specified as F2DOT14 and our output type is an FT_Fixed,
|
||||||
|
* shift by 2 positions. */
|
||||||
|
apaint->u.rotate.angle = FT_NEXT_SHORT( p ) << 2;
|
||||||
|
|
||||||
apaint->u.rotate.center_x = FT_NEXT_LONG( p );
|
if ( (FT_PaintFormat_Internal)apaint->format ==
|
||||||
apaint->u.rotate.center_y = FT_NEXT_LONG( p );
|
FT_COLR_PAINTFORMAT_INTERNAL_ROTATE_CENTER )
|
||||||
|
{
|
||||||
|
/* The center is specified as Int16 in font units, shift by 16 bits to
|
||||||
|
* convert to our FT_Fixed output type. */
|
||||||
|
apaint->u.rotate.center_x = FT_NEXT_SHORT( p ) << 16;
|
||||||
|
apaint->u.rotate.center_y = FT_NEXT_SHORT( p ) << 16;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
apaint->u.rotate.center_x = 0;
|
||||||
|
apaint->u.rotate.center_y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
apaint->format = FT_COLR_PAINTFORMAT_ROTATE;
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue