Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | Download | RSS feed

  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.