0,0 → 1,106 |
/***************************************************************************/ |
/* */ |
/* cffparse.h */ |
/* */ |
/* CFF token stream parser (specification) */ |
/* */ |
/* Copyright 1996-2003, 2011 by */ |
/* David Turner, Robert Wilhelm, and Werner Lemberg. */ |
/* */ |
/* This file is part of the FreeType project, and may only be used, */ |
/* modified, and distributed under the terms of the FreeType project */ |
/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ |
/* this file you indicate that you have read the license and */ |
/* understand and accept it fully. */ |
/* */ |
/***************************************************************************/ |
|
|
#ifndef __CFF_PARSE_H__ |
#define __CFF_PARSE_H__ |
|
|
#include <ft2build.h> |
#include "cfftypes.h" |
#include FT_INTERNAL_OBJECTS_H |
|
|
FT_BEGIN_HEADER |
|
|
#define CFF_MAX_STACK_DEPTH 96 |
|
#define CFF_CODE_TOPDICT 0x1000 |
#define CFF_CODE_PRIVATE 0x2000 |
|
|
typedef struct CFF_ParserRec_ |
{ |
FT_Library library; |
FT_Byte* start; |
FT_Byte* limit; |
FT_Byte* cursor; |
|
FT_Byte* stack[CFF_MAX_STACK_DEPTH + 1]; |
FT_Byte** top; |
|
FT_UInt object_code; |
void* object; |
|
} CFF_ParserRec, *CFF_Parser; |
|
|
FT_LOCAL( void ) |
cff_parser_init( CFF_Parser parser, |
FT_UInt code, |
void* object, |
FT_Library library); |
|
FT_LOCAL( FT_Error ) |
cff_parser_run( CFF_Parser parser, |
FT_Byte* start, |
FT_Byte* limit ); |
|
|
enum |
{ |
cff_kind_none = 0, |
cff_kind_num, |
cff_kind_fixed, |
cff_kind_fixed_thousand, |
cff_kind_string, |
cff_kind_bool, |
cff_kind_delta, |
cff_kind_callback, |
|
cff_kind_max /* do not remove */ |
}; |
|
|
/* now generate handlers for the most simple fields */ |
typedef FT_Error (*CFF_Field_Reader)( CFF_Parser parser ); |
|
typedef struct CFF_Field_Handler_ |
{ |
int kind; |
int code; |
FT_UInt offset; |
FT_Byte size; |
CFF_Field_Reader reader; |
FT_UInt array_max; |
FT_UInt count_offset; |
|
#ifdef FT_DEBUG_LEVEL_TRACE |
const char* id; |
#endif |
|
} CFF_Field_Handler; |
|
|
FT_END_HEADER |
|
|
#endif /* __CFF_PARSE_H__ */ |
|
|
/* END */ |