fttypes.h revision 52339dc2742dfd2a1e91aeb1067506e4a7311d35
1328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/***************************************************************************/ 2328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 3328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* fttypes.h */ 4328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 5328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* FreeType simple types definitions (specification only). */ 6328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 752339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg/* Copyright 1996-2002, 2004, 2006-2009, 2012, 2013 by */ 8328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 10328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* This file is part of the FreeType project, and may only be used, */ 11328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* modified, and distributed under the terms of the FreeType project */ 12328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* this file you indicate that you have read the license and */ 14328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* understand and accept it fully. */ 15328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 16328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/***************************************************************************/ 17328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 18328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 19328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#ifndef __FTTYPES_H__ 20328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define __FTTYPES_H__ 21328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 22328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 23328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#include <ft2build.h> 24328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#include FT_CONFIG_CONFIG_H 25328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#include FT_SYSTEM_H 26328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#include FT_IMAGE_H 27328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 28328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#include <stddef.h> 29328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 30328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 31328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner LembergFT_BEGIN_HEADER 32328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 33328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 34328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 35328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 36328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Section> */ 37328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* basic_types */ 38328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 39328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Title> */ 40328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Basic Data Types */ 41328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 42328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Abstract> */ 43328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* The basic data types defined by the library. */ 44328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 45328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 468a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* This section contains the basic data types defined by FreeType~2, */ 47328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* ranging from simple scalar types to bitmap descriptors. More */ 48328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* font-specific structures are defined in a different section. */ 49328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 50328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Order> */ 51328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Byte */ 52510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Bytes */ 53328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Char */ 54328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Int */ 55328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UInt */ 56e899991b5e729b48ed219e15727c6fbb39c7e18fWerner Lemberg /* FT_Int16 */ 57e899991b5e729b48ed219e15727c6fbb39c7e18fWerner Lemberg /* FT_UInt16 */ 58e899991b5e729b48ed219e15727c6fbb39c7e18fWerner Lemberg /* FT_Int32 */ 59e899991b5e729b48ed219e15727c6fbb39c7e18fWerner Lemberg /* FT_UInt32 */ 60328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Short */ 61328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UShort */ 62328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Long */ 63328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ULong */ 64328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bool */ 65328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Offset */ 66328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_PtrDist */ 67328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_String */ 68510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Tag */ 69328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Error */ 70328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Fixed */ 71328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pointer */ 72328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pos */ 73328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Vector */ 74328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_BBox */ 75328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Matrix */ 76328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_FWord */ 77328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UFWord */ 78328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 */ 79328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UnitVector */ 80328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F26Dot6 */ 81328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 82328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 83328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic */ 84328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic_Finalizer */ 85328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 86328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bitmap */ 87328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pixel_Mode */ 88328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Palette_Mode */ 89328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Glyph_Format */ 90328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_IMAGE_TAG */ 91328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 92328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 93328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 94328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 95328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 96328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 97328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 98328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bool */ 99328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 100328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 101f6c120f8267ac44e2b8a022e28bbf297b9f310b7Werner Lemberg /* A typedef of unsigned char, used for simple booleans. As usual, */ 1028a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* values 1 and~0 represent true and false, respectively. */ 103328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 104328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned char FT_Bool; 105328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 106328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 107328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 108328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 109328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 110328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_FWord */ 111328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 112328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 113328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A signed 16-bit integer used to store a distance in original font */ 114328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* units. */ 115328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 116328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_FWord; /* distance in FUnits */ 117328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 118328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 119328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 120328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 121328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 122328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UFWord */ 123328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 124328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 125328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* An unsigned 16-bit integer used to store a distance in original */ 126328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* font units. */ 127328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 128328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned short FT_UFWord; /* unsigned distance */ 129328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 130328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 131328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 132328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 133328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 134328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Char */ 135328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 136328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 137328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the _signed_ char type. */ 138328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 139328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed char FT_Char; 140328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 141328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 142328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 143328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 144328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 145328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Byte */ 146328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 147328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 148328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the _unsigned_ char type. */ 149328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 150328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned char FT_Byte; 151328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 152328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 153328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 154328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 155328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 156510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Bytes */ 157510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 158510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Description> */ 159510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* A typedef for constant memory areas. */ 160510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 161510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef const FT_Byte* FT_Bytes; 162510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 163510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 164510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /*************************************************************************/ 165510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 166510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Type> */ 167510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Tag */ 168510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 169510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Description> */ 1705a80a94b18b744c961820393200cd9104b99bebfWerner Lemberg /* A typedef for 32-bit tags (as used in the SFNT format). */ 171510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 172510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef FT_UInt32 FT_Tag; 173510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 174510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 175510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /*************************************************************************/ 176510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 177510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Type> */ 178328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_String */ 179328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 180328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 181328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the char type, usually used for strings. */ 182328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 183328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef char FT_String; 184328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 185328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 186328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 187328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 188328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 189328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Short */ 190328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 191328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 192328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for signed short. */ 193328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 194328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_Short; 195328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 196328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 197328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 198328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 199328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 200328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UShort */ 201328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 202328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 203328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for unsigned short. */ 204328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 205328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned short FT_UShort; 206328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 207328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 208328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 209328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 210328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 211328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Int */ 212328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 213328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 214328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for the int type. */ 215328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 216510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef signed int FT_Int; 217328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 218328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 219328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 220328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 221328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 222328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UInt */ 223328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 224328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 225328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for the unsigned int type. */ 226328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 227328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned int FT_UInt; 228328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 229328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 230328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 231328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 232328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 233328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Long */ 234328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 235328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 236328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for signed long. */ 237328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 238328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_Long; 239328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 240328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 241328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 242328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 243328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 244328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ULong */ 245328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 246328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 247328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for unsigned long. */ 248328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 249328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned long FT_ULong; 250328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 251328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 252328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 253328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 254328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 255328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 */ 256328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 257328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 258a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* A signed 2.14 fixed-point type used for unit vectors. */ 259328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 260328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_F2Dot14; 261328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 262328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 263328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 264328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 265328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 266328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F26Dot6 */ 267328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 268328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 269a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* A signed 26.6 fixed-point type used for vectorial pixel */ 270328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* coordinates. */ 271328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 272328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_F26Dot6; 273328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 274328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 275328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 276328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 277328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 278328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Fixed */ 279328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 280328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 281a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* This type is used to store 16.16 fixed-point values, like scaling */ 282fd74ec68b44fe2346b89ccc485a1d451f26df9d6Werner Lemberg /* values or matrix coefficients. */ 283328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 284328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_Fixed; 285328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 286328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 287328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 288328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 289328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 290328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Error */ 291328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 292328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 2938a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* The FreeType error code type. A value of~0 is always interpreted */ 294328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* as a successful operation. */ 295328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 296328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef int FT_Error; 297328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 298328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 299328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 300328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 301328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 302328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pointer */ 303328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 304328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 305328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for a typeless pointer. */ 306328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 307328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef void* FT_Pointer; 308328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 309328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 310328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 311328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 312328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 313328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Offset */ 314328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 315328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 3168a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ 317328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* _unsigned_ integer type used to express a file size or position, */ 318328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* or a memory block size. */ 319328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 320328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef size_t FT_Offset; 321328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 322328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 323328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 324328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 325328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 326328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_PtrDist */ 327328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 328328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 3298a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ 330328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* largest _signed_ integer type used to express the distance */ 331328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* between two pointers. */ 332328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 333023a4bf3bee24599ae0760042685f18624860641Werner Lemberg typedef ft_ptrdiff_t FT_PtrDist; 334328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 335328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 336328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 337328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 338328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 339328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UnitVector */ 340328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 341328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 342328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple structure used to store a 2D vector unit vector. Uses */ 343328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 types. */ 344328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 345328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 346328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* x :: Horizontal coordinate. */ 347328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 348328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* y :: Vertical coordinate. */ 349328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 350328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_UnitVector_ 351328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 352328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_F2Dot14 x; 353328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_F2Dot14 y; 354328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 355328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_UnitVector; 356328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 357328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 358328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 359328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 360328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 361328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Matrix */ 362328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 363328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 364328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple structure used to store a 2x2 matrix. Coefficients are */ 365a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* in 16.16 fixed-point format. The computation performed is: */ 366328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 367328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* { */ 368328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* x' = x*xx + y*xy */ 369328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* y' = x*yx + y*yy */ 370328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* } */ 371328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 372328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 373328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* xx :: Matrix coefficient. */ 374328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 375328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* xy :: Matrix coefficient. */ 376328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 377328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* yx :: Matrix coefficient. */ 378328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 379328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* yy :: Matrix coefficient. */ 380328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 381328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Matrix_ 382328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 383328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Fixed xx, xy; 384328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Fixed yx, yy; 385328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 386328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Matrix; 387328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 388328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 389328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 390328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 391328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 392cb37b3b36a1f846fa5404e8a043b545cdcd7d1e0Werner Lemberg /* FT_Data */ 393328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 394328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 395328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Read-only binary data represented as a pointer and a length. */ 396328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 397328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 398328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* pointer :: The data. */ 399328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 400328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* length :: The length of the data in bytes. */ 401328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 402328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Data_ 403328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 404328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg const FT_Byte* pointer; 405328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Int length; 406328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 407328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Data; 408328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 409328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 410328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 411328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 412328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <FuncType> */ 413328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic_Finalizer */ 414328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 415328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 4168a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* Describe a function used to destroy the `client' data of any */ 417fd74ec68b44fe2346b89ccc485a1d451f26df9d6Werner Lemberg /* FreeType object. See the description of the @FT_Generic type for */ 418328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* details of usage. */ 419328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 420328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Input> */ 421328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* The address of the FreeType object which is under finalization. */ 422328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Its client data is accessed through its `generic' field. */ 423328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 424328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef void (*FT_Generic_Finalizer)(void* object); 425328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 426328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 427328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 428328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 429328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 430328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic */ 431328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 432328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 433328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Client applications often need to associate their own data to a */ 434328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* variety of FreeType core objects. For example, a text layout API */ 435328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* might want to associate a glyph cache to a given size object. */ 436328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 437f24d0793f1a837e869cfcd1a06275a06dae4bd1cWerner Lemberg /* Some FreeType object contains a `generic' field, of type */ 438328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic, which usage is left to client applications and font */ 439328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* servers. */ 440328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 441328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* It can be used to store a pointer to client-specific data, as well */ 442328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* as the address of a `finalizer' function, which will be called by */ 443328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FreeType when the object is destroyed (for example, the previous */ 444328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* client example would put the address of the glyph cache destructor */ 445328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* in the `finalizer' field). */ 446328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 447328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 448328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* data :: A typeless pointer to any client-specified data. This */ 449328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* field is completely ignored by the FreeType library. */ 450328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 451328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* finalizer :: A pointer to a `generic finalizer' function, which */ 452328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* will be called when the object is destroyed. If this */ 453328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* field is set to NULL, no code will be called. */ 454328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 455328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Generic_ 456328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 457328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg void* data; 458328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Generic_Finalizer finalizer; 459328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 460328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Generic; 461328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 462328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 463328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 464328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 465328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Macro> */ 466328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_MAKE_TAG */ 467328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 468328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 469fd74ec68b44fe2346b89ccc485a1d451f26df9d6Werner Lemberg /* This macro converts four-letter tags which are used to label */ 470328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* TrueType tables into an unsigned long to be used within FreeType. */ 471328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 472328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Note> */ 4738a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* The produced values *must* be 32-bit integers. Don't redefine */ 4748a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* this macro. */ 475328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 476328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ 47741f9d0d6eebc698a83394f1d97cfb206484ac740Suzuki, Toshiya (鈴木俊哉) (FT_Tag) \ 478328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( ( (FT_ULong)_x1 << 24 ) | \ 479328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( (FT_ULong)_x2 << 16 ) | \ 480328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( (FT_ULong)_x3 << 8 ) | \ 481328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg (FT_ULong)_x4 ) 482328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 483328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 484328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 485328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 486328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 487328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* L I S T M A N A G E M E N T */ 488328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 489328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 490328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 491328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 492328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 493328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 494328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 495328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Section> */ 496328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* list_processing */ 497328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 498328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 499328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 500328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 501328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 502328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 503328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 504328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNode */ 505328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 506328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 5076756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* Many elements and objects in FreeType are listed through an */ 5086756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* @FT_List record (see @FT_ListRec). As its name suggests, an */ 509328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNode is a handle to a single list element. */ 510328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 511328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListNodeRec_* FT_ListNode; 512328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 513328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 514328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 515328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 516328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 517328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_List */ 518328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 519328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 5206756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* A handle to a list record (see @FT_ListRec). */ 521328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 522328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListRec_* FT_List; 523328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 524328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 525328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 526328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 527328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 528328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNodeRec */ 529328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 530328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 531328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A structure used to hold a single list element. */ 532328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 533328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 534328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* prev :: The previous element in the list. NULL if first. */ 535328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 536328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* next :: The next element in the list. NULL if last. */ 537328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 538328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* data :: A typeless pointer to the listed object. */ 539328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 540328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListNodeRec_ 541328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 542328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode prev; 543328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode next; 544328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg void* data; 545328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 546328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_ListNodeRec; 547328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 548328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 549328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 550328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 551328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 552328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListRec */ 553328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 554328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 555328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A structure used to hold a simple doubly-linked list. These are */ 556328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* used in many parts of FreeType. */ 557328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 558328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 559328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* head :: The head (first element) of doubly-linked list. */ 560328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 561328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* tail :: The tail (last element) of doubly-linked list. */ 562328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 563328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListRec_ 564328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 565328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode head; 566328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode tail; 567328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 568328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_ListRec; 569328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 570328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 571328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 572328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 573328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_IS_EMPTY( list ) ( (list).head == 0 ) 57452339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_BOOL( x ) ( (FT_Bool)( x ) ) 575328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 57652339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg /* concatenate C tokens */ 57752339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_XCAT( x, y ) x ## y 57852339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) 57952339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 58052339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg /* see `ftmoderr.h' for descriptions of the following macros */ 58152339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 58252339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) 583328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 58452339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) 585328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) 586328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 58752339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_EQ( x, e ) \ 58852339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) 58952339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_NEQ( x, e ) \ 59052339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) 59152339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 592328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 593328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner LembergFT_END_HEADER 594328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 595328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#endif /* __FTTYPES_H__ */ 596328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 597328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 598328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* END */ 599