diff options
author | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2021-08-29 06:19:44 +0000 |
---|---|---|
committer | Akira Kakuto <kakuto@fuk.kindai.ac.jp> | 2021-08-29 06:19:44 +0000 |
commit | 0de5be92a3a0fe27e8521fc4de67e19b1057842e (patch) | |
tree | e93a390fe965486cca19498840cb8d7904252fec /Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h | |
parent | 27ce96eea3f1190bd744448cfa149e8d767af95a (diff) |
revert freetype to 2.10.4
git-svn-id: svn://tug.org/texlive/trunk@60360 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h')
-rw-r--r-- | Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h | 1298 |
1 files changed, 1 insertions, 1297 deletions
diff --git a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h index 59e6f15e360..ecc6485e5a0 100644 --- a/Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h +++ b/Build/source/libs/freetype2/freetype-src/include/freetype/ftcolor.h @@ -4,7 +4,7 @@ * * FreeType's glyph color management (specification). * - * Copyright (C) 2018-2021 by + * Copyright (C) 2018-2020 by * David Turner, Robert Wilhelm, and Werner Lemberg. * * This file is part of the FreeType project, and may only be used, @@ -302,1302 +302,6 @@ FT_BEGIN_HEADER FT_Palette_Set_Foreground_Color( FT_Face face, FT_Color foreground_color ); - - /************************************************************************** - * - * @section: - * layer_management - * - * @title: - * Glyph Layer Management - * - * @abstract: - * Retrieving and manipulating OpenType's 'COLR' table data. - * - * @description: - * The functions described here allow access of colored glyph layer data - * in OpenType's 'COLR' tables. - */ - - - /************************************************************************** - * - * @struct: - * FT_LayerIterator - * - * @description: - * This iterator object is needed for @FT_Get_Color_Glyph_Layer. - * - * @fields: - * num_layers :: - * The number of glyph layers for the requested glyph index. Will be - * set by @FT_Get_Color_Glyph_Layer. - * - * layer :: - * The current layer. Will be set by @FT_Get_Color_Glyph_Layer. - * - * p :: - * An opaque pointer into 'COLR' table data. The caller must set this - * to `NULL` before the first call of @FT_Get_Color_Glyph_Layer. - */ - typedef struct FT_LayerIterator_ - { - FT_UInt num_layers; - FT_UInt layer; - FT_Byte* p; - - } FT_LayerIterator; - - - /************************************************************************** - * - * @function: - * FT_Get_Color_Glyph_Layer - * - * @description: - * This is an interface to the 'COLR' table in OpenType fonts to - * iteratively retrieve the colored glyph layers associated with the - * current glyph slot. - * - * https://docs.microsoft.com/en-us/typography/opentype/spec/colr - * - * The glyph layer data for a given glyph index, if present, provides an - * alternative, multi-color glyph representation: Instead of rendering - * the outline or bitmap with the given glyph index, glyphs with the - * indices and colors returned by this function are rendered layer by - * layer. - * - * The returned elements are ordered in the z~direction from bottom to - * top; the 'n'th element should be rendered with the associated palette - * color and blended on top of the already rendered layers (elements 0, - * 1, ..., n-1). - * - * @input: - * face :: - * A handle to the parent face object. - * - * base_glyph :: - * The glyph index the colored glyph layers are associated with. - * - * @inout: - * iterator :: - * An @FT_LayerIterator object. For the first call you should set - * `iterator->p` to `NULL`. For all following calls, simply use the - * same object again. - * - * @output: - * aglyph_index :: - * The glyph index of the current layer. - * - * acolor_index :: - * The color index into the font face's color palette of the current - * layer. The value 0xFFFF is special; it doesn't reference a palette - * entry but indicates that the text foreground color should be used - * instead (to be set up by the application outside of FreeType). - * - * The color palette can be retrieved with @FT_Palette_Select. - * - * @return: - * Value~1 if everything is OK. If there are no more layers (or if there - * are no layers at all), value~0 gets returned. In case of an error, - * value~0 is returned also. - * - * @note: - * This function is necessary if you want to handle glyph layers by - * yourself. In particular, functions that operate with @FT_GlyphRec - * objects (like @FT_Get_Glyph or @FT_Glyph_To_Bitmap) don't have access - * to this information. - * - * Note that @FT_Render_Glyph is able to handle colored glyph layers - * automatically if the @FT_LOAD_COLOR flag is passed to a previous call - * to @FT_Load_Glyph. [This is an experimental feature.] - * - * @example: - * ``` - * FT_Color* palette; - * FT_LayerIterator iterator; - * - * FT_Bool have_layers; - * FT_UInt layer_glyph_index; - * FT_UInt layer_color_index; - * - * - * error = FT_Palette_Select( face, palette_index, &palette ); - * if ( error ) - * palette = NULL; - * - * iterator.p = NULL; - * have_layers = FT_Get_Color_Glyph_Layer( face, - * glyph_index, - * &layer_glyph_index, - * &layer_color_index, - * &iterator ); - * - * if ( palette && have_layers ) - * { - * do - * { - * FT_Color layer_color; - * - * - * if ( layer_color_index == 0xFFFF ) - * layer_color = text_foreground_color; - * else - * layer_color = palette[layer_color_index]; - * - * // Load and render glyph `layer_glyph_index', then - * // blend resulting pixmap (using color `layer_color') - * // with previously created pixmaps. - * - * } while ( FT_Get_Color_Glyph_Layer( face, - * glyph_index, - * &layer_glyph_index, - * &layer_color_index, - * &iterator ) ); - * } - * ``` - */ - FT_EXPORT( FT_Bool ) - FT_Get_Color_Glyph_Layer( FT_Face face, - FT_UInt base_glyph, - FT_UInt *aglyph_index, - FT_UInt *acolor_index, - FT_LayerIterator* iterator ); - - - /************************************************************************** - * - * @enum: - * FT_PaintFormat - * - * @description: - * Enumeration describing the different paint format types of the v1 - * extensions to the 'COLR' table, see - * 'https://github.com/googlefonts/colr-gradients-spec'. - * - * The enumeration values losely correspond with the format numbers of - * the specification: FreeType always returns a fully specified 'Paint' - * structure for the 'Transform', 'Translate', 'Scale', 'Rotate', and - * 'Skew' table types even though the specification has different formats - * depending on whether or not a center is specified, whether the scale - * is uniform in x and y~direction or not, etc. Also, only non-variable - * format identifiers are listed in this enumeration; as soon as support - * for variable 'COLR' v1 fonts is implemented, interpolation is - * performed dependent on axis coordinates, which are configured on the - * @FT_Face through @FT_Set_Var_Design_Coordinates. This implies that - * always static, readily interpolated values are returned in the 'Paint' - * structures. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef enum FT_PaintFormat_ - { - FT_COLR_PAINTFORMAT_COLR_LAYERS = 1, - FT_COLR_PAINTFORMAT_SOLID = 2, - FT_COLR_PAINTFORMAT_LINEAR_GRADIENT = 4, - FT_COLR_PAINTFORMAT_RADIAL_GRADIENT = 6, - FT_COLR_PAINTFORMAT_SWEEP_GRADIENT = 8, - FT_COLR_PAINTFORMAT_GLYPH = 10, - FT_COLR_PAINTFORMAT_COLR_GLYPH = 11, - FT_COLR_PAINTFORMAT_TRANSFORM = 12, - FT_COLR_PAINTFORMAT_TRANSLATE = 14, - FT_COLR_PAINTFORMAT_SCALE = 16, - FT_COLR_PAINTFORMAT_ROTATE = 24, - FT_COLR_PAINTFORMAT_SKEW = 28, - FT_COLR_PAINTFORMAT_COMPOSITE = 32, - FT_COLR_PAINT_FORMAT_MAX = 33, - FT_COLR_PAINTFORMAT_UNSUPPORTED = 255 - - } FT_PaintFormat; - - - /************************************************************************** - * - * @struct: - * FT_ColorStopIterator - * - * @description: - * This iterator object is needed for @FT_Get_Colorline_Stops. It keeps - * state while iterating over the stops of an @FT_ColorLine, - * representing the `ColorLine` struct of the v1 extensions to 'COLR', - * see 'https://github.com/googlefonts/colr-gradients-spec'. - * - * @fields: - * num_color_stops :: - * The number of color stops for the requested glyph index. Set by - * @FT_Get_Colorline_Stops. - * - * current_color_stop :: - * The current color stop. Set by @FT_Get_Colorline_Stops. - * - * p :: - * An opaque pointer into 'COLR' table data. The caller must set this - * to `NULL` before the first call of @FT_Get_Colorline_Stops. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_ColorStopIterator_ - { - FT_UInt num_color_stops; - FT_UInt current_color_stop; - - FT_Byte* p; - - } FT_ColorStopIterator; - - - /************************************************************************** - * - * @struct: - * FT_ColorIndex - * - * @description: - * A structure representing a `ColorIndex` value of the 'COLR' v1 - * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. - * - * @fields: - * palette_index :: - * The palette index into a 'CPAL' palette. - * - * alpha :: - * Alpha transparency value multiplied with the value from 'CPAL'. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_ColorIndex_ - { - FT_UInt16 palette_index; - FT_F2Dot14 alpha; - - } FT_ColorIndex; - - - /************************************************************************** - * - * @struct: - * FT_ColorStop - * - * @description: - * A structure representing a `ColorStop` value of the 'COLR' v1 - * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. - * - * @fields: - * stop_offset :: - * The stop offset between 0 and 1 along the gradient. - * - * color :: - * The color information for this stop, see @FT_ColorIndex. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_ColorStop_ - { - FT_F2Dot14 stop_offset; - FT_ColorIndex color; - - } FT_ColorStop; - - - /************************************************************************** - * - * @enum: - * FT_PaintExtend - * - * @description: - * An enumeration representing the 'Extend' mode of the 'COLR' v1 - * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. - * It describes how the gradient fill continues at the other boundaries. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef enum FT_PaintExtend_ - { - FT_COLR_PAINT_EXTEND_PAD = 0, - FT_COLR_PAINT_EXTEND_REPEAT = 1, - FT_COLR_PAINT_EXTEND_REFLECT = 2 - - } FT_PaintExtend; - - - /************************************************************************** - * - * @struct: - * FT_ColorLine - * - * @description: - * A structure representing a `ColorLine` value of the 'COLR' v1 - * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. - * It describes a list of color stops along the defined gradient. - * - * @fields: - * extend :: - * The extend mode at the outer boundaries, see @FT_PaintExtend. - * - * color_stop_iterator :: - * The @FT_ColorStopIterator used to enumerate and retrieve the - * actual @FT_ColorStop's. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_ColorLine_ - { - FT_PaintExtend extend; - FT_ColorStopIterator color_stop_iterator; - - } FT_ColorLine; - - - /************************************************************************** - * - * @struct: - * FT_Affine23 - * - * @description: - * A structure used to store a 2x3 matrix. Coefficients are in - * 16.16 fixed-point format. The computation performed is - * - * ``` - * x' = x*xx + y*xy + dx - * y' = x*yx + y*yy + dy - * ``` - * - * @fields: - * xx :: - * Matrix coefficient. - * - * xy :: - * Matrix coefficient. - * - * dx :: - * x translation. - * - * yx :: - * Matrix coefficient. - * - * yy :: - * Matrix coefficient. - * - * dy :: - * y translation. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_Affine_23_ - { - FT_Fixed xx, xy, dx; - FT_Fixed yx, yy, dy; - - } FT_Affine23; - - - /************************************************************************** - * - * @enum: - * FT_Composite_Mode - * - * @description: - * An enumeration listing the 'COLR' v1 composite modes used in - * @FT_PaintComposite. For more details on each paint mode, see - * 'https://www.w3.org/TR/compositing-1/#porterduffcompositingoperators'. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef enum FT_Composite_Mode_ - { - FT_COLR_COMPOSITE_CLEAR = 0, - FT_COLR_COMPOSITE_SRC = 1, - FT_COLR_COMPOSITE_DEST = 2, - FT_COLR_COMPOSITE_SRC_OVER = 3, - FT_COLR_COMPOSITE_DEST_OVER = 4, - FT_COLR_COMPOSITE_SRC_IN = 5, - FT_COLR_COMPOSITE_DEST_IN = 6, - FT_COLR_COMPOSITE_SRC_OUT = 7, - FT_COLR_COMPOSITE_DEST_OUT = 8, - FT_COLR_COMPOSITE_SRC_ATOP = 9, - FT_COLR_COMPOSITE_DEST_ATOP = 10, - FT_COLR_COMPOSITE_XOR = 11, - FT_COLR_COMPOSITE_SCREEN = 12, - FT_COLR_COMPOSITE_OVERLAY = 13, - FT_COLR_COMPOSITE_DARKEN = 14, - FT_COLR_COMPOSITE_LIGHTEN = 15, - FT_COLR_COMPOSITE_COLOR_DODGE = 16, - FT_COLR_COMPOSITE_COLOR_BURN = 17, - FT_COLR_COMPOSITE_HARD_LIGHT = 18, - FT_COLR_COMPOSITE_SOFT_LIGHT = 19, - FT_COLR_COMPOSITE_DIFFERENCE = 20, - FT_COLR_COMPOSITE_EXCLUSION = 21, - FT_COLR_COMPOSITE_MULTIPLY = 22, - FT_COLR_COMPOSITE_HSL_HUE = 23, - FT_COLR_COMPOSITE_HSL_SATURATION = 24, - FT_COLR_COMPOSITE_HSL_COLOR = 25, - FT_COLR_COMPOSITE_HSL_LUMINOSITY = 26, - FT_COLR_COMPOSITE_MAX = 27 - - } FT_Composite_Mode; - - - /************************************************************************** - * - * @struct: - * FT_OpaquePaint - * - * @description: - * A structure representing an offset to a `Paint` value stored in any - * of the paint tables of a 'COLR' v1 font. Compare Offset<24> there. - * When 'COLR' v1 paint tables represented by FreeType objects such as - * @FT_PaintColrLayers, @FT_PaintComposite, or @FT_PaintTransform - * reference downstream nested paint tables, we do not immediately - * retrieve them but encapsulate their location in this type. Use - * @FT_Get_Paint to retrieve the actual @FT_COLR_Paint object that - * describes the details of the respective paint table. - * - * @fields: - * p :: - * An internal offset to a Paint table, needs to be set to NULL before - * passing this struct as an argument to @FT_Get_Paint. - * - * insert_root_transform :: - * An internal boolean to track whether an initial root transform is - * to be provided. Do not set this value. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_Opaque_Paint_ - { - FT_Byte* p; - FT_Bool insert_root_transform; - } FT_OpaquePaint; - - - /************************************************************************** - * - * @struct: - * FT_PaintColrLayers - * - * @description: - * A structure representing a `PaintColrLayers` table of a 'COLR' v1 - * font. This table describes a set of layers that are to be composited - * with composite mode `FT_COLR_COMPOSITE_SRC_OVER`. The return value - * of this function is an @FT_LayerIterator initialized so that it can - * be used with @FT_Get_Paint_Layers to retrieve the @FT_OpaquePaint - * objects as references to each layer. - * - * @fields: - * layer_iterator :: - * The layer iterator that describes the layers of this paint. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintColrLayers_ - { - FT_LayerIterator layer_iterator; - - } FT_PaintColrLayers; - - - /************************************************************************** - * - * @struct: - * FT_PaintSolid - * - * @description: - * A structure representing a `PaintSolid` value of the 'COLR' v1 - * extensions, see 'https://github.com/googlefonts/colr-gradients-spec'. - * Using a `PaintSolid` value means that the glyph layer filled with - * this paint is solid-colored and does not contain a gradient. - * - * @fields: - * color :: - * The color information for this solid paint, see @FT_ColorIndex. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintSolid_ - { - FT_ColorIndex color; - - } FT_PaintSolid; - - - /************************************************************************** - * - * @struct: - * FT_PaintLinearGradient - * - * @description: - * A structure representing a `PaintLinearGradient` value of the 'COLR' - * v1 extensions, see - * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph - * layer filled with this paint is drawn filled with a linear gradient. - * - * @fields: - * colorline :: - * The @FT_ColorLine information for this paint, i.e., the list of - * color stops along the gradient. - * - * p0 :: - * The starting point of the gradient definition (in font units). - * - * p1 :: - * The end point of the gradient definition (in font units). - * - * p2 :: - * Optional point~p2 to rotate the gradient (in font units). - * Otherwise equal to~p0. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintLinearGradient_ - { - FT_ColorLine colorline; - - /* TODO: Potentially expose those as x0, y0 etc. */ - FT_Vector p0; - FT_Vector p1; - FT_Vector p2; - - } FT_PaintLinearGradient; - - - /************************************************************************** - * - * @struct: - * FT_PaintRadialGradient - * - * @description: - * A structure representing a `PaintRadialGradient` value of the 'COLR' - * v1 extensions, see - * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph - * layer filled with this paint is drawn filled filled with a radial - * gradient. - * - * @fields: - * colorline :: - * The @FT_ColorLine information for this paint, i.e., the list of - * color stops along the gradient. - * - * c0 :: - * The center of the starting point of the radial gradient (in font - * units). - * - * r0 :: - * The radius of the starting circle of the radial gradient (in font - * units). - * - * c1 :: - * The center of the end point of the radial gradient (in font units). - * - * r1 :: - * The radius of the end circle of the radial gradient (in font - * units). - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintRadialGradient_ - { - FT_ColorLine colorline; - - FT_Vector c0; - FT_UShort r0; - FT_Vector c1; - FT_UShort r1; - - } FT_PaintRadialGradient; - - - /************************************************************************** - * - * @struct: - * FT_PaintSweepGradient - * - * @description: - * A structure representing a `PaintSweepGradient` value of the 'COLR' - * v1 extensions, see - * 'https://github.com/googlefonts/colr-gradients-spec'. The glyph - * layer filled with this paint is drawn filled with a sweep gradient - * from `start_angle` to `end_angle`. - * - * @fields: - * colorline :: - * The @FT_ColorLine information for this paint, i.e., the list of - * color stops along the gradient. - * - * center :: - * The center of the sweep gradient (in font units). - * - * start_angle :: - * The start angle of the sweep gradient, in 16.16 fixed point format - * specifying degrees. Values are given counter-clockwise, starting - * from the (positive) y~axis. - * - * end_angle :: - * The end angle of the sweep gradient, in 16.16 fixed point format - * specifying degrees. Values are given counter-clockwise, starting - * from the (positive) y~axis. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintSweepGradient_ - { - FT_ColorLine colorline; - - FT_Vector center; - FT_Fixed start_angle; - FT_Fixed end_angle; - - } FT_PaintSweepGradient; - - - /************************************************************************** - * - * @struct: - * FT_PaintGlyph - * - * @description: - * A structure representing a 'COLR' v1 `PaintGlyph` paint table. - * - * @fields: - * paint :: - * An opaque paint object pointing to a `Paint` table that serves as - * the fill for the glyph ID. - * - * glyphID :: - * The glyph ID from the 'glyf' table, which serves as the contour - * information that is filled with paint. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintGlyph_ - { - FT_OpaquePaint paint; - FT_UInt glyphID; - - } FT_PaintGlyph; - - - /************************************************************************** - * - * @struct: - * FT_PaintColrGlyph - * - * @description: - * A structure representing a 'COLR' v1 `PaintColorGlyph` paint table. - * - * @fields: - * glyphID :: - * The glyph ID from the `BaseGlyphV1List` table that is drawn for - * this paint. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintColrGlyph_ - { - FT_UInt glyphID; - - } FT_PaintColrGlyph; - - - /************************************************************************** - * - * @struct: - * FT_PaintTransform - * - * @description: - * A structure representing a 'COLR' v1 `PaintTransform` paint table. - * - * @fields: - * paint :: - * An opaque paint that is subject to being transformed. - * - * affine :: - * A 2x3 transformation matrix in @FT_Affine23 format. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintTransform_ - { - FT_OpaquePaint paint; - FT_Affine23 affine; - - } FT_PaintTransform; - - - /************************************************************************** - * - * @struct: - * FT_PaintTranslate - * - * @description: - * A structure representing a 'COLR' v1 `PaintTranslate` paint table. - * Used for translating downstream paints by a given x and y~delta. - * - * @fields: - * paint :: - * An @FT_OpaquePaint object referencing the paint that is to be - * rotated. - * - * dx :: - * Translation in x~direction (in font units). - * - * dy :: - * Translation in y~direction (in font units). - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintTranslate_ - { - FT_OpaquePaint paint; - - FT_Fixed dx; - FT_Fixed dy; - - } FT_PaintTranslate; - - - /************************************************************************** - * - * @struct: - * FT_PaintScale - * - * @description: - * A structure representing all of the 'COLR' v1 'PaintScale*' paint - * tables. Used for scaling downstream paints by a given x and y~scale, - * with a given center. This structure is used for all 'PaintScale*' - * types that are part of specification; fields of this structure are - * filled accordingly. If there is a center, the center values are set, - * otherwise they are set to the zero coordinate. If the source font - * file has 'PaintScaleUniform*' set, the scale values are set - * accordingly to the same value. - * - * @fields: - * paint :: - * An @FT_OpaquePaint object referencing the paint that is to be - * scaled. - * - * scale_x :: - * Scale factor in x~direction. - * - * scale_y :: - * Scale factor in y~direction. - * - * center_x :: - * x~coordinate of center point to scale from. - * - * center_y :: - * y~coordinate of center point to scale from. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward-compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintScale_ - { - FT_OpaquePaint paint; - - FT_Fixed scale_x; - FT_Fixed scale_y; - - FT_Fixed center_x; - FT_Fixed center_y; - - } FT_PaintScale; - - - /************************************************************************** - * - * @struct: - * FT_PaintRotate - * - * @description: - * A structure representing a 'COLR' v1 `PaintRotate` paint table. Used - * for rotating downstream paints with a given center and angle. - * - * @fields: - * paint :: - * An @FT_OpaquePaint object referencing the paint that is to be - * rotated. - * - * angle :: - * The rotation angle that is to be applied. - * - * center_x :: - * The x~coordinate of the pivot point of the rotation (in font - * units). - * - * center_y :: - * The y~coordinate of the pivot point of the rotation (in font - * units). - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - - typedef struct FT_PaintRotate_ - { - FT_OpaquePaint paint; - - FT_Fixed angle; - - FT_Fixed center_x; - FT_Fixed center_y; - - } FT_PaintRotate; - - - /************************************************************************** - * - * @struct: - * FT_PaintSkew - * - * @description: - * A structure representing a 'COLR' v1 `PaintSkew` paint table. Used - * for skewing or shearing downstream paints by a given center and - * angle. - * - * @fields: - * paint :: - * An @FT_OpaquePaint object referencing the paint that is to be - * skewed. - * - * x_skew_angle :: - * The skewing angle in x~direction. - * - * y_skew_angle :: - * The skewing angle in y~direction. - * - * center_x :: - * The x~coordinate of the pivot point of the skew (in font units). - * - * center_y :: - * The y~coordinate of the pivot point of the skew (in font units). - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintSkew_ - { - FT_OpaquePaint paint; - - FT_Fixed x_skew_angle; - FT_Fixed y_skew_angle; - - FT_Fixed center_x; - FT_Fixed center_y; - - } FT_PaintSkew; - - - /************************************************************************** - * - * @struct: - * FT_PaintComposite - * - * @description: - * A structure representing a 'COLR'v1 `PaintComposite` paint table. - * Used for compositing two paints in a 'COLR' v1 directed acycling - * graph. - * - * @fields: - * source_paint :: - * An @FT_OpaquePaint object referencing the source that is to be - * composited. - * - * composite_mode :: - * An @FT_Composite_Mode enum value determining the composition - * operation. - * - * backdrop_paint :: - * An @FT_OpaquePaint object referencing the backdrop paint that - * `source_paint` is composited onto. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_PaintComposite_ - { - FT_OpaquePaint source_paint; - FT_Composite_Mode composite_mode; - FT_OpaquePaint backdrop_paint; - - } FT_PaintComposite; - - - /************************************************************************** - * - * @union: - * FT_COLR_Paint - * - * @description: - * A union object representing format and details of a paint table of a - * 'COLR' v1 font, see - * 'https://github.com/googlefonts/colr-gradients-spec'. Use - * @FT_Get_Paint to retrieve a @FT_COLR_Paint for an @FT_OpaquePaint - * object. - * - * @fields: - * format :: - * The gradient format for this Paint structure. - * - * u :: - * Union of all paint table types: - * - * * @FT_PaintColrLayers - * * @FT_PaintGlyph - * * @FT_PaintSolid - * * @FT_PaintLinearGradient - * * @FT_PaintRadialGradient - * * @FT_PaintSweepGradient - * * @FT_PaintTransform - * * @FT_PaintTranslate - * * @FT_PaintRotate - * * @FT_PaintSkew - * * @FT_PaintComposite - * * @FT_PaintColrGlyph - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef struct FT_COLR_Paint_ - { - FT_PaintFormat format; - - union - { - FT_PaintColrLayers colr_layers; - FT_PaintGlyph glyph; - FT_PaintSolid solid; - FT_PaintLinearGradient linear_gradient; - FT_PaintRadialGradient radial_gradient; - FT_PaintSweepGradient sweep_gradient; - FT_PaintTransform transform; - FT_PaintTranslate translate; - FT_PaintScale scale; - FT_PaintRotate rotate; - FT_PaintSkew skew; - FT_PaintComposite composite; - FT_PaintColrGlyph colr_glyph; - - } u; - - } FT_COLR_Paint; - - - /************************************************************************** - * - * @enum: - * FT_Color_Root_Transform - * - * @description: - * An enumeration to specify whether @FT_Get_Color_Glyph_Paint is to - * return a root transform to configure the client's graphics context - * matrix. - * - * @values: - * FT_COLOR_INCLUDE_ROOT_TRANSFORM :: - * Do include the root transform as the initial @FT_COLR_Paint object. - * - * FT_COLOR_NO_ROOT_TRANSFORM :: - * Do not output an initial root transform. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - typedef enum FT_Color_Root_Transform_ - { - FT_COLOR_INCLUDE_ROOT_TRANSFORM, - FT_COLOR_NO_ROOT_TRANSFORM, - - FT_COLOR_ROOT_TRANSFORM_MAX - - } FT_Color_Root_Transform; - - - /************************************************************************** - * - * @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. - * - * This function allows control whether an initial root transform is - * returned to configure scaling, transform, and translation correctly - * on the client's graphics context. The initial root transform is - * computed and returned according to the values configured for @FT_Size - * and @FT_Set_Transform on the @FT_Face object, see below for details - * of the `root_transform` parameter. This has implications for a - * client 'COLR' v1 implementation: When this function returns an - * initially computed root transform, at the time of executing the - * @FT_PaintGlyph operation, the contours should be retrieved using - * @FT_Load_Glyph at unscaled, untransformed size. This is because the - * root transform applied to the graphics context will take care of - * correct scaling. - * - * Alternatively, to allow hinting of contours, at the time of executing - * @FT_Load_Glyph, the current graphics context transformation matrix - * can be decomposed into a scaling matrix and a remainder, and - * @FT_Load_Glyph can be used to retrieve the contours at scaled size. - * Care must then be taken to blit or clip to the graphics context with - * taking this remainder transformation into account. - * - * @input: - * face :: - * A handle to the parent face object. - * - * base_glyph :: - * The glyph index for which to retrieve the root paint table. - * - * root_transform :: - * Specifies whether an initially computed root is returned by the - * @FT_PaintTransform operation to account for the activated size - * (see @FT_Activate_Size) and the configured transform and translate - * (see @FT_Set_Transform). - * - * This root transform is returned before nodes of the glyph graph of - * the font are returned. Subsequent @FT_COLR_Paint structures - * contain unscaled and untransformed values. The inserted root - * transform enables the client application to apply an initial - * transform to its graphics context. When executing subsequent - * FT_COLR_Paint operations, values from @FT_COLR_Paint operations - * will ultimately be correctly scaled because of the root transform - * applied to the graphics context. Use - * @FT_COLOR_INCLUDE_ROOT_TRANSFORM to include the root transform, use - * @FT_COLOR_NO_ROOT_TRANSFORM to not include it. The latter may be - * useful when traversing the 'COLR' v1 glyph graph and reaching a - * @FT_PaintColrGlyph. When recursing into @FT_PaintColrGlyph and - * painting that inline, no additional root transform is needed as it - * has already been applied to the graphics context at the beginning - * of drawing this glyph. - * - * @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. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - FT_EXPORT( FT_Bool ) - FT_Get_Color_Glyph_Paint( FT_Face face, - FT_UInt base_glyph, - FT_Color_Root_Transform root_transform, - 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. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - 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. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - 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. - * - * @since: - * 2.11 -- **currently experimental only!** There might be changes - * without retaining backward compatibility of both the API and ABI. - * - */ - FT_EXPORT( FT_Bool ) - FT_Get_Paint( FT_Face face, - FT_OpaquePaint opaque_paint, - FT_COLR_Paint* paint ); - /* */ |