1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* t1parse.h */ 4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Type 1 parser (specification). */ 6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* Copyright 1996-2001, 2002, 2003, 2008 by */ 8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* This file is part of the FreeType project, and may only be used, */ 11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* modified, and distributed under the terms of the FreeType project */ 12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* this file you indicate that you have read the license and */ 14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* understand and accept it fully. */ 15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* */ 16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/***************************************************************************/ 17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef __T1PARSE_H__ 20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define __T1PARSE_H__ 21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/ft2build.h" 24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/t1types.h" 25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../../include/freetype/internal/ftstream.h" 26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 28ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_BEGIN_HEADER 29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /*************************************************************************/ 32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Struct> */ 34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* T1_ParserRec */ 35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Description> */ 37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* A PS_ParserRec is an object used to parse a Type 1 fonts very */ 38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* quickly. */ 39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* <Fields> */ 41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* root :: The root parser. */ 42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* stream :: The current input stream. */ 44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* base_dict :: A pointer to the top-level dictionary. */ 46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* base_len :: The length in bytes of the top dictionary. */ 48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* private_dict :: A pointer to the private dictionary. */ 50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* private_len :: The length in bytes of the private dictionary. */ 52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in_pfb :: A boolean. Indicates that we are handling a PFB */ 54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* file. */ 55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* in_memory :: A boolean. Indicates a memory-based stream. */ 57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* single_block :: A boolean. Indicates that the private dictionary */ 59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* is stored in lieu of the base dictionary. */ 60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov /* */ 61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov typedef struct T1_ParserRec_ 62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { 63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PS_ParserRec root; 64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream; 65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Byte* base_dict; 67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong base_len; 68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Byte* private_dict; 70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_ULong private_len; 71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool in_pfb; 73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool in_memory; 74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Bool single_block; 75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } T1_ParserRec, *T1_Parser; 77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Add_Table( p, i, o, l ) (p)->funcs.add( (p), i, o, l ) 80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Done_Table( p ) \ 81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do \ 82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( (p)->funcs.done ) \ 84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->funcs.done( p ); \ 85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } while ( 0 ) 86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Release_Table( p ) \ 87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov do \ 88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov { \ 89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov if ( (p)->funcs.release ) \ 90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->funcs.release( p ); \ 91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov } while ( 0 ) 92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Skip_Spaces( p ) (p)->root.funcs.skip_spaces( &(p)->root ) 95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Skip_PS_Token( p ) (p)->root.funcs.skip_PS_token( &(p)->root ) 96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToInt( p ) (p)->root.funcs.to_int( &(p)->root ) 98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToFixed( p, t ) (p)->root.funcs.to_fixed( &(p)->root, t ) 99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToCoordArray( p, m, c ) \ 101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.to_coord_array( &(p)->root, m, c ) 102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToFixedArray( p, m, f, t ) \ 103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t ) 104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToToken( p, t ) \ 105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.to_token( &(p)->root, t ) 106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_ToTokenArray( p, t, m, c ) \ 107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.to_token_array( &(p)->root, t, m, c ) 108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Load_Field( p, f, o, m, pf ) \ 110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.load_field( &(p)->root, f, o, m, pf ) 111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define T1_Load_Field_Table( p, f, o, m, pf ) \ 113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov (p)->root.funcs.load_field_table( &(p)->root, f, o, m, pf ) 114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_LOCAL( FT_Error ) 117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov T1_New_Parser( T1_Parser parser, 118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Stream stream, 119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_Memory memory, 120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PSAux_Service psaux ); 121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_LOCAL( FT_Error ) 123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov T1_Get_Private_Dict( T1_Parser parser, 124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov PSAux_Service psaux ); 125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov FT_LOCAL( void ) 127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov T1_Finalize_Parser( T1_Parser parser ); 128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 130ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFT_END_HEADER 131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif /* __T1PARSE_H__ */ 133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov 135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov/* END */ 136