| OLD | NEW |
| (Empty) |
| 1 /***************************************************************************/ | |
| 2 /* */ | |
| 3 /* ftgloadr.h */ | |
| 4 /* */ | |
| 5 /* The FreeType glyph loader (specification). */ | |
| 6 /* */ | |
| 7 /* Copyright 2002, 2003, 2005, 2006 by */ | |
| 8 /* David Turner, Robert Wilhelm, and Werner Lemberg */ | |
| 9 /* */ | |
| 10 /* This file is part of the FreeType project, and may only be used, */ | |
| 11 /* modified, and distributed under the terms of the FreeType project */ | |
| 12 /* license, LICENSE.TXT. By continuing to use, modify, or distribute */ | |
| 13 /* this file you indicate that you have read the license and */ | |
| 14 /* understand and accept it fully. */ | |
| 15 /* */ | |
| 16 /***************************************************************************/ | |
| 17 | |
| 18 | |
| 19 #ifndef __FTGLOADR_H__ | |
| 20 #define __FTGLOADR_H__ | |
| 21 | |
| 22 | |
| 23 #include <ft2build.h> | |
| 24 #include FT_FREETYPE_H | |
| 25 | |
| 26 | |
| 27 FT_BEGIN_HEADER | |
| 28 | |
| 29 | |
| 30 /*************************************************************************/ | |
| 31 /* */ | |
| 32 /* <Struct> */ | |
| 33 /* FT_GlyphLoader */ | |
| 34 /* */ | |
| 35 /* <Description> */ | |
| 36 /* The glyph loader is an internal object used to load several glyphs */ | |
| 37 /* together (for example, in the case of composites). */ | |
| 38 /* */ | |
| 39 /* <Note> */ | |
| 40 /* The glyph loader implementation is not part of the high-level API, */ | |
| 41 /* hence the forward structure declaration. */ | |
| 42 /* */ | |
| 43 typedef struct FT_GlyphLoaderRec_* FT_GlyphLoader ; | |
| 44 | |
| 45 | |
| 46 #if 0 /* moved to freetype.h in version 2.2 */ | |
| 47 #define FT_SUBGLYPH_FLAG_ARGS_ARE_WORDS 1 | |
| 48 #define FT_SUBGLYPH_FLAG_ARGS_ARE_XY_VALUES 2 | |
| 49 #define FT_SUBGLYPH_FLAG_ROUND_XY_TO_GRID 4 | |
| 50 #define FT_SUBGLYPH_FLAG_SCALE 8 | |
| 51 #define FT_SUBGLYPH_FLAG_XY_SCALE 0x40 | |
| 52 #define FT_SUBGLYPH_FLAG_2X2 0x80 | |
| 53 #define FT_SUBGLYPH_FLAG_USE_MY_METRICS 0x200 | |
| 54 #endif | |
| 55 | |
| 56 | |
| 57 typedef struct FT_SubGlyphRec_ | |
| 58 { | |
| 59 FT_Int index; | |
| 60 FT_UShort flags; | |
| 61 FT_Int arg1; | |
| 62 FT_Int arg2; | |
| 63 FT_Matrix transform; | |
| 64 | |
| 65 } FT_SubGlyphRec; | |
| 66 | |
| 67 | |
| 68 typedef struct FT_GlyphLoadRec_ | |
| 69 { | |
| 70 FT_Outline outline; /* outline */ | |
| 71 FT_Vector* extra_points; /* extra points table */ | |
| 72 FT_Vector* extra_points2; /* second extra points table */ | |
| 73 FT_UInt num_subglyphs; /* number of subglyphs */ | |
| 74 FT_SubGlyph subglyphs; /* subglyphs */ | |
| 75 | |
| 76 } FT_GlyphLoadRec, *FT_GlyphLoad; | |
| 77 | |
| 78 | |
| 79 typedef struct FT_GlyphLoaderRec_ | |
| 80 { | |
| 81 FT_Memory memory; | |
| 82 FT_UInt max_points; | |
| 83 FT_UInt max_contours; | |
| 84 FT_UInt max_subglyphs; | |
| 85 FT_Bool use_extra; | |
| 86 | |
| 87 FT_GlyphLoadRec base; | |
| 88 FT_GlyphLoadRec current; | |
| 89 | |
| 90 void* other; /* for possible future extension? */ | |
| 91 | |
| 92 } FT_GlyphLoaderRec; | |
| 93 | |
| 94 | |
| 95 /* create new empty glyph loader */ | |
| 96 FT_BASE( FT_Error ) | |
| 97 FT_GlyphLoader_New( FT_Memory memory, | |
| 98 FT_GlyphLoader *aloader ); | |
| 99 | |
| 100 /* add an extra points table to a glyph loader */ | |
| 101 FT_BASE( FT_Error ) | |
| 102 FT_GlyphLoader_CreateExtra( FT_GlyphLoader loader ); | |
| 103 | |
| 104 /* destroy a glyph loader */ | |
| 105 FT_BASE( void ) | |
| 106 FT_GlyphLoader_Done( FT_GlyphLoader loader ); | |
| 107 | |
| 108 /* reset a glyph loader (frees everything int it) */ | |
| 109 FT_BASE( void ) | |
| 110 FT_GlyphLoader_Reset( FT_GlyphLoader loader ); | |
| 111 | |
| 112 /* rewind a glyph loader */ | |
| 113 FT_BASE( void ) | |
| 114 FT_GlyphLoader_Rewind( FT_GlyphLoader loader ); | |
| 115 | |
| 116 /* check that there is enough space to add `n_points' and `n_contours' */ | |
| 117 /* to the glyph loader */ | |
| 118 FT_BASE( FT_Error ) | |
| 119 FT_GlyphLoader_CheckPoints( FT_GlyphLoader loader, | |
| 120 FT_UInt n_points, | |
| 121 FT_UInt n_contours ); | |
| 122 | |
| 123 | |
| 124 #define FT_GLYPHLOADER_CHECK_P( _loader, _count ) \ | |
| 125 ( (_count) == 0 || \ | |
| 126 ( (_loader)->base.outline.n_points + \ | |
| 127 (_loader)->current.outline.n_points + \ | |
| 128 (unsigned long)(_count) ) <= (_loader)->max_points ) | |
| 129 | |
| 130 #define FT_GLYPHLOADER_CHECK_C( _loader, _count ) \ | |
| 131 ( (_count) == 0 || \ | |
| 132 ( (_loader)->base.outline.n_contours + \ | |
| 133 (_loader)->current.outline.n_contours + \ | |
| 134 (unsigned long)(_count)) <= (_loader)->max_contours ) | |
| 135 | |
| 136 #define FT_GLYPHLOADER_CHECK_POINTS( _loader, _points, _contours ) \ | |
| 137 ( ( FT_GLYPHLOADER_CHECK_P( _loader, _points ) && \ | |
| 138 FT_GLYPHLOADER_CHECK_C( _loader, _contours ) ) \ | |
| 139 ? 0 \ | |
| 140 : FT_GlyphLoader_CheckPoints( (_loader), (_points), (_contours) ) ) | |
| 141 | |
| 142 | |
| 143 /* check that there is enough space to add `n_subs' sub-glyphs to */ | |
| 144 /* a glyph loader */ | |
| 145 FT_BASE( FT_Error ) | |
| 146 FT_GlyphLoader_CheckSubGlyphs( FT_GlyphLoader loader, | |
| 147 FT_UInt n_subs ); | |
| 148 | |
| 149 /* prepare a glyph loader, i.e. empty the current glyph */ | |
| 150 FT_BASE( void ) | |
| 151 FT_GlyphLoader_Prepare( FT_GlyphLoader loader ); | |
| 152 | |
| 153 /* add the current glyph to the base glyph */ | |
| 154 FT_BASE( void ) | |
| 155 FT_GlyphLoader_Add( FT_GlyphLoader loader ); | |
| 156 | |
| 157 /* copy points from one glyph loader to another */ | |
| 158 FT_BASE( FT_Error ) | |
| 159 FT_GlyphLoader_CopyPoints( FT_GlyphLoader target, | |
| 160 FT_GlyphLoader source ); | |
| 161 | |
| 162 /* */ | |
| 163 | |
| 164 | |
| 165 FT_END_HEADER | |
| 166 | |
| 167 #endif /* __FTGLOADR_H__ */ | |
| 168 | |
| 169 | |
| 170 /* END */ | |
| OLD | NEW |