1 /****************************************************************************
   2  *
   3  * t1objs.h
   4  *
   5  *   Type 1 objects manager (specification).
   6  *
   7  * Copyright (C) 1996-2019 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 T1OBJS_H_
  20 #define T1OBJS_H_
  21 
  22 
  23 #include <ft2build.h>
  24 #include FT_INTERNAL_OBJECTS_H
  25 #include FT_CONFIG_CONFIG_H
  26 #include FT_INTERNAL_TYPE1_TYPES_H
  27 
  28 
  29 FT_BEGIN_HEADER
  30 
  31 
  32   /* The following structures must be defined by the hinter */
  33   typedef struct T1_Size_Hints_   T1_Size_Hints;
  34   typedef struct T1_Glyph_Hints_  T1_Glyph_Hints;
  35 
  36 
  37   /**************************************************************************
  38    *
  39    * @Type:
  40    *   T1_Size
  41    *
  42    * @Description:
  43    *   A handle to a Type 1 size object.
  44    */
  45   typedef struct T1_SizeRec_*  T1_Size;
  46 
  47 
  48   /**************************************************************************
  49    *
  50    * @Type:
  51    *   T1_GlyphSlot
  52    *
  53    * @Description:
  54    *   A handle to a Type 1 glyph slot object.
  55    */
  56   typedef struct T1_GlyphSlotRec_*  T1_GlyphSlot;
  57 
  58 
  59   /**************************************************************************
  60    *
  61    * @Type:
  62    *   T1_CharMap
  63    *
  64    * @Description:
  65    *   A handle to a Type 1 character mapping object.
  66    *
  67    * @Note:
  68    *   The Type 1 format doesn't use a charmap but an encoding table.
  69    *   The driver is responsible for making up charmap objects
  70    *   corresponding to these tables.
  71    */
  72   typedef struct T1_CharMapRec_*   T1_CharMap;
  73 
  74 
  75   /**************************************************************************
  76    *
  77    *                 HERE BEGINS THE TYPE1 SPECIFIC STUFF
  78    *
  79    */
  80 
  81 
  82   /**************************************************************************
  83    *
  84    * @Type:
  85    *   T1_SizeRec
  86    *
  87    * @Description:
  88    *   Type 1 size record.
  89    */
  90   typedef struct  T1_SizeRec_
  91   {
  92     FT_SizeRec  root;
  93 
  94   } T1_SizeRec;
  95 
  96 
  97   FT_LOCAL( void )
  98   T1_Size_Done( FT_Size  size );
  99 
 100   FT_LOCAL( FT_Error )
 101   T1_Size_Request( FT_Size          size,
 102                    FT_Size_Request  req );
 103 
 104   FT_LOCAL( FT_Error )
 105   T1_Size_Init( FT_Size  size );
 106 
 107 
 108   /**************************************************************************
 109    *
 110    * @Type:
 111    *   T1_GlyphSlotRec
 112    *
 113    * @Description:
 114    *   Type 1 glyph slot record.
 115    */
 116   typedef struct  T1_GlyphSlotRec_
 117   {
 118     FT_GlyphSlotRec  root;
 119 
 120     FT_Bool          hint;
 121     FT_Bool          scaled;
 122 
 123     FT_Fixed         x_scale;
 124     FT_Fixed         y_scale;
 125 
 126     FT_Int           max_points;
 127     FT_Int           max_contours;
 128 
 129   } T1_GlyphSlotRec;
 130 
 131 
 132   FT_LOCAL( FT_Error )
 133   T1_Face_Init( FT_Stream      stream,
 134                 FT_Face        face,
 135                 FT_Int         face_index,
 136                 FT_Int         num_params,
 137                 FT_Parameter*  params );
 138 
 139   FT_LOCAL( void )
 140   T1_Face_Done( FT_Face  face );
 141 
 142   FT_LOCAL( FT_Error )
 143   T1_GlyphSlot_Init( FT_GlyphSlot  slot );
 144 
 145   FT_LOCAL( void )
 146   T1_GlyphSlot_Done( FT_GlyphSlot  slot );
 147 
 148   FT_LOCAL( FT_Error )
 149   T1_Driver_Init( FT_Module  driver );
 150 
 151   FT_LOCAL( void )
 152   T1_Driver_Done( FT_Module  driver );
 153 
 154 
 155 FT_END_HEADER
 156 
 157 #endif /* T1OBJS_H_ */
 158 
 159 
 160 /* END */