1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* psaux.h */ 4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* Auxiliary functions and data structures related to PostScript fonts */ 6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* (specification). */ 7049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 8727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease/* Copyright 1996-2004, 2006, 2008, 2009, 2012 by */ 9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* David Turner, Robert Wilhelm, and Werner Lemberg. */ 10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* This file is part of the FreeType project, and may only be used, */ 12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* modified, and distributed under the terms of the FreeType project */ 13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* license, LICENSE.TXT. By continuing to use, modify, or distribute */ 14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* this file you indicate that you have read the license and */ 15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* understand and accept it fully. */ 16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* */ 17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/***************************************************************************/ 18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#ifndef __PSAUX_H__ 21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define __PSAUX_H__ 22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include <ft2build.h> 25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_OBJECTS_H 26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_INTERNAL_TYPE1_TYPES_H 27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#include FT_SERVICE_POSTSCRIPT_CMAPS_H 28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_BEGIN_HEADER 31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 33049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** T1_TABLE *****/ 37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_TableRec_* PS_Table; 43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct PS_Table_FuncsRec_* PS_Table_Funcs; 44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PS_Table_FuncsRec */ 50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A set of function pointers to manage PS_Table objects. */ 53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_init :: Used to initialize a table. */ 56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_done :: Finalizes resp. destroy a given table. */ 58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_add :: Adds a new object to a table. */ 60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* table_release :: Releases table data, then finalizes it. */ 62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_Table_FuncsRec_ 64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*init)( PS_Table table, 67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int count, 68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory ); 69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*done)( PS_Table table ); 72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*add)( PS_Table table, 75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int idx, 76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* object, 77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PtrDist length ); 78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*release)( PS_Table table ); 81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_Table_FuncsRec; 83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PS_TableRec */ 89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A PS_Table is a simple object used to store an array of objects in */ 92049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a single memory block. */ 93049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 94049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 95049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* block :: The address in memory of the growheap's block. This */ 96049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* can change between two object adds, due to */ 97049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* reallocation. */ 98049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 99049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cursor :: The current top of the grow heap within its block. */ 100049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 101049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* capacity :: The current size of the heap block. Increments by */ 102049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* 1kByte chunks. */ 103049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 104727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* init :: Set to 0xDEADBEEF if `elements' and `lengths' have */ 105727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* been allocated. */ 106727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* */ 107049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_elems :: The maximum number of elements in table. */ 108049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 109049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* num_elems :: The current number of elements in table. */ 110049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 111049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* elements :: A table of element addresses within the block. */ 112049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 113049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* lengths :: A table of element sizes within the block. */ 114049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 115049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: The object used for memory operations */ 116049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* (alloc/realloc). */ 117049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 118049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* funcs :: A table of method pointers for this object. */ 119049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 120049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_TableRec_ 121049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 122049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* block; /* current memory block */ 123049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Offset cursor; /* current cursor in memory block */ 124049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Offset capacity; /* current size of memory block */ 125049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long init; 126049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 127049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int max_elems; 128049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int num_elems; 129049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte** elements; /* addresses of table elements */ 130049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PtrDist* lengths; /* lengths of table elements */ 131049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 132049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 133049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Table_FuncsRec funcs; 134049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 135049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_TableRec; 136049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 137049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 138049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 139049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 140049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 141049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** T1 FIELDS & TOKENS *****/ 142049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 143049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 144049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 145049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 146049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_ParserRec_* PS_Parser; 147049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 148049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_TokenRec_* T1_Token; 149049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 150049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_FieldRec_* T1_Field; 151049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 152049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 153049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* simple enumeration type used to identify token types */ 154049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum T1_TokenType_ 155049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 156049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_NONE = 0, 157049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_ANY, 158049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_STRING, 159049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_ARRAY, 160049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_KEY, /* aka `name' */ 161049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 162049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* do not remove */ 163049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TOKEN_TYPE_MAX 164049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 165049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_TokenType; 166049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 167049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 168049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* a simple structure used to identify tokens */ 169049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_TokenRec_ 170049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 171049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* start; /* first character of token in input stream */ 172049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit; /* first character after the token */ 173049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_TokenType type; /* type of token */ 174049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 175049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_TokenRec; 176049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 177049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 178049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* enumeration type used to identify object fields */ 179049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum T1_FieldType_ 180049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 181049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_NONE = 0, 182049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_BOOL, 183049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_INTEGER, 184049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_FIXED, 185049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_FIXED_1000, 186049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_STRING, 187049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_KEY, 188049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_BBOX, 189727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease T1_FIELD_TYPE_MM_BBOX, 190049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_INTEGER_ARRAY, 191049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_FIXED_ARRAY, 192049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_CALLBACK, 193049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 194049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* do not remove */ 195049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_TYPE_MAX 196049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 197049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_FieldType; 198049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 199049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 200049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum T1_FieldLocation_ 201049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 202049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_CID_INFO, 203049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_FONT_DICT, 2040a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project T1_FIELD_LOCATION_FONT_EXTRA, 205049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_FONT_INFO, 206049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_PRIVATE, 207049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_BBOX, 208049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_LOADER, 209049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_FACE, 210049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_BLEND, 211049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 212049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* do not remove */ 213049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FIELD_LOCATION_MAX 214049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 215049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_FieldLocation; 216049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 217049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 218049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 219049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Field_ParseFunc)( FT_Face face, 220049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pointer parser ); 221049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 222049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 223049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* structure type used to model object fields */ 224049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_FieldRec_ 225049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 226049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const char* ident; /* field identifier */ 227049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FieldLocation location; 228049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_FieldType type; /* type of field */ 229049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Field_ParseFunc reader; 230049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt offset; /* offset of field in object */ 231049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte size; /* size of field in bytes */ 232727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease FT_UInt array_max; /* maximum number of elements for */ 233049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* array */ 234049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt count_offset; /* offset of element count for */ 2350a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* arrays; must not be zero if in */ 2360a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* use -- in other words, a */ 2370a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* `num_FOO' element must not */ 2380a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* start the used structure if we */ 2390a9d06e2b5cf75c3d6ba958026bfdf4745f576d6The Android Open Source Project /* parse a `FOO' array */ 240049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt dict; /* where we expect it */ 241049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_FieldRec; 242049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 243049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_DICT_FONTDICT ( 1 << 0 ) /* also FontInfo and FDArray */ 244049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_DICT_PRIVATE ( 1 << 1 ) 245049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 246049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 247049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 248049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_NEW_SIMPLE_FIELD( _ident, _type, _fname, _dict ) \ 249049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { \ 250049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _ident, T1CODE, _type, \ 251049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, \ 252049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_OFFSET( _fname ), \ 253049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_SIZE( _fname ), \ 254049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, 0, \ 255049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _dict \ 256049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }, 257049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 258049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_NEW_CALLBACK_FIELD( _ident, _reader, _dict ) \ 259049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { \ 260049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _ident, T1CODE, T1_FIELD_TYPE_CALLBACK, \ 261049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (T1_Field_ParseFunc)_reader, \ 262049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, 0, \ 263049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, 0, \ 264049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _dict \ 265049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }, 266049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 267049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_NEW_TABLE_FIELD( _ident, _type, _fname, _max, _dict ) \ 268049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { \ 269049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _ident, T1CODE, _type, \ 270049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, \ 271049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_OFFSET( _fname ), \ 272049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_SIZE_DELTA( _fname ), \ 273049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _max, \ 274049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_OFFSET( num_ ## _fname ), \ 275049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _dict \ 276049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }, 277049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 278049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_NEW_TABLE_FIELD2( _ident, _type, _fname, _max, _dict ) \ 279049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { \ 280049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _ident, T1CODE, _type, \ 281049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 0, \ 282049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_OFFSET( _fname ), \ 283049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_FIELD_SIZE_DELTA( _fname ), \ 284049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _max, 0, \ 285049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _dict \ 286049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project }, 287049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 288049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 289049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_BOOL( _ident, _fname, _dict ) \ 290049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BOOL, _fname, _dict ) 291049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 292049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_NUM( _ident, _fname, _dict ) \ 293049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER, _fname, _dict ) 294049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 295049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_FIXED( _ident, _fname, _dict ) \ 296049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED, _fname, _dict ) 297049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 298049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_FIXED_1000( _ident, _fname, _dict ) \ 299049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_1000, _fname, \ 300049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _dict ) 301049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 302049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_STRING( _ident, _fname, _dict ) \ 303049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_STRING, _fname, _dict ) 304049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 305049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_KEY( _ident, _fname, _dict ) \ 306049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_KEY, _fname, _dict ) 307049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 308049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_BBOX( _ident, _fname, _dict ) \ 309049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_SIMPLE_FIELD( _ident, T1_FIELD_TYPE_BBOX, _fname, _dict ) 310049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 311049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 312049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_NUM_TABLE( _ident, _fname, _fmax, _dict ) \ 313049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ 314049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _fname, _fmax, _dict ) 315049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 316049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_FIXED_TABLE( _ident, _fname, _fmax, _dict ) \ 317049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_TABLE_FIELD( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ 318049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _fname, _fmax, _dict ) 319049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 320049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_NUM_TABLE2( _ident, _fname, _fmax, _dict ) \ 321049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_INTEGER_ARRAY, \ 322049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _fname, _fmax, _dict ) 323049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 324049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_FIXED_TABLE2( _ident, _fname, _fmax, _dict ) \ 325049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_TABLE_FIELD2( _ident, T1_FIELD_TYPE_FIXED_ARRAY, \ 326049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project _fname, _fmax, _dict ) 327049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 328049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_FIELD_CALLBACK( _ident, _name, _dict ) \ 329049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_NEW_CALLBACK_FIELD( _ident, _name, _dict ) 330049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 331049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 332049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 333049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 334049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 335049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** T1 PARSER *****/ 336049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 337049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 338049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 339049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 340049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct PS_Parser_FuncsRec_* PS_Parser_Funcs; 341049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 342049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_Parser_FuncsRec_ 343049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 344049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 345049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*init)( PS_Parser parser, 346049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* base, 347049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit, 348049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory ); 349049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 350049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 351049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*done)( PS_Parser parser ); 352049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 353049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 354049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*skip_spaces)( PS_Parser parser ); 355049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 356049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*skip_PS_token)( PS_Parser parser ); 357049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 358049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long 359049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_int)( PS_Parser parser ); 360049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed 361049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_fixed)( PS_Parser parser, 362049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int power_ten ); 363049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 364049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 365049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_bytes)( PS_Parser parser, 366049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* bytes, 367295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Offset max_bytes, 368049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long* pnum_bytes, 369049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool delimiters ); 370049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 371049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int 372049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_coord_array)( PS_Parser parser, 373049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int max_coords, 374049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Short* coords ); 375049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int 376049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_fixed_array)( PS_Parser parser, 377049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int max_values, 378049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Fixed* values, 379049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int power_ten ); 380049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 381049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 382049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_token)( PS_Parser parser, 383049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Token token ); 384049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 385049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*to_token_array)( PS_Parser parser, 386049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Token tokens, 387049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt max_tokens, 388049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int* pnum_tokens ); 389049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 390049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 391049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*load_field)( PS_Parser parser, 392049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const T1_Field field, 393049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void** objects, 394049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt max_objects, 395049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* pflags ); 396049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 397049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 398049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*load_field_table)( PS_Parser parser, 399049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const T1_Field field, 400049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void** objects, 401049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt max_objects, 402049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_ULong* pflags ); 403049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 404049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_Parser_FuncsRec; 405049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 406049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 407049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 408049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 409049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 410049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* PS_ParserRec */ 411049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 412049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 413049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A PS_Parser is an object used to parse a Type 1 font very quickly. */ 414049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 415049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 416049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* cursor :: The current position in the text. */ 417049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 418049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* base :: Start of the processed text. */ 419049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 420049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* limit :: End of the processed text. */ 421049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 422049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* error :: The last error returned. */ 423049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 424049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: The object used for memory operations (alloc/realloc). */ 425049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 426049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* funcs :: A table of functions for the parser. */ 427049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 428049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PS_ParserRec_ 429049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 430049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cursor; 431049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* base; 432049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit; 433049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error error; 434049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 435049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 436049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Parser_FuncsRec funcs; 437049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 438049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PS_ParserRec; 439049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 440049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 441049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 442049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 443049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 444049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** T1 BUILDER *****/ 445049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 446049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 447049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 448049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 449049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 450049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_BuilderRec_* T1_Builder; 451049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 452049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 453049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 454049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Check_Points_Func)( T1_Builder builder, 455049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int count ); 456049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 457049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 458049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Add_Point_Func)( T1_Builder builder, 459049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos x, 460049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos y, 461049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte flag ); 462049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 463049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 464049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Add_Point1_Func)( T1_Builder builder, 465049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos x, 466049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos y ); 467049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 468049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 469049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Add_Contour_Func)( T1_Builder builder ); 470049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 471049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 472049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Start_Point_Func)( T1_Builder builder, 473049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos x, 474049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos y ); 475049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 476049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef void 477049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Builder_Close_Contour_Func)( T1_Builder builder ); 478049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 479049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 480049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct T1_Builder_FuncsRec_* T1_Builder_Funcs; 481049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 482049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_Builder_FuncsRec_ 483049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 484049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 485049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*init)( T1_Builder builder, 486049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face face, 487049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size size, 488049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot slot, 489049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool hinting ); 490049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 491049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 492049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*done)( T1_Builder builder ); 493049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 494049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Check_Points_Func check_points; 495049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Add_Point_Func add_point; 496049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Add_Point1_Func add_point1; 497049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Add_Contour_Func add_contour; 498049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Start_Point_Func start_point; 499049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_Close_Contour_Func close_contour; 500049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 501049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_Builder_FuncsRec; 502049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 503049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 504049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* an enumeration type to handle charstring parsing states */ 505049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef enum T1_ParseState_ 506049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 507049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Parse_Start, 508049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Parse_Have_Width, 509049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Parse_Have_Moveto, 510049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Parse_Have_Path 511049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 512049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_ParseState; 513049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 514049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 515049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 516049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 517049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Structure> */ 518049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* T1_BuilderRec */ 519049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 520049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 521049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* A structure used during glyph loading to store its outline. */ 522049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 523049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 524049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: The current memory object. */ 525049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 526049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* face :: The current face object. */ 527049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 528049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* glyph :: The current glyph slot. */ 529049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 530049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* loader :: XXX */ 531049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 532049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* base :: The base glyph outline. */ 533049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 534049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* current :: The current glyph outline. */ 535049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 536049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* max_points :: maximum points in builder outline */ 537049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 538727dee178a392d20eb050d0c446f2fcc29058fa1Victoria Lease /* max_contours :: Maximum number of contours in builder outline. */ 539049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 540049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pos_x :: The horizontal translation (if composite glyph). */ 541049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 542049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* pos_y :: The vertical translation (if composite glyph). */ 543049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 544049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* left_bearing :: The left side bearing point. */ 545049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 546049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* advance :: The horizontal advance vector. */ 547049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 548049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* bbox :: Unused. */ 549049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 550049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* parse_state :: An enumeration which controls the charstring */ 551049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* parsing state. */ 552049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 553049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* load_points :: If this flag is not set, no points are loaded. */ 554049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 555049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* no_recurse :: Set but not used. */ 556049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 557049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* metrics_only :: A boolean indicating that we only want to compute */ 558049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* the metrics of a given glyph, not load all of its */ 559049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* points. */ 560049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 561049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* funcs :: An array of function pointers for the builder. */ 562049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 563049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_BuilderRec_ 564049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 565049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 566049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face face; 567049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot glyph; 568049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphLoader loader; 569049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline* base; 570049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Outline* current; 571049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 572049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos pos_x; 573049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Pos pos_y; 574049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 575049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector left_bearing; 576049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector advance; 577049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 578049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_BBox bbox; /* bounding box */ 579049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_ParseState parse_state; 580049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool load_points; 581049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool no_recurse; 582049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 583049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool metrics_only; 584049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 585049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* hints_funcs; /* hinter-specific */ 586049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* hints_globals; /* hinter-specific */ 587049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 588049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Builder_FuncsRec funcs; 589049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 590049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_BuilderRec; 591049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 592049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 593049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 594049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 595049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 596049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** T1 DECODER *****/ 597049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 598049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 599049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 600049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 601049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#if 0 602049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 603049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 604049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 605049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* T1_MAX_SUBRS_CALLS details the maximum number of nested sub-routine */ 606049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* calls during glyph loading. */ 607049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 608049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_MAX_SUBRS_CALLS 8 609049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 610049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 611049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 612049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 613049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* T1_MAX_CHARSTRING_OPERANDS is the charstring stack's capacity. A */ 614049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* minimum of 16 is required. */ 615049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 616049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define T1_MAX_CHARSTRINGS_OPERANDS 32 617049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 618049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* 0 */ 619049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 620049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 621049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_Decoder_ZoneRec_ 622049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 623049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* cursor; 624049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* base; 625049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit; 626049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 627049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_Decoder_ZoneRec, *T1_Decoder_Zone; 628049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 629049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 630049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_DecoderRec_* T1_Decoder; 631049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct T1_Decoder_FuncsRec_* T1_Decoder_Funcs; 632049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 633049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 634049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef FT_Error 635049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*T1_Decoder_Callback)( T1_Decoder decoder, 636049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt glyph_index ); 637049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 638049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 639049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_Decoder_FuncsRec_ 640049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 641049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 642049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*init)( T1_Decoder decoder, 643049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Face face, 644049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Size size, 645049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_GlyphSlot slot, 646049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte** glyph_names, 647049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Blend blend, 648049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Bool hinting, 649049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Render_Mode hint_mode, 650049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Decoder_Callback callback ); 651049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 652049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 653049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*done)( T1_Decoder decoder ); 654049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 655049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 656049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*parse_charstrings)( T1_Decoder decoder, 657049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* base, 658049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt len ); 659049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 660049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_Decoder_FuncsRec; 661049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 662049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 663049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_DecoderRec_ 664049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 665049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_BuilderRec builder; 666049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 667049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long stack[T1_MAX_CHARSTRINGS_OPERANDS]; 668049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Long* top; 669049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 670049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Decoder_ZoneRec zones[T1_MAX_SUBRS_CALLS + 1]; 671049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Decoder_Zone zone; 672049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 673049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Service_PsCMaps psnames; /* for seac */ 674049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_glyphs; 675049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte** glyph_names; 676049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 677049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int lenIV; /* internal for sub routine calls */ 678049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt num_subrs; 679049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte** subrs; 680049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_PtrDist* subrs_len; /* array of subrs length (optional) */ 681049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 682049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Matrix font_matrix; 683049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector font_offset; 684049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 685049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int flex_state; 686049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int num_flex_vectors; 687049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Vector flex_vectors[7]; 688049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 689049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project PS_Blend blend; /* for multiple master support */ 690049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 691049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Render_Mode hint_mode; 692049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 693049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Decoder_Callback parse_callback; 694049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_Decoder_FuncsRec funcs; 695049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 696295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Long* buildchar; 697049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UInt len_buildchar; 698049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 699295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Bool seac; 700295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner 701049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_DecoderRec; 702049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 703049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 704049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 705049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 706049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 707049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** AFM PARSER *****/ 708049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 709049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 710049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 711049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 712049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct AFM_ParserRec_* AFM_Parser; 713049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 714049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct AFM_Parser_FuncsRec_ 715049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 716049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 717049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*init)( AFM_Parser parser, 718049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory, 719049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* base, 720049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Byte* limit ); 721049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 722049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 723049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*done)( AFM_Parser parser ); 724049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 725049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Error 726049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*parse)( AFM_Parser parser ); 727049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 728049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } AFM_Parser_FuncsRec; 729049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 730049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 731049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct AFM_StreamRec_* AFM_Stream; 732049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 733049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 734049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 735049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 736049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Struct> */ 737049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* AFM_ParserRec */ 738049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 739049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Description> */ 740049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* An AFM_Parser is a parser for the AFM files. */ 741049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 742049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* <Fields> */ 743049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* memory :: The object used for memory operations (alloc and */ 744049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* realloc). */ 745049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 746049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* stream :: This is an opaque object. */ 747049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 748049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* FontInfo :: The result will be stored here. */ 749049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 750049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* get_index :: A user provided function to get a glyph index by its */ 751049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* name. */ 752049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* */ 753049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct AFM_ParserRec_ 754049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 755049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Memory memory; 756049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project AFM_Stream stream; 757049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 758049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project AFM_FontInfo FontInfo; 759049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 760049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Int 761049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*get_index)( const char* name, 762295ffce55e0198e7a9f7d46b33f5c2b4147bf821David 'Digit' Turner FT_Offset len, 763049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user_data ); 764049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 765049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void* user_data; 766049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 767049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } AFM_ParserRec; 768049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 769049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 770049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 771049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 772049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 773049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** TYPE1 CHARMAPS *****/ 774049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 775049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 776049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 777049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 778049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef const struct T1_CMap_ClassesRec_* T1_CMap_Classes; 779049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 780049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct T1_CMap_ClassesRec_ 781049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 782049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CMap_Class standard; 783049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CMap_Class expert; 784049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CMap_Class custom; 785049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_CMap_Class unicode; 786049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 787049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } T1_CMap_ClassesRec; 788049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 789049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 790049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 791049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 792049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 793049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** PSAux Module Interface *****/ 794049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 795049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 796049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 797049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 798049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef struct PSAux_ServiceRec_ 799049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project { 800049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* don't use `PS_Table_Funcs' and friends to avoid compiler warnings */ 801049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const PS_Table_FuncsRec* ps_table_funcs; 802049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const PS_Parser_FuncsRec* ps_parser_funcs; 803049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const T1_Builder_FuncsRec* t1_builder_funcs; 804049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const T1_Decoder_FuncsRec* t1_decoder_funcs; 805049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 806049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project void 807049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (*t1_decrypt)( FT_Byte* buffer, 808049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_Offset length, 809049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project FT_UShort seed ); 810049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 811049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project T1_CMap_Classes t1_cmap_classes; 812049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 813049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* fields after this comment line were added after version 2.1.10 */ 814049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project const AFM_Parser_FuncsRec* afm_parser_funcs; 815049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 816049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project } PSAux_ServiceRec, *PSAux_Service; 817049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 818049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /* backwards-compatible type definition */ 819049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project typedef PSAux_ServiceRec PSAux_Interface; 820049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 821049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 822049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 823049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 824049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 825049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** Some convenience functions *****/ 826049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /***** *****/ 827049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 828049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project /*************************************************************************/ 829049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 830049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_NEWLINE( ch ) \ 831049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) == '\r' || \ 832049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '\n' ) 833049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 834049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_SPACE( ch ) \ 835049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) == ' ' || \ 836049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project IS_PS_NEWLINE( ch ) || \ 837049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '\t' || \ 838049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '\f' || \ 839049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '\0' ) 840049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 841049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_SPECIAL( ch ) \ 842049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) == '/' || \ 843049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '(' || (ch) == ')' || \ 844049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '<' || (ch) == '>' || \ 845049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '[' || (ch) == ']' || \ 846049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '{' || (ch) == '}' || \ 847049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project (ch) == '%' ) 848049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 849049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_DELIM( ch ) \ 850049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( IS_PS_SPACE( ch ) || \ 851049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project IS_PS_SPECIAL( ch ) ) 852049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 853049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_DIGIT( ch ) \ 854049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) >= '0' && (ch) <= '9' ) 855049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 856049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_XDIGIT( ch ) \ 857049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( IS_PS_DIGIT( ch ) || \ 858049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) >= 'A' && (ch) <= 'F' ) || \ 859049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) >= 'a' && (ch) <= 'f' ) ) 860049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 861049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_BASE85( ch ) \ 862049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (ch) >= '!' && (ch) <= 'u' ) 863049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 864049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#define IS_PS_TOKEN( cur, limit, token ) \ 865049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (char)(cur)[0] == (token)[0] && \ 866049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (cur) + sizeof ( (token) ) == (limit) || \ 867049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ( (cur) + sizeof( (token) ) < (limit) && \ 868049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project IS_PS_DELIM( (cur)[sizeof ( (token) ) - 1] ) ) ) && \ 869049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project ft_strncmp( (char*)(cur), (token), sizeof ( (token) ) - 1 ) == 0 ) 870049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 871049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 872049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source ProjectFT_END_HEADER 873049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 874049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project#endif /* __PSAUX_H__ */ 875049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 876049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project 877049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/* END */ 878