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