1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* fttypes.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* FreeType simple types definitions (specification only). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2002, 2004, 2006-2009, 2012, 2013 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __FTTYPES_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __FTTYPES_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../ft2build.h" 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "config/ftconfig.h" 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ftsystem.h" 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "ftimage.h" 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include <stddef.h> 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* basic_types */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Title> */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Basic Data Types */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Abstract> */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The basic data types defined by the library. */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This section contains the basic data types defined by FreeType~2, */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* ranging from simple scalar types to bitmap descriptors. More */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font-specific structures are defined in a different section. */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Order> */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Byte */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bytes */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Char */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Int */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UInt */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Int16 */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UInt16 */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Int32 */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UInt32 */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Short */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UShort */ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Long */ 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ULong */ 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bool */ 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Offset */ 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_PtrDist */ 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_String */ 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Tag */ 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Error */ 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Fixed */ 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pointer */ 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pos */ 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Vector */ 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_BBox */ 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Matrix */ 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FWord */ 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UFWord */ 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_F2Dot14 */ 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UnitVector */ 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_F26Dot6 */ 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Generic */ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Generic_Finalizer */ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bitmap */ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pixel_Mode */ 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Palette_Mode */ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Glyph_Format */ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_IMAGE_TAG */ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bool */ 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef of unsigned char, used for simple booleans. As usual, */ 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values 1 and~0 represent true and false, respectively. */ 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned char FT_Bool; 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_FWord */ 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A signed 16-bit integer used to store a distance in original font */ 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* units. */ 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed short FT_FWord; /* distance in FUnits */ 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UFWord */ 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* An unsigned 16-bit integer used to store a distance in original */ 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* font units. */ 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned short FT_UFWord; /* unsigned distance */ 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Char */ 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple typedef for the _signed_ char type. */ 138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed char FT_Char; 140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Byte */ 146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple typedef for the _unsigned_ char type. */ 149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned char FT_Byte; 151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Bytes */ 157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for constant memory areas. */ 160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef const FT_Byte* FT_Bytes; 162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Tag */ 168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for 32-bit tags (as used in the SFNT format). */ 171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef FT_UInt32 FT_Tag; 173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_String */ 179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple typedef for the char type, usually used for strings. */ 182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef char FT_String; 184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Short */ 190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for signed short. */ 193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed short FT_Short; 195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UShort */ 201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for unsigned short. */ 204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned short FT_UShort; 206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Int */ 212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for the int type. */ 215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed int FT_Int; 217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UInt */ 223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for the unsigned int type. */ 226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned int FT_UInt; 228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Long */ 234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for signed long. */ 237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed long FT_Long; 239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ULong */ 245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A typedef for unsigned long. */ 248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef unsigned long FT_ULong; 250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_F2Dot14 */ 256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A signed 2.14 fixed-point type used for unit vectors. */ 259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed short FT_F2Dot14; 261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_F26Dot6 */ 267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A signed 26.6 fixed-point type used for vectorial pixel */ 270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* coordinates. */ 271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed long FT_F26Dot6; 273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Fixed */ 279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This type is used to store 16.16 fixed-point values, like scaling */ 282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* values or matrix coefficients. */ 283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef signed long FT_Fixed; 285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Error */ 291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The FreeType error code type. A value of~0 is always interpreted */ 294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as a successful operation. */ 295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef int FT_Error; 297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Pointer */ 303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple typedef for a typeless pointer. */ 306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void* FT_Pointer; 308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Offset */ 314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ 317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* _unsigned_ integer type used to express a file size or position, */ 318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* or a memory block size. */ 319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef size_t FT_Offset; 321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_PtrDist */ 327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ 330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* largest _signed_ integer type used to express the distance */ 331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* between two pointers. */ 332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef ft_ptrdiff_t FT_PtrDist; 334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_UnitVector */ 340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to store a 2D vector unit vector. Uses */ 343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_F2Dot14 types. */ 344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* x :: Horizontal coordinate. */ 347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* y :: Vertical coordinate. */ 349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_UnitVector_ 351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_F2Dot14 x; 353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_F2Dot14 y; 354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_UnitVector; 356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Matrix */ 362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A simple structure used to store a 2x2 matrix. Coefficients are */ 365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in 16.16 fixed-point format. The computation performed is: */ 366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* { */ 368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* x' = x*xx + y*xy */ 369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* y' = x*yx + y*yy */ 370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* } */ 371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* xx :: Matrix coefficient. */ 374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* xy :: Matrix coefficient. */ 376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* yx :: Matrix coefficient. */ 378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* yy :: Matrix coefficient. */ 380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Matrix_ 382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed xx, xy; 384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Fixed yx, yy; 385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Matrix; 387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Data */ 393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Read-only binary data represented as a pointer and a length. */ 396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* pointer :: The data. */ 399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* length :: The length of the data in bytes. */ 401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Data_ 403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov const FT_Byte* pointer; 405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Int length; 406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Data; 408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <FuncType> */ 413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Generic_Finalizer */ 414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Describe a function used to destroy the `client' data of any */ 417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType object. See the description of the @FT_Generic type for */ 418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* details of usage. */ 419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Input> */ 421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The address of the FreeType object which is under finalization. */ 422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Its client data is accessed through its `generic' field. */ 423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef void (*FT_Generic_Finalizer)(void* object); 425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Generic */ 431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Client applications often need to associate their own data to a */ 434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* variety of FreeType core objects. For example, a text layout API */ 435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* might want to associate a glyph cache to a given size object. */ 436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Some FreeType object contains a `generic' field, of type */ 438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_Generic, which usage is left to client applications and font */ 439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* servers. */ 440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* It can be used to store a pointer to client-specific data, as well */ 442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* as the address of a `finalizer' function, which will be called by */ 443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FreeType when the object is destroyed (for example, the previous */ 444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* client example would put the address of the glyph cache destructor */ 445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in the `finalizer' field). */ 446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* data :: A typeless pointer to any client-specified data. This */ 449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* field is completely ignored by the FreeType library. */ 450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* finalizer :: A pointer to a `generic finalizer' function, which */ 452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* will be called when the object is destroyed. If this */ 453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* field is set to NULL, no code will be called. */ 454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_Generic_ 456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* data; 458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Generic_Finalizer finalizer; 459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_Generic; 461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Macro> */ 466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_MAKE_TAG */ 467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* This macro converts four-letter tags which are used to label */ 470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* TrueType tables into an unsigned long to be used within FreeType. */ 471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Note> */ 473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* The produced values *must* be 32-bit integers. Don't redefine */ 474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* this macro. */ 475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ 477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (FT_Tag) \ 478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( ( (FT_ULong)_x1 << 24 ) | \ 479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( (FT_ULong)_x2 << 16 ) | \ 480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( (FT_ULong)_x3 << 8 ) | \ 481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (FT_ULong)_x4 ) 482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* L I S T M A N A G E M E N T */ 488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Section> */ 496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* list_processing */ 497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ListNode */ 505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* Many elements and objects in FreeType are listed through an */ 508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* @FT_List record (see @FT_ListRec). As its name suggests, an */ 509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ListNode is a handle to a single list element. */ 510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_ListNodeRec_* FT_ListNode; 512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Type> */ 517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_List */ 518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A handle to a list record (see @FT_ListRec). */ 521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_ListRec_* FT_List; 523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ListNodeRec */ 529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to hold a single list element. */ 532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* prev :: The previous element in the list. NULL if first. */ 535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* next :: The next element in the list. NULL if last. */ 537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* data :: A typeless pointer to the listed object. */ 539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_ListNodeRec_ 541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ListNode prev; 543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ListNode next; 544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov void* data; 545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_ListNodeRec; 547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* FT_ListRec */ 553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A structure used to hold a simple doubly-linked list. These are */ 556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* used in many parts of FreeType. */ 557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* head :: The head (first element) of doubly-linked list. */ 560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* tail :: The tail (last element) of doubly-linked list. */ 562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct FT_ListRec_ 564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ListNode head; 566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ListNode tail; 567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } FT_ListRec; 569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_IS_EMPTY( list ) ( (list).head == 0 ) 574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_BOOL( x ) ( (FT_Bool)( x ) ) 575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* concatenate C tokens */ 577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_XCAT( x, y ) x ## y 578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) 579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* see `ftmoderr.h' for descriptions of the following macros */ 581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) 583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) 585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) 586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_EQ( x, e ) \ 588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) 589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FT_ERR_NEQ( x, e ) \ 590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) 591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 593ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __FTTYPES_H__ */ 596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 599