Home | History | Annotate | Download | only in psaux
      1 /***************************************************************************/
      2 /*                                                                         */
      3 /*  afmparse.h                                                             */
      4 /*                                                                         */
      5 /*    AFM parser (specification).                                          */
      6 /*                                                                         */
      7 /*  Copyright 2006-2018 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_UInt   u;
     65       FT_Bool   b;
     66 
     67     } u;
     68 
     69   } AFM_ValueRec, *AFM_Value;
     70 
     71 #define  AFM_MAX_ARGUMENTS  5
     72 
     73   FT_LOCAL( FT_Int )
     74   afm_parser_read_vals( AFM_Parser  parser,
     75                         AFM_Value   vals,
     76                         FT_Int      n );
     77 
     78   /* read the next key from the next line or column */
     79   FT_LOCAL( char* )
     80   afm_parser_next_key( AFM_Parser  parser,
     81                        FT_Bool     line,
     82                        FT_Offset*  len );
     83 
     84 FT_END_HEADER
     85 
     86 #endif /* AFMPARSE_H_ */
     87 
     88 
     89 /* END */
     90