XFA: merge patch from CL 815103002
[pdfium.git] / third_party / freetype / src / psaux / afmparse.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  afmparse.h                                                             */
4 /*                                                                         */
5 /*    AFM parser (specification).                                          */
6 /*                                                                         */
7 /*  Copyright 2006 by                                                      */
8 /*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
9 /*                                                                         */
10 /*  This file is part of the FreeType project, and may only be used,       */
11 /*  modified, and distributed under the terms of the FreeType project      */
12 /*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
13 /*  this file you indicate that you have read the license and              */
14 /*  understand and accept it fully.                                        */
15 /*                                                                         */
16 /***************************************************************************/
17
18
19 #ifndef __AFMPARSE_H__
20 #define __AFMPARSE_H__
21
22
23 #include <ft2build.h>
24 #include FT_INTERNAL_POSTSCRIPT_AUX_H
25
26
27 FT_BEGIN_HEADER
28
29
30   FT_LOCAL( FT_Error )
31   afm_parser_init( AFM_Parser  parser,
32                    FT_Memory   memory,
33                    FT_Byte*    base,
34                    FT_Byte*    limit );
35
36
37   FT_LOCAL( void )
38   afm_parser_done( AFM_Parser  parser );
39
40
41   FT_LOCAL( FT_Error )
42   afm_parser_parse( AFM_Parser  parser );
43
44
45   enum  AFM_ValueType_
46   {
47     AFM_VALUE_TYPE_STRING,
48     AFM_VALUE_TYPE_NAME,
49     AFM_VALUE_TYPE_FIXED,   /* real number */
50     AFM_VALUE_TYPE_INTEGER,
51     AFM_VALUE_TYPE_BOOL,
52     AFM_VALUE_TYPE_INDEX    /* glyph index */
53   };
54
55
56   typedef struct  AFM_ValueRec_
57   {
58     enum AFM_ValueType_  type;
59     union
60     {
61       char*     s;
62       FT_Fixed  f;
63       FT_Int    i;
64       FT_Bool   b;
65
66     } u;
67
68   } AFM_ValueRec, *AFM_Value;
69
70 #define  AFM_MAX_ARGUMENTS  5
71
72   FT_LOCAL( FT_Int )
73   afm_parser_read_vals( AFM_Parser  parser,
74                         AFM_Value   vals,
75                         FT_UInt     n );
76
77   /* read the next key from the next line or column */
78   FT_LOCAL( char* )
79   afm_parser_next_key( AFM_Parser  parser,
80                        FT_Bool     line,
81                        FT_Offset*  len );
82
83 FT_END_HEADER
84
85 #endif /* __AFMPARSE_H__ */
86
87
88 /* END */