Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /***************************************************************************/
  2. /*                                                                         */
  3. /*  t1parse.h                                                              */
  4. /*                                                                         */
  5. /*    Type 1 parser (specification).                                       */
  6. /*                                                                         */
  7. /*  Copyright 1996-2001, 2002, 2003, 2008 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 __T1PARSE_H__
  20. #define __T1PARSE_H__
  21.  
  22.  
  23. #include <ft2build.h>
  24. #include FT_INTERNAL_TYPE1_TYPES_H
  25. #include FT_INTERNAL_STREAM_H
  26.  
  27.  
  28. FT_BEGIN_HEADER
  29.  
  30.  
  31.   /*************************************************************************/
  32.   /*                                                                       */
  33.   /* <Struct>                                                              */
  34.   /*    T1_ParserRec                                                       */
  35.   /*                                                                       */
  36.   /* <Description>                                                         */
  37.   /*    A PS_ParserRec is an object used to parse a Type 1 fonts very      */
  38.   /*    quickly.                                                           */
  39.   /*                                                                       */
  40.   /* <Fields>                                                              */
  41.   /*    root         :: The root parser.                                   */
  42.   /*                                                                       */
  43.   /*    stream       :: The current input stream.                          */
  44.   /*                                                                       */
  45.   /*    base_dict    :: A pointer to the top-level dictionary.             */
  46.   /*                                                                       */
  47.   /*    base_len     :: The length in bytes of the top dictionary.         */
  48.   /*                                                                       */
  49.   /*    private_dict :: A pointer to the private dictionary.               */
  50.   /*                                                                       */
  51.   /*    private_len  :: The length in bytes of the private dictionary.     */
  52.   /*                                                                       */
  53.   /*    in_pfb       :: A boolean.  Indicates that we are handling a PFB   */
  54.   /*                    file.                                              */
  55.   /*                                                                       */
  56.   /*    in_memory    :: A boolean.  Indicates a memory-based stream.       */
  57.   /*                                                                       */
  58.   /*    single_block :: A boolean.  Indicates that the private dictionary  */
  59.   /*                    is stored in lieu of the base dictionary.          */
  60.   /*                                                                       */
  61.   typedef struct  T1_ParserRec_
  62.   {
  63.     PS_ParserRec  root;
  64.     FT_Stream     stream;
  65.  
  66.     FT_Byte*      base_dict;
  67.     FT_ULong      base_len;
  68.  
  69.     FT_Byte*      private_dict;
  70.     FT_ULong      private_len;
  71.  
  72.     FT_Bool       in_pfb;
  73.     FT_Bool       in_memory;
  74.     FT_Bool       single_block;
  75.  
  76.   } T1_ParserRec, *T1_Parser;
  77.  
  78.  
  79. #define T1_Add_Table( p, i, o, l )  (p)->funcs.add( (p), i, o, l )
  80. #define T1_Done_Table( p )          \
  81.           do                        \
  82.           {                         \
  83.             if ( (p)->funcs.done )  \
  84.               (p)->funcs.done( p ); \
  85.           } while ( 0 )
  86. #define T1_Release_Table( p )          \
  87.           do                           \
  88.           {                            \
  89.             if ( (p)->funcs.release )  \
  90.               (p)->funcs.release( p ); \
  91.           } while ( 0 )
  92.  
  93.  
  94. #define T1_Skip_Spaces( p )    (p)->root.funcs.skip_spaces( &(p)->root )
  95. #define T1_Skip_PS_Token( p )  (p)->root.funcs.skip_PS_token( &(p)->root )
  96.  
  97. #define T1_ToInt( p )       (p)->root.funcs.to_int( &(p)->root )
  98. #define T1_ToFixed( p, t )  (p)->root.funcs.to_fixed( &(p)->root, t )
  99.  
  100. #define T1_ToCoordArray( p, m, c )                           \
  101.           (p)->root.funcs.to_coord_array( &(p)->root, m, c )
  102. #define T1_ToFixedArray( p, m, f, t )                           \
  103.           (p)->root.funcs.to_fixed_array( &(p)->root, m, f, t )
  104. #define T1_ToToken( p, t )                          \
  105.           (p)->root.funcs.to_token( &(p)->root, t )
  106. #define T1_ToTokenArray( p, t, m, c )                           \
  107.           (p)->root.funcs.to_token_array( &(p)->root, t, m, c )
  108.  
  109. #define T1_Load_Field( p, f, o, m, pf )                         \
  110.           (p)->root.funcs.load_field( &(p)->root, f, o, m, pf )
  111.  
  112. #define T1_Load_Field_Table( p, f, o, m, pf )                         \
  113.           (p)->root.funcs.load_field_table( &(p)->root, f, o, m, pf )
  114.  
  115.  
  116.   FT_LOCAL( FT_Error )
  117.   T1_New_Parser( T1_Parser      parser,
  118.                  FT_Stream      stream,
  119.                  FT_Memory      memory,
  120.                  PSAux_Service  psaux );
  121.  
  122.   FT_LOCAL( FT_Error )
  123.   T1_Get_Private_Dict( T1_Parser      parser,
  124.                        PSAux_Service  psaux );
  125.  
  126.   FT_LOCAL( void )
  127.   T1_Finalize_Parser( T1_Parser  parser );
  128.  
  129.  
  130. FT_END_HEADER
  131.  
  132. #endif /* __T1PARSE_H__ */
  133.  
  134.  
  135. /* END */
  136.