/**************************************************************************** * * ftmmtypes.h * * OpenType Variations type definitions for internal use * with the multi-masters service (specification). * * Copyright (C) 2022-2023 by * David Turner, Robert Wilhelm, Werner Lemberg, George Williams, and * Dominik Röttsches. * * This file is part of the FreeType project, and may only be used, * modified, and distributed under the terms of the FreeType project * license, LICENSE.TXT. By continuing to use, modify, or distribute * this file you indicate that you have read the license and * understand and accept it fully. * */ #ifndef FTMMTYPES_H_ #define FTMMTYPES_H_ FT_BEGIN_HEADER typedef FT_Int32 FT_ItemVarDelta; typedef struct GX_ItemVarDataRec_ { FT_UInt itemCount; /* Number of delta sets per item. */ FT_UInt regionIdxCount; /* Number of region indices. */ FT_UInt* regionIndices; /* Array of `regionCount` indices; */ /* these index `varRegionList`. */ FT_Byte* deltaSet; /* Array of `itemCount` deltas; */ /* use `innerIndex` for this array. */ FT_UShort wordDeltaCount; /* Number of the first 32-bit ints */ /* or 16-bit ints of `deltaSet` */ /* depending on `longWords`. */ FT_Bool longWords; /* If true, `deltaSet` is a 32-bit */ /* array followed by a 16-bit */ /* array, otherwise a 16-bit array */ /* followed by an 8-bit array. */ } GX_ItemVarDataRec, *GX_ItemVarData; /* contribution of one axis to a region */ typedef struct GX_AxisCoordsRec_ { FT_Fixed startCoord; FT_Fixed peakCoord; /* zero means no effect (factor = 1) */ FT_Fixed endCoord; } GX_AxisCoordsRec, *GX_AxisCoords; typedef struct GX_VarRegionRec_ { GX_AxisCoords axisList; /* array of axisCount records */ } GX_VarRegionRec, *GX_VarRegion; /* item variation store */ typedef struct GX_ItemVarStoreRec_ { FT_UInt dataCount; GX_ItemVarData varData; /* array of dataCount records; */ /* use `outerIndex' for this array */ FT_UShort axisCount; FT_UInt regionCount; /* total number of regions defined */ GX_VarRegion varRegionList; } GX_ItemVarStoreRec, *GX_ItemVarStore; typedef struct GX_DeltaSetIdxMapRec_ { FT_ULong mapCount; FT_UInt* outerIndex; /* indices to item var data */ FT_UInt* innerIndex; /* indices to delta set */ } GX_DeltaSetIdxMapRec, *GX_DeltaSetIdxMap; FT_END_HEADER #endif /* FTMMTYPES_H_ */ /* END */