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 |