Home | History | Annotate | Download | only in psaux
      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 */
     89