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.
|
||||
*
|
||||
* 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 ::
|
||||
* The x~coordinate of the pivot point of the rotation (in font
|
||||
|
|
|
@ -619,15 +619,32 @@
|
|||
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.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 );
|
||||
apaint->u.rotate.center_y = FT_NEXT_LONG( p );
|
||||
if ( (FT_PaintFormat_Internal)apaint->format ==
|
||||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue