| OLD | NEW |
| (Empty) |
| 1 /***************************************************************************/ | |
| 2 /* */ | |
| 3 /* cffparse.h */ | |
| 4 /* */ | |
| 5 /* CFF token stream parser (specification) */ | |
| 6 /* */ | |
| 7 /* Copyright 1996-2003, 2011 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 __CFF_PARSE_H__ | |
| 20 #define __CFF_PARSE_H__ | |
| 21 | |
| 22 | |
| 23 #include "../../include/ft2build.h" | |
| 24 #include "cfftypes.h" | |
| 25 #include "../../include/freetype/internal/ftobjs.h" | |
| 26 | |
| 27 | |
| 28 FT_BEGIN_HEADER | |
| 29 | |
| 30 | |
| 31 #define CFF_MAX_STACK_DEPTH 96 | |
| 32 | |
| 33 #define CFF_CODE_TOPDICT 0x1000 | |
| 34 #define CFF_CODE_PRIVATE 0x2000 | |
| 35 | |
| 36 | |
| 37 typedef struct CFF_ParserRec_ | |
| 38 { | |
| 39 FT_Library library; | |
| 40 FT_Byte* start; | |
| 41 FT_Byte* limit; | |
| 42 FT_Byte* cursor; | |
| 43 | |
| 44 FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; | |
| 45 FT_Byte** top; | |
| 46 | |
| 47 FT_UInt object_code; | |
| 48 void* object; | |
| 49 | |
| 50 } CFF_ParserRec, *CFF_Parser; | |
| 51 | |
| 52 | |
| 53 FT_LOCAL( void ) | |
| 54 cff_parser_init( CFF_Parser parser, | |
| 55 FT_UInt code, | |
| 56 void* object, | |
| 57 FT_Library library); | |
| 58 | |
| 59 FT_LOCAL( FT_Error ) | |
| 60 cff_parser_run( CFF_Parser parser, | |
| 61 FT_Byte* start, | |
| 62 FT_Byte* limit ); | |
| 63 | |
| 64 | |
| 65 enum | |
| 66 { | |
| 67 cff_kind_none = 0, | |
| 68 cff_kind_num, | |
| 69 cff_kind_fixed, | |
| 70 cff_kind_fixed_thousand, | |
| 71 cff_kind_string, | |
| 72 cff_kind_bool, | |
| 73 cff_kind_delta, | |
| 74 cff_kind_callback, | |
| 75 | |
| 76 cff_kind_max /* do not remove */ | |
| 77 }; | |
| 78 | |
| 79 | |
| 80 /* now generate handlers for the most simple fields */ | |
| 81 typedef FT_Error (*CFF_Field_Reader)( CFF_Parser parser ); | |
| 82 | |
| 83 typedef struct CFF_Field_Handler_ | |
| 84 { | |
| 85 int kind; | |
| 86 int code; | |
| 87 FT_UInt offset; | |
| 88 FT_Byte size; | |
| 89 CFF_Field_Reader reader; | |
| 90 FT_UInt array_max; | |
| 91 FT_UInt count_offset; | |
| 92 | |
| 93 #ifdef FT_DEBUG_LEVEL_TRACE | |
| 94 const char* id; | |
| 95 #endif | |
| 96 | |
| 97 } CFF_Field_Handler; | |
| 98 | |
| 99 | |
| 100 FT_END_HEADER | |
| 101 | |
| 102 | |
| 103 #endif /* __CFF_PARSE_H__ */ | |
| 104 | |
| 105 | |
| 106 /* END */ | |
| OLD | NEW |