1328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/***************************************************************************/ 2328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 3328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* fttypes.h */ 4328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 5328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* FreeType simple types definitions (specification only). */ 6328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* */ 70a0c22569deab933df21127e75db5c81f724f292Werner Lemberg/* Copyright 1996-2018 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 1937412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#ifndef FTTYPES_H_ 2037412ff9f42212bcf4dd29d9762f3c35b5735768Werner 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 */ 60de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Int64 */ 61de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_UInt64 */ 62328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Short */ 63328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UShort */ 64328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Long */ 65328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ULong */ 66328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bool */ 67328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Offset */ 68328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_PtrDist */ 69328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_String */ 70510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Tag */ 71328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Error */ 72328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Fixed */ 73328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pointer */ 74328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pos */ 75328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Vector */ 76328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_BBox */ 77328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Matrix */ 78328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_FWord */ 79328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UFWord */ 80328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 */ 81328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UnitVector */ 82328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F26Dot6 */ 83de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_Data */ 84328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 85de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg /* FT_MAKE_TAG */ 86328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 87328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic */ 88328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic_Finalizer */ 89328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 90328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bitmap */ 91328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pixel_Mode */ 92328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Palette_Mode */ 93328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Glyph_Format */ 94328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_IMAGE_TAG */ 95328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 96328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 97328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 98328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 99328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 100328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 101328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 102328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Bool */ 103328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 104328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 105f6c120f8267ac44e2b8a022e28bbf297b9f310b7Werner Lemberg /* A typedef of unsigned char, used for simple booleans. As usual, */ 1068a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* values 1 and~0 represent true and false, respectively. */ 107328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 108328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned char FT_Bool; 109328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 110328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 111328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 112328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 113328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 114328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_FWord */ 115328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 116328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 117328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A signed 16-bit integer used to store a distance in original font */ 118328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* units. */ 119328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 120328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_FWord; /* distance in FUnits */ 121328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 122328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 123328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 124328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 125328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 126328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UFWord */ 127328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 128328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 129328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* An unsigned 16-bit integer used to store a distance in original */ 130328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* font units. */ 131328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 132328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned short FT_UFWord; /* unsigned distance */ 133328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 134328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 135328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 136328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 137328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 138328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Char */ 139328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 140328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 141328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the _signed_ char type. */ 142328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 143328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed char FT_Char; 144328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 145328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 146328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 147328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 148328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 149328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Byte */ 150328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 151328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 152328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the _unsigned_ char type. */ 153328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 154328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned char FT_Byte; 155328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 156328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 157328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 158328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 159328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 160510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Bytes */ 161510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 162510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Description> */ 163510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* A typedef for constant memory areas. */ 164510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 165510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef const FT_Byte* FT_Bytes; 166510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 167510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 168510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /*************************************************************************/ 169510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 170510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Type> */ 171510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* FT_Tag */ 172510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 173510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Description> */ 1745a80a94b18b744c961820393200cd9104b99bebfWerner Lemberg /* A typedef for 32-bit tags (as used in the SFNT format). */ 175510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 176510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef FT_UInt32 FT_Tag; 177510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 178510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg 179510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /*************************************************************************/ 180510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* */ 181510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg /* <Type> */ 182328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_String */ 183328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 184328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 185328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for the char type, usually used for strings. */ 186328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 187328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef char FT_String; 188328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 189328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 190328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 191328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 192328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 193328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Short */ 194328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 195328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 196328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for signed short. */ 197328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 198328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_Short; 199328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 200328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 201328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 202328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 203328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 204328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UShort */ 205328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 206328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 207328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for unsigned short. */ 208328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 209328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned short FT_UShort; 210328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 211328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 212328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 213328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 214328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 215328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Int */ 216328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 217328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 218328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for the int type. */ 219328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 220510b85522cd6ee8e70285167ebf1300fffdc0f04Werner Lemberg typedef signed int FT_Int; 221328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 222328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 223328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 224328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 225328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 226328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UInt */ 227328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 228328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 229328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for the unsigned int type. */ 230328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 231328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned int FT_UInt; 232328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 233328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 234328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 235328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 236328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 237328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Long */ 238328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 239328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 240328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for signed long. */ 241328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 242328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_Long; 243328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 244328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 245328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 246328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 247328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 248328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ULong */ 249328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 250328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 251328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A typedef for unsigned long. */ 252328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 253328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef unsigned long FT_ULong; 254328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 255328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 256328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 257328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 258328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 259328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 */ 260328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 261328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 262a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* A signed 2.14 fixed-point type used for unit vectors. */ 263328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 264328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed short FT_F2Dot14; 265328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 266328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 267328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 268328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 269328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 270328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F26Dot6 */ 271328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 272328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 273a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* A signed 26.6 fixed-point type used for vectorial pixel */ 274328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* coordinates. */ 275328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 276328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_F26Dot6; 277328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 278328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 279328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 280328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 281328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 282328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Fixed */ 283328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 284328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 285a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* This type is used to store 16.16 fixed-point values, like scaling */ 286fd74ec68b44fe2346b89ccc485a1d451f26df9d6Werner Lemberg /* values or matrix coefficients. */ 287328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 288328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef signed long FT_Fixed; 289328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 290328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 291328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 292328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 293328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 294328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Error */ 295328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 296328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 2978a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* The FreeType error code type. A value of~0 is always interpreted */ 298328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* as a successful operation. */ 299328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 300328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef int FT_Error; 301328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 302328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 303328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 304328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 305328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 306328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Pointer */ 307328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 308328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 309328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple typedef for a typeless pointer. */ 310328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 311328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef void* FT_Pointer; 312328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 313328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 314328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 315328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 316328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 317328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Offset */ 318328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 319328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 3208a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* This is equivalent to the ANSI~C `size_t' type, i.e., the largest */ 321328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* _unsigned_ integer type used to express a file size or position, */ 322328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* or a memory block size. */ 323328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 324328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef size_t FT_Offset; 325328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 326328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 327328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 328328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 329328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 330328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_PtrDist */ 331328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 332328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 3338a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* This is equivalent to the ANSI~C `ptrdiff_t' type, i.e., the */ 334328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* largest _signed_ integer type used to express the distance */ 335328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* between two pointers. */ 336328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 337023a4bf3bee24599ae0760042685f18624860641Werner Lemberg typedef ft_ptrdiff_t FT_PtrDist; 338328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 339328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 340328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 341328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 342328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 343328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_UnitVector */ 344328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 345328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 346328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple structure used to store a 2D vector unit vector. Uses */ 347328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_F2Dot14 types. */ 348328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 349328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 350328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* x :: Horizontal coordinate. */ 351328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 352328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* y :: Vertical coordinate. */ 353328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 354328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_UnitVector_ 355328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 356328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_F2Dot14 x; 357328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_F2Dot14 y; 358328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 359328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_UnitVector; 360328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 361328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 362328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 363328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 364328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 365328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Matrix */ 366328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 367328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 368328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A simple structure used to store a 2x2 matrix. Coefficients are */ 369a692170a238f4bdb5fdb3b7b7c31bf662340a43aAlexei Podtelezhnikov (Алексей Подтележников) /* in 16.16 fixed-point format. The computation performed is: */ 370328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 371328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* { */ 372328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* x' = x*xx + y*xy */ 373328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* y' = x*yx + y*yy */ 374328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* } */ 375328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 376328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 377328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* xx :: Matrix coefficient. */ 378328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 379328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* xy :: Matrix coefficient. */ 380328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 381328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* yx :: Matrix coefficient. */ 382328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 383328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* yy :: Matrix coefficient. */ 384328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 385328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Matrix_ 386328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 387328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Fixed xx, xy; 388328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Fixed yx, yy; 389328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 390328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Matrix; 391328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 392328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 393328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 394328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 395328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 396cb37b3b36a1f846fa5404e8a043b545cdcd7d1e0Werner Lemberg /* FT_Data */ 397328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 398328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 399328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Read-only binary data represented as a pointer and a length. */ 400328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 401328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 402328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* pointer :: The data. */ 403328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 404328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* length :: The length of the data in bytes. */ 405328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 406328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Data_ 407328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 408328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg const FT_Byte* pointer; 409328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Int length; 410328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 411328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Data; 412328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 413328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 414328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 415328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 416328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <FuncType> */ 417328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic_Finalizer */ 418328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 419328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 4208a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* Describe a function used to destroy the `client' data of any */ 421fd74ec68b44fe2346b89ccc485a1d451f26df9d6Werner Lemberg /* FreeType object. See the description of the @FT_Generic type for */ 422328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* details of usage. */ 423328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 424328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Input> */ 42500ea2a133b377d74f9694d3ba74588a4e8542120Werner Lemberg /* The address of the FreeType object that is under finalization. */ 426328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Its client data is accessed through its `generic' field. */ 427328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 4282127f07624b678c6228f4dca483b3b87f3f85f99Werner Lemberg typedef void (*FT_Generic_Finalizer)( void* object ); 429328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 430328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 431328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 432328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 433328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 434328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic */ 435328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 436328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 437328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* Client applications often need to associate their own data to a */ 438328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* variety of FreeType core objects. For example, a text layout API */ 439328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* might want to associate a glyph cache to a given size object. */ 440328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 441f24d0793f1a837e869cfcd1a06275a06dae4bd1cWerner Lemberg /* Some FreeType object contains a `generic' field, of type */ 442328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_Generic, which usage is left to client applications and font */ 443328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* servers. */ 444328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 445328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* It can be used to store a pointer to client-specific data, as well */ 446328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* as the address of a `finalizer' function, which will be called by */ 447328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FreeType when the object is destroyed (for example, the previous */ 448328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* client example would put the address of the glyph cache destructor */ 449328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* in the `finalizer' field). */ 450328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 451328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 452328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* data :: A typeless pointer to any client-specified data. This */ 453328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* field is completely ignored by the FreeType library. */ 454328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 455328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* finalizer :: A pointer to a `generic finalizer' function, which */ 456328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* will be called when the object is destroyed. If this */ 457328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* field is set to NULL, no code will be called. */ 458328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 459328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_Generic_ 460328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 461328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg void* data; 462328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_Generic_Finalizer finalizer; 463328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 464328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_Generic; 465328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 466328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 467328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 468328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 469328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Macro> */ 470328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_MAKE_TAG */ 471328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 472328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 47300ea2a133b377d74f9694d3ba74588a4e8542120Werner Lemberg /* This macro converts four-letter tags that are used to label */ 47400ea2a133b377d74f9694d3ba74588a4e8542120Werner Lemberg /* TrueType tables into an unsigned long, to be used within FreeType. */ 475328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 476328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Note> */ 4778a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* The produced values *must* be 32-bit integers. Don't redefine */ 4788a9b63913f62bdf342f4bd8791cb7c7ebfdbfeddWerner Lemberg /* this macro. */ 479328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 480328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ 48141f9d0d6eebc698a83394f1d97cfb206484ac740Suzuki, Toshiya (鈴木俊哉) (FT_Tag) \ 482328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( ( (FT_ULong)_x1 << 24 ) | \ 483328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( (FT_ULong)_x2 << 16 ) | \ 484328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg ( (FT_ULong)_x3 << 8 ) | \ 485328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg (FT_ULong)_x4 ) 486328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 487328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 488328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 489328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 490328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 491328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* L I S T M A N A G E M E N T */ 492328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 493328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 494328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 495328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 496328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 497328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 498328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 499328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Section> */ 500328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* list_processing */ 501328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 502328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 503328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 504328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 505328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 506328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 507328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 508328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNode */ 509328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 510328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 5116756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* Many elements and objects in FreeType are listed through an */ 5126756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* @FT_List record (see @FT_ListRec). As its name suggests, an */ 513328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNode is a handle to a single list element. */ 514328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 515328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListNodeRec_* FT_ListNode; 516328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 517328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 518328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 519328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 520328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Type> */ 521328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_List */ 522328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 523328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 5246756dc15ba424186394ca3f295ba8d125b0f047eWerner Lemberg /* A handle to a list record (see @FT_ListRec). */ 525328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 526328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListRec_* FT_List; 527328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 528328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 529328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 530328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 531328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 532328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListNodeRec */ 533328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 534328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 535328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A structure used to hold a single list element. */ 536328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 537328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 538328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* prev :: The previous element in the list. NULL if first. */ 539328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 540328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* next :: The next element in the list. NULL if last. */ 541328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 542328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* data :: A typeless pointer to the listed object. */ 543328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 544328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListNodeRec_ 545328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 546328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode prev; 547328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode next; 548328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg void* data; 549328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 550328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_ListNodeRec; 551328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 552328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 553328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /*************************************************************************/ 554328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 555328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Struct> */ 556328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* FT_ListRec */ 557328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 558328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Description> */ 559328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* A structure used to hold a simple doubly-linked list. These are */ 560328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* used in many parts of FreeType. */ 561328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 562328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* <Fields> */ 563328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* head :: The head (first element) of doubly-linked list. */ 564328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 565328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* tail :: The tail (last element) of doubly-linked list. */ 566328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 567328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg typedef struct FT_ListRec_ 568328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg { 569328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode head; 570328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg FT_ListNode tail; 571328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 572328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg } FT_ListRec; 573328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 574328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg /* */ 575328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 576de43ace7a32252f0cdf50336f74fc1d9d52e2b03Werner Lemberg 577328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_IS_EMPTY( list ) ( (list).head == 0 ) 57852339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_BOOL( x ) ( (FT_Bool)( x ) ) 579328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 58052339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg /* concatenate C tokens */ 58152339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_XCAT( x, y ) x ## y 58252339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_CAT( x, y ) FT_ERR_XCAT( x, y ) 58352339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 58452339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg /* see `ftmoderr.h' for descriptions of the following macros */ 58552339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 58652339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR( e ) FT_ERR_CAT( FT_ERR_PREFIX, e ) 587328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 58852339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERROR_BASE( x ) ( (x) & 0xFF ) 589328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg#define FT_ERROR_MODULE( x ) ( (x) & 0xFF00U ) 590328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 59152339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_EQ( x, e ) \ 59252339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg ( FT_ERROR_BASE( x ) == FT_ERROR_BASE( FT_ERR( e ) ) ) 59352339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg#define FT_ERR_NEQ( x, e ) \ 59452339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg ( FT_ERROR_BASE( x ) != FT_ERROR_BASE( FT_ERR( e ) ) ) 59552339dc2742dfd2a1e91aeb1067506e4a7311d35Werner Lemberg 596328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 597328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner LembergFT_END_HEADER 598328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 59937412ff9f42212bcf4dd29d9762f3c35b5735768Werner Lemberg#endif /* FTTYPES_H_ */ 600328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 601328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg 602328abf30946ad7c113db8e6bda4fdb4003ae6ddaWerner Lemberg/* END */ 603