1 /***************************************************************************/ 2 /* */ 3 /* cffparse.h */ 4 /* */ 5 /* CFF token stream parser (specification) */ 6 /* */ 7 /* Copyright 1996-2001, 2002 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 <ft2build.h> 24 #include FT_INTERNAL_CFF_TYPES_H 25 #include FT_INTERNAL_OBJECTS_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_Byte* start; 40 FT_Byte* limit; 41 FT_Byte* cursor; 42 43 FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; 44 FT_Byte** top; 45 46 FT_UInt object_code; 47 void* object; 48 49 } CFF_ParserRec, *CFF_Parser; 50 51 52 FT_LOCAL( void ) 53 cff_parser_init( CFF_Parser parser, 54 FT_UInt code, 55 void* object ); 56 57 FT_LOCAL( FT_Error ) 58 cff_parser_run( CFF_Parser parser, 59 FT_Byte* start, 60 FT_Byte* limit ); 61 62 63 FT_END_HEADER 64 65 66 #endif /* __CFF_PARSE_H__ */ 67 68 69 /* END */ 70