forked from minhngoc25a/freetype2
Add new methods required for 'COLR' v1 to public API (#59703).
* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method for retrieving the root paint object for a color glyph by specifying a glyph ID. (FT_Get_Paint_Layers): New method for retrieving the layers of a `PaintColorGlyph`. (FT_Get_ColorLine_Stops): New method for retrieving the stops of a color. (FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an `FT_COLR_Paint` object.
This commit is contained in:
parent
f57c24db63
commit
08dba4dc35
14
ChangeLog
14
ChangeLog
|
@ -1,3 +1,17 @@
|
||||||
|
2020-12-16 Dominik Röttsches <drott@chromium.org>
|
||||||
|
|
||||||
|
Add new methods required for 'COLR' v1 to public API (#59703).
|
||||||
|
|
||||||
|
* include/freetype/freetype.h (FT_Get_Color_Glyph_Paint): New method
|
||||||
|
for retrieving the root paint object for a color glyph by specifying
|
||||||
|
a glyph ID.
|
||||||
|
(FT_Get_Paint_Layers): New method for retrieving the layers of a
|
||||||
|
`PaintColorGlyph`.
|
||||||
|
(FT_Get_ColorLine_Stops): New method for retrieving the stops of a
|
||||||
|
color.
|
||||||
|
(FT_Get_Paint): New method for resolving an `FT_OpaquePaint` into an
|
||||||
|
`FT_COLR_Paint` object.
|
||||||
|
|
||||||
2020-12-16 Dominik Röttsches <drott@chromium.org>
|
2020-12-16 Dominik Röttsches <drott@chromium.org>
|
||||||
|
|
||||||
Add types required for 'COLR' v1 to public API (#59703).
|
Add types required for 'COLR' v1 to public API (#59703).
|
||||||
|
|
|
@ -4879,6 +4879,165 @@ FT_BEGIN_HEADER
|
||||||
} FT_COLR_Paint;
|
} FT_COLR_Paint;
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Get_Color_Glyph_Paint
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* This is the starting point and interface to color gradient
|
||||||
|
* information in a 'COLR' v1 table in OpenType fonts to recursively
|
||||||
|
* retrieve the paint tables for the directed acyclic graph of a colored
|
||||||
|
* glyph, given a glyph ID.
|
||||||
|
*
|
||||||
|
* https://github.com/googlefonts/colr-gradients-spec
|
||||||
|
*
|
||||||
|
* In a 'COLR' v1 font, each color glyph defines a directed acyclic
|
||||||
|
* graph of nested paint tables, such as `PaintGlyph`, `PaintSolid`,
|
||||||
|
* `PaintLinearGradient`, `PaintRadialGradient`, and so on. Using this
|
||||||
|
* function and specifying a glyph ID, one retrieves the root paint
|
||||||
|
* table for this glyph ID.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face ::
|
||||||
|
* A handle to the parent face object.
|
||||||
|
*
|
||||||
|
* base_glyph ::
|
||||||
|
* The glyph index for which to retrieve the root paint table.
|
||||||
|
*
|
||||||
|
* @output:
|
||||||
|
* paint ::
|
||||||
|
* The @FT_OpaquePaint object that references the actual paint table.
|
||||||
|
*
|
||||||
|
* The respective actual @FT_COLR_Paint object is retrieved via
|
||||||
|
* @FT_Get_Paint.
|
||||||
|
*
|
||||||
|
* @return:
|
||||||
|
* Value~1 if everything is OK. If no color glyph is found, or the root
|
||||||
|
* paint could not be retrieved, value~0 gets returned. In case of an
|
||||||
|
* error, value~0 is returned also.
|
||||||
|
*/
|
||||||
|
FT_EXPORT( FT_Bool )
|
||||||
|
FT_Get_Color_Glyph_Paint( FT_Face face,
|
||||||
|
FT_UInt base_glyph,
|
||||||
|
FT_OpaquePaint* paint );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Get_Paint_Layers
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Access the layers of a `PaintColrLayers` table.
|
||||||
|
*
|
||||||
|
* If the root paint of a color glyph, or a nested paint of a 'COLR'
|
||||||
|
* glyph is a `PaintColrLayers` table, this function retrieves the
|
||||||
|
* layers of the `PaintColrLayers` table.
|
||||||
|
*
|
||||||
|
* The @FT_PaintColrLayers object contains an @FT_LayerIterator, which
|
||||||
|
* is used here to iterate over the layers. Each layer is returned as
|
||||||
|
* an @FT_OpaquePaint object, which then can be used with @FT_Get_Paint
|
||||||
|
* to retrieve the actual paint object.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face ::
|
||||||
|
* A handle to the parent face object.
|
||||||
|
*
|
||||||
|
* @inout:
|
||||||
|
* iterator ::
|
||||||
|
* The @FT_LayerIterator from an @FT_PaintColrLayers object, for which
|
||||||
|
* the layers are to be retrieved. The internal state of the iterator
|
||||||
|
* is incremented after one call to this function for retrieving one
|
||||||
|
* layer.
|
||||||
|
*
|
||||||
|
* @output:
|
||||||
|
* paint ::
|
||||||
|
* The @FT_OpaquePaint object that references the actual paint table.
|
||||||
|
* The respective actual @FT_COLR_Paint object is retrieved via
|
||||||
|
* @FT_Get_Paint.
|
||||||
|
*
|
||||||
|
* @return:
|
||||||
|
* Value~1 if everything is OK. Value~0 gets returned when the paint
|
||||||
|
* object can not be retrieved or any other error occurs.
|
||||||
|
*/
|
||||||
|
FT_EXPORT( FT_Bool )
|
||||||
|
FT_Get_Paint_Layers( FT_Face face,
|
||||||
|
FT_LayerIterator* iterator,
|
||||||
|
FT_OpaquePaint* paint );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Get_Colorline_Stops
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* This is an interface to color gradient information in a 'COLR' v1
|
||||||
|
* table in OpenType fonts to iteratively retrieve the gradient and
|
||||||
|
* solid fill information for colored glyph layers for a specified glyph
|
||||||
|
* ID.
|
||||||
|
*
|
||||||
|
* https://github.com/googlefonts/colr-gradients-spec
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face ::
|
||||||
|
* A handle to the parent face object.
|
||||||
|
*
|
||||||
|
* @inout:
|
||||||
|
* iterator ::
|
||||||
|
* The retrieved @FT_ColorStopIterator, configured on an @FT_ColorLine,
|
||||||
|
* which in turn got retrieved via paint information in
|
||||||
|
* @FT_PaintLinearGradient or @FT_PaintRadialGradient.
|
||||||
|
*
|
||||||
|
* @output:
|
||||||
|
* color_stop ::
|
||||||
|
* Color index and alpha value for the retrieved color stop.
|
||||||
|
*
|
||||||
|
* @return:
|
||||||
|
* Value~1 if everything is OK. If there are no more color stops,
|
||||||
|
* value~0 gets returned. In case of an error, value~0 is returned
|
||||||
|
* also.
|
||||||
|
*/
|
||||||
|
FT_EXPORT( FT_Bool )
|
||||||
|
FT_Get_Colorline_Stops( FT_Face face,
|
||||||
|
FT_ColorStop* color_stop,
|
||||||
|
FT_ColorStopIterator* iterator );
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************
|
||||||
|
*
|
||||||
|
* @function:
|
||||||
|
* FT_Get_Paint
|
||||||
|
*
|
||||||
|
* @description:
|
||||||
|
* Access the details of a paint using an @FT_OpaquePaint opaque paint
|
||||||
|
* object, which internally stores the offset to the respective `Paint`
|
||||||
|
* object in the 'COLR' table.
|
||||||
|
*
|
||||||
|
* @input:
|
||||||
|
* face ::
|
||||||
|
* A handle to the parent face object.
|
||||||
|
*
|
||||||
|
* opaque_paint ::
|
||||||
|
* The opaque paint object for which the underlying @FT_COLR_Paint
|
||||||
|
* data is to be retrieved.
|
||||||
|
*
|
||||||
|
* @output:
|
||||||
|
* paint ::
|
||||||
|
* The specific @FT_COLR_Paint object containing information coming
|
||||||
|
* from one of the font's `Paint*` tables.
|
||||||
|
*
|
||||||
|
* @return:
|
||||||
|
* Value~1 if everything is OK. Value~0 if no details can be found for
|
||||||
|
* this paint or any other error occured.
|
||||||
|
*/
|
||||||
|
FT_EXPORT( FT_Bool )
|
||||||
|
FT_Get_Paint( FT_Face face,
|
||||||
|
FT_OpaquePaint opaque_paint,
|
||||||
|
FT_COLR_Paint* paint );
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
*
|
*
|
||||||
* @section:
|
* @section:
|
||||||
|
|
|
@ -5568,4 +5568,40 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_EXPORT_DEF ( FT_Bool )
|
||||||
|
FT_Get_Color_Glyph_Paint( FT_Face face,
|
||||||
|
FT_UInt base_glyph,
|
||||||
|
FT_OpaquePaint* paint )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_EXPORT_DEF ( FT_Bool )
|
||||||
|
FT_Get_Paint_Layers( FT_Face face,
|
||||||
|
FT_LayerIterator* layer_iterator,
|
||||||
|
FT_OpaquePaint* paint )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_EXPORT_DEF( FT_Bool )
|
||||||
|
FT_Get_Paint( FT_Face face,
|
||||||
|
FT_OpaquePaint opaque_paint,
|
||||||
|
FT_COLR_Paint* paint )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FT_EXPORT_DEF ( FT_Bool )
|
||||||
|
FT_Get_Colorline_Stops ( FT_Face face,
|
||||||
|
FT_ColorStop * color_stop,
|
||||||
|
FT_ColorStopIterator *iterator )
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* END */
|
/* END */
|
||||||
|
|
Loading…
Reference in New Issue