1*37da2899SCharles.Forsyth /***************************************************************************/ 2*37da2899SCharles.Forsyth /* */ 3*37da2899SCharles.Forsyth /* ftdriver.h */ 4*37da2899SCharles.Forsyth /* */ 5*37da2899SCharles.Forsyth /* FreeType font driver interface (specification). */ 6*37da2899SCharles.Forsyth /* */ 7*37da2899SCharles.Forsyth /* Copyright 1996-2001, 2002 by */ 8*37da2899SCharles.Forsyth /* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9*37da2899SCharles.Forsyth /* */ 10*37da2899SCharles.Forsyth /* This file is part of the FreeType project, and may only be used, */ 11*37da2899SCharles.Forsyth /* modified, and distributed under the terms of the FreeType project */ 12*37da2899SCharles.Forsyth /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13*37da2899SCharles.Forsyth /* this file you indicate that you have read the license and */ 14*37da2899SCharles.Forsyth /* understand and accept it fully. */ 15*37da2899SCharles.Forsyth /* */ 16*37da2899SCharles.Forsyth /***************************************************************************/ 17*37da2899SCharles.Forsyth 18*37da2899SCharles.Forsyth 19*37da2899SCharles.Forsyth #ifndef __FTDRIVER_H__ 20*37da2899SCharles.Forsyth #define __FTDRIVER_H__ 21*37da2899SCharles.Forsyth 22*37da2899SCharles.Forsyth 23*37da2899SCharles.Forsyth #include <ft2build.h> 24*37da2899SCharles.Forsyth #include FT_MODULE_H 25*37da2899SCharles.Forsyth 26*37da2899SCharles.Forsyth 27*37da2899SCharles.Forsyth FT_BEGIN_HEADER 28*37da2899SCharles.Forsyth 29*37da2899SCharles.Forsyth 30*37da2899SCharles.Forsyth typedef FT_Error 31*37da2899SCharles.Forsyth (*FT_Face_InitFunc)( FT_Stream stream, 32*37da2899SCharles.Forsyth FT_Face face, 33*37da2899SCharles.Forsyth FT_Int typeface_index, 34*37da2899SCharles.Forsyth FT_Int num_params, 35*37da2899SCharles.Forsyth FT_Parameter* parameters ); 36*37da2899SCharles.Forsyth 37*37da2899SCharles.Forsyth typedef void 38*37da2899SCharles.Forsyth (*FT_Face_DoneFunc)( FT_Face face ); 39*37da2899SCharles.Forsyth 40*37da2899SCharles.Forsyth 41*37da2899SCharles.Forsyth typedef FT_Error 42*37da2899SCharles.Forsyth (*FT_Size_InitFunc)( FT_Size size ); 43*37da2899SCharles.Forsyth 44*37da2899SCharles.Forsyth typedef void 45*37da2899SCharles.Forsyth (*FT_Size_DoneFunc)( FT_Size size ); 46*37da2899SCharles.Forsyth 47*37da2899SCharles.Forsyth 48*37da2899SCharles.Forsyth typedef FT_Error 49*37da2899SCharles.Forsyth (*FT_Slot_InitFunc)( FT_GlyphSlot slot ); 50*37da2899SCharles.Forsyth 51*37da2899SCharles.Forsyth typedef void 52*37da2899SCharles.Forsyth (*FT_Slot_DoneFunc)( FT_GlyphSlot slot ); 53*37da2899SCharles.Forsyth 54*37da2899SCharles.Forsyth 55*37da2899SCharles.Forsyth typedef FT_Error 56*37da2899SCharles.Forsyth (*FT_Size_ResetPointsFunc)( FT_Size size, 57*37da2899SCharles.Forsyth FT_F26Dot6 char_width, 58*37da2899SCharles.Forsyth FT_F26Dot6 char_height, 59*37da2899SCharles.Forsyth FT_UInt horz_resolution, 60*37da2899SCharles.Forsyth FT_UInt vert_resolution ); 61*37da2899SCharles.Forsyth 62*37da2899SCharles.Forsyth typedef FT_Error 63*37da2899SCharles.Forsyth (*FT_Size_ResetPixelsFunc)( FT_Size size, 64*37da2899SCharles.Forsyth FT_UInt pixel_width, 65*37da2899SCharles.Forsyth FT_UInt pixel_height ); 66*37da2899SCharles.Forsyth 67*37da2899SCharles.Forsyth typedef FT_Error 68*37da2899SCharles.Forsyth (*FT_Slot_LoadFunc)( FT_GlyphSlot slot, 69*37da2899SCharles.Forsyth FT_Size size, 70*37da2899SCharles.Forsyth FT_UInt glyph_index, 71*37da2899SCharles.Forsyth FT_Int32 load_flags ); 72*37da2899SCharles.Forsyth 73*37da2899SCharles.Forsyth 74*37da2899SCharles.Forsyth typedef FT_UInt 75*37da2899SCharles.Forsyth (*FT_CharMap_CharIndexFunc)( FT_CharMap charmap, 76*37da2899SCharles.Forsyth FT_Long charcode ); 77*37da2899SCharles.Forsyth 78*37da2899SCharles.Forsyth typedef FT_Long 79*37da2899SCharles.Forsyth (*FT_CharMap_CharNextFunc)( FT_CharMap charmap, 80*37da2899SCharles.Forsyth FT_Long charcode ); 81*37da2899SCharles.Forsyth 82*37da2899SCharles.Forsyth typedef FT_Error 83*37da2899SCharles.Forsyth (*FT_Face_GetKerningFunc)( FT_Face face, 84*37da2899SCharles.Forsyth FT_UInt left_glyph, 85*37da2899SCharles.Forsyth FT_UInt right_glyph, 86*37da2899SCharles.Forsyth FT_Vector* kerning ); 87*37da2899SCharles.Forsyth 88*37da2899SCharles.Forsyth 89*37da2899SCharles.Forsyth typedef FT_Error 90*37da2899SCharles.Forsyth (*FT_Face_AttachFunc)( FT_Face face, 91*37da2899SCharles.Forsyth FT_Stream stream ); 92*37da2899SCharles.Forsyth 93*37da2899SCharles.Forsyth 94*37da2899SCharles.Forsyth typedef FT_Error 95*37da2899SCharles.Forsyth (*FT_Face_GetAdvancesFunc)( FT_Face face, 96*37da2899SCharles.Forsyth FT_UInt first, 97*37da2899SCharles.Forsyth FT_UInt count, 98*37da2899SCharles.Forsyth FT_Bool vertical, 99*37da2899SCharles.Forsyth FT_UShort* advances ); 100*37da2899SCharles.Forsyth 101*37da2899SCharles.Forsyth 102*37da2899SCharles.Forsyth /*************************************************************************/ 103*37da2899SCharles.Forsyth /* */ 104*37da2899SCharles.Forsyth /* <Struct> */ 105*37da2899SCharles.Forsyth /* FT_Driver_ClassRec */ 106*37da2899SCharles.Forsyth /* */ 107*37da2899SCharles.Forsyth /* <Description> */ 108*37da2899SCharles.Forsyth /* The font driver class. This structure mostly contains pointers to */ 109*37da2899SCharles.Forsyth /* driver methods. */ 110*37da2899SCharles.Forsyth /* */ 111*37da2899SCharles.Forsyth /* <Fields> */ 112*37da2899SCharles.Forsyth /* root :: The parent module. */ 113*37da2899SCharles.Forsyth /* */ 114*37da2899SCharles.Forsyth /* face_object_size :: The size of a face object in bytes. */ 115*37da2899SCharles.Forsyth /* */ 116*37da2899SCharles.Forsyth /* size_object_size :: The size of a size object in bytes. */ 117*37da2899SCharles.Forsyth /* */ 118*37da2899SCharles.Forsyth /* slot_object_size :: The size of a glyph object in bytes. */ 119*37da2899SCharles.Forsyth /* */ 120*37da2899SCharles.Forsyth /* init_face :: The format-specific face constructor. */ 121*37da2899SCharles.Forsyth /* */ 122*37da2899SCharles.Forsyth /* done_face :: The format-specific face destructor. */ 123*37da2899SCharles.Forsyth /* */ 124*37da2899SCharles.Forsyth /* init_size :: The format-specific size constructor. */ 125*37da2899SCharles.Forsyth /* */ 126*37da2899SCharles.Forsyth /* done_size :: The format-specific size destructor. */ 127*37da2899SCharles.Forsyth /* */ 128*37da2899SCharles.Forsyth /* init_slot :: The format-specific slot constructor. */ 129*37da2899SCharles.Forsyth /* */ 130*37da2899SCharles.Forsyth /* done_slot :: The format-specific slot destructor. */ 131*37da2899SCharles.Forsyth /* */ 132*37da2899SCharles.Forsyth /* set_char_sizes :: A handle to a function used to set the new */ 133*37da2899SCharles.Forsyth /* character size in points + resolution. Can be */ 134*37da2899SCharles.Forsyth /* set to 0 to indicate default behaviour. */ 135*37da2899SCharles.Forsyth /* */ 136*37da2899SCharles.Forsyth /* set_pixel_sizes :: A handle to a function used to set the new */ 137*37da2899SCharles.Forsyth /* character size in pixels. Can be set to 0 to */ 138*37da2899SCharles.Forsyth /* indicate default behaviour. */ 139*37da2899SCharles.Forsyth /* */ 140*37da2899SCharles.Forsyth /* load_glyph :: A function handle to load a given glyph image */ 141*37da2899SCharles.Forsyth /* in a slot. This field is mandatory! */ 142*37da2899SCharles.Forsyth /* */ 143*37da2899SCharles.Forsyth /* get_char_index :: A function handle to return the glyph index of */ 144*37da2899SCharles.Forsyth /* a given character for a given charmap. This */ 145*37da2899SCharles.Forsyth /* field is mandatory! */ 146*37da2899SCharles.Forsyth /* */ 147*37da2899SCharles.Forsyth /* get_kerning :: A function handle to return the unscaled */ 148*37da2899SCharles.Forsyth /* kerning for a given pair of glyphs. Can be */ 149*37da2899SCharles.Forsyth /* set to 0 if the format doesn't support */ 150*37da2899SCharles.Forsyth /* kerning. */ 151*37da2899SCharles.Forsyth /* */ 152*37da2899SCharles.Forsyth /* attach_file :: This function handle is used to read */ 153*37da2899SCharles.Forsyth /* additional data for a face from another */ 154*37da2899SCharles.Forsyth /* file/stream. For example, this can be used to */ 155*37da2899SCharles.Forsyth /* add data from AFM or PFM files on a Type 1 */ 156*37da2899SCharles.Forsyth /* face, or a CIDMap on a CID-keyed face. */ 157*37da2899SCharles.Forsyth /* */ 158*37da2899SCharles.Forsyth /* get_advances :: A function handle used to return the advances */ 159*37da2899SCharles.Forsyth /* of 'count' glyphs, starting at `index'. the */ 160*37da2899SCharles.Forsyth /* `vertical' flags must be set when vertical */ 161*37da2899SCharles.Forsyth /* advances are queried. The advances buffer is */ 162*37da2899SCharles.Forsyth /* caller-allocated. */ 163*37da2899SCharles.Forsyth /* */ 164*37da2899SCharles.Forsyth /* <Note> */ 165*37da2899SCharles.Forsyth /* Most function pointers, with the exception of `load_glyph' and */ 166*37da2899SCharles.Forsyth /* `get_char_index' can be set to 0 to indicate a default behaviour. */ 167*37da2899SCharles.Forsyth /* */ 168*37da2899SCharles.Forsyth typedef struct FT_Driver_ClassRec_ 169*37da2899SCharles.Forsyth { 170*37da2899SCharles.Forsyth FT_Module_Class root; 171*37da2899SCharles.Forsyth 172*37da2899SCharles.Forsyth FT_Int face_object_size; 173*37da2899SCharles.Forsyth FT_Int size_object_size; 174*37da2899SCharles.Forsyth FT_Int slot_object_size; 175*37da2899SCharles.Forsyth 176*37da2899SCharles.Forsyth FT_Face_InitFunc init_face; 177*37da2899SCharles.Forsyth FT_Face_DoneFunc done_face; 178*37da2899SCharles.Forsyth 179*37da2899SCharles.Forsyth FT_Size_InitFunc init_size; 180*37da2899SCharles.Forsyth FT_Size_DoneFunc done_size; 181*37da2899SCharles.Forsyth 182*37da2899SCharles.Forsyth FT_Slot_InitFunc init_slot; 183*37da2899SCharles.Forsyth FT_Slot_DoneFunc done_slot; 184*37da2899SCharles.Forsyth 185*37da2899SCharles.Forsyth FT_Size_ResetPointsFunc set_char_sizes; 186*37da2899SCharles.Forsyth FT_Size_ResetPixelsFunc set_pixel_sizes; 187*37da2899SCharles.Forsyth 188*37da2899SCharles.Forsyth FT_Slot_LoadFunc load_glyph; 189*37da2899SCharles.Forsyth 190*37da2899SCharles.Forsyth FT_Face_GetKerningFunc get_kerning; 191*37da2899SCharles.Forsyth FT_Face_AttachFunc attach_file; 192*37da2899SCharles.Forsyth FT_Face_GetAdvancesFunc get_advances; 193*37da2899SCharles.Forsyth 194*37da2899SCharles.Forsyth } FT_Driver_ClassRec, *FT_Driver_Class; 195*37da2899SCharles.Forsyth 196*37da2899SCharles.Forsyth 197*37da2899SCharles.Forsyth FT_END_HEADER 198*37da2899SCharles.Forsyth 199*37da2899SCharles.Forsyth #endif /* __FTDRIVER_H__ */ 200*37da2899SCharles.Forsyth 201*37da2899SCharles.Forsyth 202*37da2899SCharles.Forsyth /* END */ 203