Ticket #19: fttypes.d

File fttypes.d, 80.5 kB (added by Cyborg16, 3 months ago)

Type corrections for X86_64

Line 
1 /*
2  * Copyright (c) 2006 Derelict Developers
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the names 'Derelict', 'DerelictFT', nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32
33 /** This module is a collection of all types (alias/struct/union), enum constants and
34  * macros (enums or functions here) defined in the freetype 2 header files.
35  *
36  * It is missing some of the C macros (in particular lots of truetype identifiers), but should
37  * otherwise be fairly complete as of freetype version 2.3.5.
38  *
39  * Comments show which files the definitions are from; brackets show which C macros include the
40  * file (excluding the inclusion of freetype.h in most files).
41  */
42 module derelict.freetype.fttypes;
43
44 //BEGIN Basic types
45 // config/ftconfig.h (FT_CONFIG_CONFIG_H, FT_FREETYPE_H)
46 alias short             FT_Int16;
47 alias ushort            FT_UInt16;
48 alias int               FT_Int32;
49 alias uint              FT_UInt32;
50 alias int               FT_Fast;
51 alias uint              FT_UFast;
52
53 // fttypes.h (FT_FREETYPE_H, FT_TYPES_H)
54 alias byte              FT_Bool;
55 alias short             FT_FWord;
56 alias ushort            FT_UFWord;
57 alias char              FT_Char;
58 alias ubyte             FT_Byte;
59 alias FT_Byte*          FT_Bytes;
60 alias FT_UInt32         FT_Tag;
61 alias char              FT_String;
62 alias short             FT_Short;
63 alias ushort            FT_UShort;
64 alias int               FT_Int;
65 alias uint              FT_UInt;
66
67 // The C long type corresponds to either D's int or long type.
68 // But it might depend on compiler as well as architechture?
69 version(X86_64)
70 {
71     alias long          FT_Long;
72     alias ulong         FT_ULong;
73 } else {
74     alias int           FT_Long;
75     alias uint          FT_ULong;
76 }
77
78 alias short             FT_F2Dot14;
79 alias FT_Long           FT_F26Dot6;
80 alias FT_Long           FT_Fixed;
81 alias int               FT_Error;
82 alias void*             FT_Pointer;
83
84 alias size_t            FT_Offset;
85 alias ptrdiff_t         FT_PtrDist;
86
87 // ftimage.h (FT_FREETYPE_H, FT_TYPES_H, FT_IMAGE_H)
88 alias FT_Long           FT_Pos;
89 //END Basic types
90
91 //BEGIN Other aliases
92 // ftsystem.h (FT_FREETYPE_H, FT_TYPES_H, FT_SYSTEM_H)
93 alias FT_MemoryRec*         FT_Memory;
94 alias FT_StreamRec*         FT_Stream;
95
96 // ftimage.h (FT_FREETYPE_H, FT_TYPES_H, FT_IMAGE_H)
97 alias FT_RasterRec*         FT_Raster;
98
99 // fttypes.h (FT_FREETYPE_H, FT_TYPES_H)
100 alias FT_ListNodeRec*       FT_ListNode;
101 alias FT_ListRec*           FT_List;
102
103 // freetype.h (FT_FREETYPE_H)
104 alias FT_LibraryRec*        FT_Library;
105 alias FT_ModuleRec*         FT_Module;
106 alias FT_DriverRec*         FT_Driver;
107 alias FT_RendererRec*       FT_Renderer;
108 alias FT_FaceRec*           FT_Face;
109 alias FT_SizeRec*           FT_Size;
110 alias FT_GlyphSlotRec*      FT_GlyphSlot;
111 alias FT_CharMapRec*        FT_CharMap;
112 alias FT_Face_InternalRec*  FT_Face_Internal;
113 alias FT_Size_InternalRec*  FT_Size_Internal;
114 alias FT_SubGlyphRec*       FT_SubGlyph;
115 alias FT_Slot_InternalRec*  FT_Slot_Internal;
116 alias FT_Size_RequestRec*   FT_Size_Request;
117
118 // ftmodapi.h (FT_MODULE_H, FT_RENDER_H)
119 alias FT_Pointer            FT_Module_Interface;
120
121 // t1tables.h (FT_TYPE1_TABLES_H)
122 alias PS_FontInfoRec*       PS_FontInfo;
123 deprecated alias PS_FontInfoRec        T1_FontInfo;
124 alias PS_PrivateRec*        PS_Private;
125 deprecated alias PS_PrivateRec         T1_Private;
126 alias PS_DesignMapRec*      PS_DesignMap;
127 deprecated alias PS_DesignMapRec       T1_DesignMap;
128 alias PS_BlendRec*          PS_Blend;
129 deprecated alias PS_BlendRec           T1_Blend;
130 alias CID_FaceDictRec*      CID_FaceDict;
131 deprecated alias CID_FaceDictRec       CID_FontDict;
132 alias CID_FaceInfoRec*      CID_FaceInfo;
133 deprecated alias CID_FaceInfoRec       CID_Info;
134
135 // ftbdf.h (FT_BDF_H)
136 alias BDF_PropertyRec*      BDF_Property;
137
138 // ftwinfnt.h (FT_WINFONTS_H)
139 alias FT_WinFNT_HeaderRec*  FT_WinFNT_Header;
140
141 // ftglyph.h (FT_GLYPH_H, FT_CACHE_H, FT_STROKER_H)
142 alias FT_GlyphRec*          FT_Glyph;
143 alias FT_BitmapGlyphRec*    FT_BitmapGlyph;
144 alias FT_OutlineGlyphRec*   FT_OutlineGlyph;
145
146 // ftcache.h (FT_CACHE_H)
147 alias FTC_FaceIDRec*        FTC_FaceID;
148 alias FTC_ManagerRec*       FTC_Manager;
149 alias FTC_NodeRec*          FTC_Node;
150 alias FTC_ScalerRec*        FTC_Scaler;
151 alias FTC_CMapCacheRec*     FTC_CMapCache;
152 alias FTC_ImageTypeRec*     FTC_ImageType;
153 alias FTC_ImageCacheRec*    FTC_ImageCache;
154 alias FTC_SBitRec*          FTC_SBit;
155 alias FTC_SBitCacheRec*     FTC_SBitCache;
156
157 // ftstroke.h (FT_STROKER_H)
158 alias FT_StrokerRec*        FT_Stroker;
159
160 // fttrigon.h (FT_TRIGONOMETRY_H)
161 alias FT_Fixed              FT_Angle;
162
163 // ftincrem.h (FT_INCREMENTAL_H)
164 alias FT_IncrementalRec*    FT_Incremental;
165 alias FT_Incremental_MetricsRec* FT_Incremental_Metrics;
166 alias FT_Incremental_InterfaceRec* FT_Incremental_Interface;
167
168 /+ other
169 alias FTC_MruNodeRec*       FTC_MruNode;
170 alias FTC_MruListRec*       FTC_MruList;
171 alias FTC_MruListClassRec*  FTC_MruListClass;
172 alias FTC_CacheRec*         FTC_Cache;
173 alias FTC_CacheClassRec*    FTC_CacheClass;
174 alias FTC_FamilyRec*        FTC_Family;
175 alias FTC_GNodeRec*         FTC_GNode;
176 alias FTC_GQueryRec*        FTC_GQuery;
177 alias FTC_GCacheRec*        FTC_GCache;
178 alias FTC_GCacheClassRec*   FTC_GCacheClass;
179 alias FTC_INodeRec*         FTC_INode;
180 alias FTC_IFamilyClassRec*  FTC_IFamilyClass;
181 alias FTC_SNodeRec*         FTC_SNode;
182 alias FTC_SFamilyClassRec*  FTC_SFamilyClass;
183
184 alias FT_GlyphLoaderRec*    FT_GlyphLoader ;
185 alias FT_GlyphLoadRec*      FT_GlyphLoad;
186 alias FT_Driver_ClassRec*   FT_Driver_Class;
187 alias FT_AutoHinterRec*     FT_AutoHinter;
188 alias FT_AutoHinter_ServiceRec*  FT_AutoHinter_Service;
189 alias FT_ServiceDescRec*    FT_ServiceDesc;
190 alias FT_ServiceCacheRec*   FT_ServiceCache;
191 alias FT_CMapRec*           FT_CMap;
192 alias FT_CMap_ClassRec*     FT_CMap_Class;
193
194 alias SFNT_HeaderRec*       SFNT_Header;
195
196 alias TT_TableRec*          TT_Table;
197 alias TT_LongMetricsRec*    TT_LongMetrics;
198
199 alias FT_Short              TT_ShortMetrics;
200 alias TT_NameEntryRec*      TT_NameEntry;
201 alias TT_NameTableRec*      TT_NameTable;
202 alias TT_GaspRangeRec*      TT_GaspRange;
203 alias TT_HdmxEntryRec*      TT_HdmxEntry;
204 alias TT_HdmxRec*           TT_Hdmx;
205 alias TT_Kern0_PairRec*     TT_Kern0_Pair;
206 alias TT_SBit_MetricsRec*   TT_SBit_Metrics;
207 alias TT_SBit_SmallMetricsRec*  TT_SBit_SmallMetrics;
208 alias TT_SBit_LineMetricsRec*   TT_SBit_LineMetrics;
209 alias TT_SBit_RangeRec*     TT_SBit_Range;
210 alias TT_SBit_StrikeRec*    TT_SBit_Strike;
211 alias TT_SBit_ComponentRec* TT_SBit_Component;
212 alias TT_SBit_ScaleRec*     TT_SBit_Scale;
213 alias TT_Post_20Rec*        TT_Post_20;
214 alias TT_Post_25Rec*        TT_Post_25;
215 alias TT_Post_NamesRec*     TT_Post_Names;
216 alias GX_BlendRec*          GX_Blend;
217 alias TT_FaceRec*           TT_Face;
218 alias TT_GlyphZoneRec*      TT_GlyphZone;
219 alias TT_ExecContextRec*    TT_ExecContext;
220 alias SFNT_Interface*       SFNT_Service;
221 alias FT_ValidatorRec*      FT_Validator;
222 alias PSH_GlobalsRec*       PSH_Globals;
223 alias PSH_Globals_FuncsRec* PSH_Globals_Funcs;
224 alias T1_HintsRec*          T1_Hints;
225 alias T1_Hints_FuncsRec*    T1_Hints_Funcs;
226 alias T2_HintsRec*          T2_Hints;
227 alias T2_Hints_FuncsRec*    T2_Hints_Funcs;
228 alias PSHinter_Interface*   PSHinter_Service;
229 // alias FT_Service_PsCMapsRec  FT_Service_PsCMapsRec;
230 alias FT_Service_PsCMapsRec* FT_Service_PsCMaps;
231 alias T1_EncodingRec*       T1_Encoding;
232 alias T1_FontRec*           T1_Font;
233 alias CID_SubrsRec*         CID_Subrs;
234 alias T1_FaceRec*           T1_Face;
235 alias CID_FaceRec*          CID_Face;
236 alias PS_TableRec*          PS_Table;
237 alias PS_Table_FuncsRec*    PS_Table_Funcs;
238 alias PS_ParserRec*         PS_Parser;
239 alias T1_TokenRec*          T1_Token;
240 alias T1_FieldRec*          T1_Field;
241 alias PS_Parser_FuncsRec*   PS_Parser_Funcs;
242 alias T1_BuilderRec*        T1_Builder;
243 alias T1_Builder_FuncsRec*  T1_Builder_Funcs;
244 alias T1_Decoder_ZoneRec*   T1_Decoder_Zone;
245 alias T1_DecoderRec*        T1_Decoder;
246 alias T1_Decoder_FuncsRec*  T1_Decoder_Funcs;
247 alias T1_CMap_ClassesRec*   T1_CMap_Classes;
248 alias PSAux_ServiceRec*     PSAux_Service;
249 alias PSAux_ServiceRec      PSAux_Interface;
250 alias TT_LoaderRec*         TT_Loader;
251 +/
252 //END Other aliases
253
254
255 //BEGIN Enums
256 /********************************************************************
257  *  Freetype constants
258  ********************************************************************/
259 // freetype.h (FT_FREETYPE_H)
260 enum FT_Encoding
261 {
262   FT_ENCODING_NONE = ( ( cast(FT_UInt32)(0) << 24 ) | ( cast(FT_UInt32)(0) << 16 ) | ( cast(FT_UInt32)(0) << 8 ) | cast(FT_UInt32)(0) ) ,
263   FT_ENCODING_MS_SYMBOL = ( ( cast(FT_UInt32)('s') << 24 ) | ( cast(FT_UInt32)('y') << 16 ) | ( cast(FT_UInt32)('m') << 8 ) | cast(FT_UInt32)('b') ) ,
264   FT_ENCODING_UNICODE = ( ( cast(FT_UInt32)('u') << 24 ) | ( cast(FT_UInt32)('n') << 16 ) | ( cast(FT_UInt32)('i') << 8 ) | cast(FT_UInt32)('c') ) ,
265   FT_ENCODING_SJIS = ( ( cast(FT_UInt32)('s') << 24 ) | ( cast(FT_UInt32)('j') << 16 ) | ( cast(FT_UInt32)('i') << 8 ) | cast(FT_UInt32)('s') ) ,
266   FT_ENCODING_GB2312 = ( ( cast(FT_UInt32)('g') << 24 ) | ( cast(FT_UInt32)('b') << 16 ) | ( cast(FT_UInt32)(' ') << 8 ) | cast(FT_UInt32)(' ') ) ,
267   FT_ENCODING_BIG5 = ( ( cast(FT_UInt32)('b') << 24 ) | ( cast(FT_UInt32)('i') << 16 ) | ( cast(FT_UInt32)('g') << 8 ) | cast(FT_UInt32)('5') ) ,
268   FT_ENCODING_WANSUNG = ( ( cast(FT_UInt32)('w') << 24 ) | ( cast(FT_UInt32)('a') << 16 ) | ( cast(FT_UInt32)('n') << 8 ) | cast(FT_UInt32)('s') ) ,
269   FT_ENCODING_JOHAB = ( ( cast(FT_UInt32)('j') << 24 ) | ( cast(FT_UInt32)('o') << 16 ) | ( cast(FT_UInt32)('h') << 8 ) | cast(FT_UInt32)('a') ) ,
270   FT_ENCODING_MS_SJIS = FT_ENCODING_SJIS,
271   FT_ENCODING_MS_GB2312 = FT_ENCODING_GB2312,
272   FT_ENCODING_MS_BIG5 = FT_ENCODING_BIG5,
273   FT_ENCODING_MS_WANSUNG = FT_ENCODING_WANSUNG,
274   FT_ENCODING_MS_JOHAB = FT_ENCODING_JOHAB,
275   FT_ENCODING_ADOBE_STANDARD = ( ( cast(FT_UInt32)('A') << 24 ) | ( cast(FT_UInt32)('D') << 16 ) | ( cast(FT_UInt32)('O') << 8 ) | cast(FT_UInt32)('B') ) ,
276   FT_ENCODING_ADOBE_EXPERT = ( ( cast(FT_UInt32)('A') << 24 ) | ( cast(FT_UInt32)('D') << 16 ) | ( cast(FT_UInt32)('B') << 8 ) | cast(FT_UInt32)('E') ) ,
277   FT_ENCODING_ADOBE_CUSTOM = ( ( cast(FT_UInt32)('A') << 24 ) | ( cast(FT_UInt32)('D') << 16 ) | ( cast(FT_UInt32)('B') << 8 ) | cast(FT_UInt32)('C') ) ,
278   FT_ENCODING_ADOBE_LATIN_1 = ( ( cast(FT_UInt32)('l') << 24 ) | ( cast(FT_UInt32)('a') << 16 ) | ( cast(FT_UInt32)('t') << 8 ) | cast(FT_UInt32)('1') ) ,
279   FT_ENCODING_OLD_LATIN_2 = ( ( cast(FT_UInt32)('l') << 24 ) | ( cast(FT_UInt32)('a') << 16 ) | ( cast(FT_UInt32)('t') << 8 ) | cast(FT_UInt32)('2') ) ,
280   FT_ENCODING_APPLE_ROMAN = ( ( cast(FT_UInt32)('a') << 24 ) | ( cast(FT_UInt32)('r') << 16 ) | ( cast(FT_UInt32)('m') << 8 ) | cast(FT_UInt32)('n') )
281 }
282
283 enum : FT_Long
284 {
285     FT_FACE_FLAG_SCALABLE         = 1 << 0,
286     FT_FACE_FLAG_FIXED_SIZES      = 1 << 1,
287     FT_FACE_FLAG_FIXED_WIDTH      = 1 << 2,
288     FT_FACE_FLAG_SFNT             = 1 << 3,
289     FT_FACE_FLAG_HORIZONTAL       = 1 << 4,
290     FT_FACE_FLAG_VERTICAL         = 1 << 5,
291     FT_FACE_FLAG_KERNING          = 1 << 6,
292     FT_FACE_FLAG_FAST_GLYPHS      = 1 << 7,
293     FT_FACE_FLAG_MULTIPLE_MASTERS = 1 << 8,
294     FT_FACE_FLAG_GLYPH_NAMES      = 1 << 9,
295     FT_FACE_FLAG_EXTERNAL_STREAM  = 1 << 10,
296     FT_FACE_FLAG_HINTER           = 1 << 11,
297 }
298
299 enum
300 {
301     FT_STYLE_FLAG_ITALIC          = 1 << 0,
302     FT_STYLE_FLAG_BOLD            = 1 << 1,
303 }
304
305 enum FT_Size_Request_Type
306 {
307     FT_SIZE_REQUEST_TYPE_NOMINAL,
308     FT_SIZE_REQUEST_TYPE_REAL_DIM,
309     FT_SIZE_REQUEST_TYPE_BBOX,
310     FT_SIZE_REQUEST_TYPE_CELL,
311     FT_SIZE_REQUEST_TYPE_SCALES,
312     FT_SIZE_REQUEST_TYPE_MAX
313 }
314
315 enum : uint
316 {
317     FT_OPEN_MEMORY           = 0x1,
318     FT_OPEN_STREAM           = 0x2,
319     FT_OPEN_DRIVER           = 0x4,
320     FT_OPEN_PATHNAME         = 0x8,
321     FT_OPEN_PARAMS           = 0x10,
322 }
323
324 enum : uint
325 {
326     FT_LOAD_DEFAULT          = 0x0,
327     FT_LOAD_NO_SCALE         = 0x1,
328     FT_LOAD_NO_HINTING       = 0x2,
329     FT_LOAD_RENDER           = 0x4,
330     FT_LOAD_NO_BITMAP        = 0x8,
331     FT_LOAD_VERTICAL_LAYOUT  = 0x10,
332     FT_LOAD_FORCE_AUTOHINT   = 0x20,
333     FT_LOAD_CROP_BITMAP      = 0x40,
334     FT_LOAD_PEDANTIC         = 0x80,
335     FT_LOAD_IGNORE_GLOBAL_ADVANCE_WIDTH =  0x200,
336     FT_LOAD_NO_RECURSE       = 0x400,
337     FT_LOAD_IGNORE_TRANSFORM = 0x800,
338     FT_LOAD_MONOCHROME       = 0x1000,
339     FT_LOAD_LINEAR_DESIGN    = 0x2000,
340
341     /* temporary hack! */
342     FT_LOAD_SBITS_ONLY       = 0x4000,
343     FT_LOAD_NO_AUTOHINT      = 0x8000U,
344 }
345
346 enum FT_Render_Mode
347 {
348  FT_RENDER_MODE_NORMAL = 0,
349  FT_RENDER_MODE_LIGHT,
350  FT_RENDER_MODE_MONO,
351  FT_RENDER_MODE_LCD,
352  FT_RENDER_MODE_LCD_V,
353  FT_RENDER_MODE_MAX
354 }
355
356 enum
357 {
358     FT_LOAD_TARGET_NORMAL    = ( FT_Render_Mode.FT_RENDER_MODE_NORMAL & 15 ) << 16,
359     FT_LOAD_TARGET_LIGHT     = ( FT_Render_Mode.FT_RENDER_MODE_LIGHT & 15 ) << 16,
360     FT_LOAD_TARGET_MONO      = ( FT_Render_Mode.FT_RENDER_MODE_MONO & 15 ) << 16,
361     FT_LOAD_TARGET_LCD       = ( FT_Render_Mode.FT_RENDER_MODE_LCD & 15 ) << 16,
362     FT_LOAD_TARGET_LCD_V     = ( FT_Render_Mode.FT_RENDER_MODE_LCD_V & 15 ) << 16,
363 }
364
365 enum FT_Kerning_Mode
366 {
367  FT_KERNING_DEFAULT = 0,
368  FT_KERNING_UNFITTED,
369  FT_KERNING_UNSCALED
370 }
371
372 enum
373 {
374     FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS     = 1,
375     FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES = 2,
376     FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID   = 4,
377     FT_SUBGLYPH_FLAG_SCALE              = 8,
378     FT_SUBGLYPH_FLAG_XY_SCALE           = 0x40,
379     FT_SUBGLYPH_FLAG_2X2                = 0x80,
380     FT_SUBGLYPH_FLAG_USE_MY_METRICS     = 0x200,
381 }
382
383 enum    // FreeType version
384 {
385     FREETYPE_MAJOR  = 2,
386     FREETYPE_MINOR  = 3,
387     FREETYPE_PATCH  = 5,
388 }
389
390 // ftimage.h (FT_FREETYPE_H, FT_TYPES_H, FT_IMAGE_H)
391 enum FT_Pixel_Mode
392 {
393     FT_PIXEL_MODE_NONE = 0,
394     FT_PIXEL_MODE_MONO,
395     FT_PIXEL_MODE_GRAY,
396     FT_PIXEL_MODE_GRAY2,
397     FT_PIXEL_MODE_GRAY4,
398     FT_PIXEL_MODE_LCD,
399     FT_PIXEL_MODE_LCD_V,
400     FT_PIXEL_MODE_MAX
401 }
402
403 enum : uint
404 {
405     FT_OUTLINE_NONE            = 0x0,
406     FT_OUTLINE_OWNER           = 0x1,
407     FT_OUTLINE_EVEN_ODD_FILL   = 0x2,
408     FT_OUTLINE_REVERSE_FILL    = 0x4,
409     FT_OUTLINE_IGNORE_DROPOUTS = 0x8,
410     FT_OUTLINE_HIGH_PRECISION  = 0x100,
411     FT_OUTLINE_SINGLE_PASS     = 0x200,
412 }
413
414 enum
415 {
416     FT_CURVE_TAG_ON          = 1,
417     FT_CURVE_TAG_CONIC       = 0,
418     FT_CURVE_TAG_CUBIC       = 2,
419     FT_CURVE_TAG_TOUCH_X     = 8,
420     FT_CURVE_TAG_TOUCH_Y     = 16,
421     FT_CURVE_TAG_TOUCH_BOTH  = FT_CURVE_TAG_TOUCH_X | FT_CURVE_TAG_TOUCH_Y,
422 }
423
424 enum FT_Glyph_Format
425 {
426   FT_GLYPH_FORMAT_NONE = ( ( cast(uint)0 << 24 ) | ( cast(uint)0 << 16 ) | ( cast(uint)0 << 8 ) | cast(uint)0 ) ,
427   FT_GLYPH_FORMAT_COMPOSITE = ( ( cast(uint)'c' << 24 ) | ( cast(uint)'o' << 16 ) | ( cast(uint)'m' << 8 ) | cast(uint)'p' ) ,
428   FT_GLYPH_FORMAT_BITMAP = ( ( cast(uint)'b' << 24 ) | ( cast(uint)'i' << 16 ) | ( cast(uint)'t' << 8 ) | cast(uint)'s' ) ,
429   FT_GLYPH_FORMAT_OUTLINE = ( ( cast(uint)'o' << 24 ) | ( cast(uint)'u' << 16 ) | ( cast(uint)'t' << 8 ) | cast(uint)'l' ) ,
430   FT_GLYPH_FORMAT_PLOTTER = ( ( cast(uint)'p' << 24 ) | ( cast(uint)'l' << 16 ) | ( cast(uint)'o' << 8 ) | cast(uint)'t' )
431 }
432
433 enum
434 {
435     FT_RASTER_FLAG_DEFAULT  = 0x0,
436     FT_RASTER_FLAG_AA       = 0x1,
437     FT_RASTER_FLAG_DIRECT   = 0x2,
438     FT_RASTER_FLAG_CLIP     = 0x4
439 }
440
441 // ftmodapi.h (FT_MODULE_H, FT_RENDER_H)
442 enum
443 {
444     FT_MODULE_FONT_DRIVER       = 1,
445     FT_MODULE_RENDERER          = 2,
446     FT_MODULE_HINTER            = 4,
447     FT_MODULE_STYLER            = 8,
448     FT_MODULE_DRIVER_SCALABLE   = 0x100,
449     FT_MODULE_DRIVER_NO_OUTLINES= 0x200,
450     FT_MODULE_DRIVER_HAS_HINTER = 0x400
451 }
452
453 enum FT_TrueTypeEngineType
454 {
455     FT_TRUETYPE_ENGINE_TYPE_NONE = 0,
456     FT_TRUETYPE_ENGINE_TYPE_UNPATENTED,
457     FT_TRUETYPE_ENGINE_TYPE_PATENTED
458
459 }
460
461 // ftmoderr.h (FT_FREETYPE_H, FT_ERRORS_H, FT_MODULE_ERRORS_H)
462 enum
463 {
464   FT_Mod_Err_Base  = 0,
465   FT_Mod_Err_Autofit  = 0,
466   FT_Mod_Err_BDF  = 0,
467   FT_Mod_Err_Cache  = 0,
468   FT_Mod_Err_CFF  = 0,
469   FT_Mod_Err_CID  = 0,
470   FT_Mod_Err_Gzip  = 0,
471   FT_Mod_Err_LZW  = 0,
472   FT_Mod_Err_OTvalid  = 0,
473   FT_Mod_Err_PCF  = 0,
474   FT_Mod_Err_PFR  = 0,
475   FT_Mod_Err_PSaux  = 0,
476   FT_Mod_Err_PShinter  = 0,
477   FT_Mod_Err_PSnames  = 0,
478   FT_Mod_Err_Raster  = 0,
479   FT_Mod_Err_SFNT  = 0,
480   FT_Mod_Err_Smooth  = 0,
481   FT_Mod_Err_TrueType  = 0,
482   FT_Mod_Err_Type1  = 0,
483   FT_Mod_Err_Type42  = 0,
484   FT_Mod_Err_Winfonts  = 0,
485   FT_Mod_Err_Max
486 }
487
488 // ftoutln (FT_OUTLINE_H, FT_STROKER_H)
489 enum FT_Orientation
490 {
491     FT_ORIENTATION_TRUETYPE = 0,
492     FT_ORIENTATION_POSTSCRIPT = 1,
493     FT_ORIENTATION_FILL_RIGHT = FT_ORIENTATION_TRUETYPE,
494     FT_ORIENTATION_FILL_LEFT = FT_ORIENTATION_POSTSCRIPT
495 }
496
497 // t1tables.h (FT_TYPE1_TABLES_H)
498 enum T1_Blend_Flags
499  {
500  T1_BLEND_UNDERLINE_POSITION = 0,
501  T1_BLEND_UNDERLINE_THICKNESS,
502  T1_BLEND_ITALIC_ANGLE,
503  T1_BLEND_BLUE_VALUES,
504  T1_BLEND_OTHER_BLUES,
505  T1_BLEND_STANDARD_WIDTH,
506  T1_BLEND_STANDARD_HEIGHT,
507  T1_BLEND_STEM_SNAP_WIDTHS,
508  T1_BLEND_STEM_SNAP_HEIGHTS,
509  T1_BLEND_BLUE_SCALE,
510  T1_BLEND_BLUE_SHIFT,
511  T1_BLEND_FAMILY_BLUES,
512  T1_BLEND_FAMILY_OTHER_BLUES,
513  T1_BLEND_FORCE_BOLD,
514  T1_BLEND_MAX
515 }
516
517 // ttnameid.h (FT_TRUETYPE_IDS_H)
518 // NOTE: _lots_ of missing #defines which _could_ be made into enums
519
520 // tttables.h (FT_TRUETYPE_TABLES_H)
521 enum FT_Sfnt_Tag
522 {
523     ft_sfnt_head = 0,
524     ft_sfnt_maxp = 1,
525     ft_sfnt_os2  = 2,
526     ft_sfnt_hhea = 3,
527     ft_sfnt_vhea = 4,
528     ft_sfnt_post = 5,
529     ft_sfnt_pclt = 6,
530     sfnt_max
531 }
532
533 // ftbdf.h (FT_BDF_H)
534 enum BDF_PropertyType
535 {
536  BDF_PROPERTY_TYPE_NONE = 0,
537  BDF_PROPERTY_TYPE_ATOM = 1,
538  BDF_PROPERTY_TYPE_INTEGER = 2,
539  BDF_PROPERTY_TYPE_CARDINAL = 3
540 }
541
542 // ftglyph.h (FT_GLYPH_H, FT_CACHE_H, FT_STROKER_H)
543 enum FT_Glyph_BBox_Mode
544 {
545  FT_GLYPH_BBOX_UNSCALED = 0,
546  FT_GLYPH_BBOX_SUBPIXELS = 0,
547  FT_GLYPH_BBOX_GRIDFIT = 1,
548  FT_GLYPH_BBOX_TRUNCATE = 2,
549  FT_GLYPH_BBOX_PIXELS = 3
550 }
551
552 // ftotval.h (FT_OPENTYPE_VALIDATE_H)
553 enum
554 {
555   FT_VALIDATE_BASE = 0x0100,
556   FT_VALIDATE_GDEF = 0x0200,
557   FT_VALIDATE_GPOS = 0x0400,
558   FT_VALIDATE_GSUB = 0x0800,
559   FT_VALIDATE_JSTF = 0x1000,
560   FT_VALIDATE_OT   = FT_VALIDATE_BASE | FT_VALIDATE_GDEF | FT_VALIDATE_GPOS | FT_VALIDATE_GSUB | FT_VALIDATE_JSTF
561 }
562
563 // ftgxval.h (FT_GX_VALIDATE_H)
564 enum
565 {
566   // pulled just a few #defines (some aren't for external use anyway)
567   FT_VALIDATE_GX_LENGTH = 10,
568   FT_VALIDATE_GX_START = 0x4000,
569  
570   FT_VALIDATE_feat = FT_VALIDATE_GX_START << 0,
571   FT_VALIDATE_mort = FT_VALIDATE_GX_START << 1,
572   FT_VALIDATE_morx = FT_VALIDATE_GX_START << 2,
573   FT_VALIDATE_bsln = FT_VALIDATE_GX_START << 3,
574   FT_VALIDATE_just = FT_VALIDATE_GX_START << 4,
575   FT_VALIDATE_kern = FT_VALIDATE_GX_START << 5,
576   FT_VALIDATE_opbd = FT_VALIDATE_GX_START << 6,
577   FT_VALIDATE_trak = FT_VALIDATE_GX_START << 7,
578   FT_VALIDATE_prop = FT_VALIDATE_GX_START << 8,
579   FT_VALIDATE_lcar = FT_VALIDATE_GX_START << 9,
580   FT_VALIDATE_GX = FT_VALIDATE_feat | FT_VALIDATE_mort | FT_VALIDATE_morx | FT_VALIDATE_bsln | FT_VALIDATE_just | FT_VALIDATE_kern | FT_VALIDATE_opbd | FT_VALIDATE_trak | FT_VALIDATE_prop | FT_VALIDATE_lcar,
581  
582   FT_VALIDATE_MS = FT_VALIDATE_GX_START << 0,
583   FT_VALIDATE_APPLE = FT_VALIDATE_GX_START << 1,
584   FT_VALIDATE_CKERN = FT_VALIDATE_MS | FT_VALIDATE_APPLE
585 }
586
587 // ftstroke.h (FT_STROKER_H)
588 enum FT_Stroker_LineJoin
589 {
590  FT_STROKER_LINEJOIN_ROUND = 0,
591  FT_STROKER_LINEJOIN_BEVEL,
592  FT_STROKER_LINEJOIN_MITER
593 }
594
595 enum FT_Stroker_LineCap
596 {
597  FT_STROKER_LINECAP_BUTT = 0,
598  FT_STROKER_LINECAP_ROUND,
599  FT_STROKER_LINECAP_SQUARE
600 }
601
602 enum FT_StrokerBorder
603 {
604  FT_STROKER_BORDER_LEFT = 0,
605  FT_STROKER_BORDER_RIGHT
606 }
607
608 // fttrigon.h (FT_TRIGONOMETRY_H)
609 enum
610 {
611     FT_ANGLE_PI     = 180 << 16,
612     FT_ANGLE_2PI    = FT_ANGLE_PI * 2,
613     FT_ANGLE_PI2    = FT_ANGLE_PI / 2,
614     FT_ANGLE_PI4    = FT_ANGLE_PI / 4
615 }
616
617 // ftlcdfil.h (FT_LCD_FILTER_H)
618 enum FT_LcdFilter
619 {
620  FT_LCD_FILTER_NONE    = 0,
621  FT_LCD_FILTER_DEFAULT = 1,
622  FT_LCD_FILTER_LIGHT   = 2,
623  FT_LCD_FILTER_LEGACY  = 16,
624  FT_LCD_FILTER_MAX
625 }
626
627 // ftgasp.h (FT_GASP_H)
628 enum
629 {
630     FT_GASP_NO_TABLE        = -1,
631     FT_GASP_DO_GRIDFIT      = 0x01,
632     FT_GASP_DO_GRAY         = 0x02,
633     FT_GASP_SYMMETRIC_SMOOTHING = 0x08,
634     FT_GASP_SYMMETRIC_GRIDFIT   = 0x10
635 }
636
637 /+ other
638 version(Windows)
639 {
640     enum  { _JBLEN = 16 }
641 }
642 else
643 {
644     enum { _JBLEN = 10 }
645 }
646
647 enum
648 {
649   FT_Err_Ok  = 0x00,
650   FT_Err_Cannot_Open_Resource  = 0x01 + 0 ,
651   FT_Err_Unknown_File_Format  = 0x02 + 0 ,
652   FT_Err_Invalid_File_Format  = 0x03 + 0 ,
653   FT_Err_Invalid_Version  = 0x04 + 0 ,
654   FT_Err_Lower_Module_Version  = 0x05 + 0 ,
655   FT_Err_Invalid_Argument  = 0x06 + 0 ,
656   FT_Err_Unimplemented_Feature  = 0x07 + 0 ,
657   FT_Err_Invalid_Table  = 0x08 + 0 ,
658   FT_Err_Invalid_Offset  = 0x09 + 0 ,
659   FT_Err_Invalid_Glyph_Index  = 0x10 + 0 ,
660   FT_Err_Invalid_Character_Code  = 0x11 + 0 ,
661   FT_Err_Invalid_Glyph_Format  = 0x12 + 0 ,
662   FT_Err_Cannot_Render_Glyph  = 0x13 + 0 ,
663   FT_Err_Invalid_Outline  = 0x14 + 0 ,
664   FT_Err_Invalid_Composite  = 0x15 + 0 ,
665   FT_Err_Too_Many_Hints  = 0x16 + 0 ,
666   FT_Err_Invalid_Pixel_Size  = 0x17 + 0 ,
667   FT_Err_Invalid_Handle  = 0x20 + 0 ,
668   FT_Err_Invalid_Library_Handle  = 0x21 + 0 ,
669   FT_Err_Invalid_Driver_Handle  = 0x22 + 0 ,
670   FT_Err_Invalid_Face_Handle  = 0x23 + 0 ,
671