1 /***************************************************************************/
   2 /*                                                                         */
   3 /*  t1objs.h                                                               */
   4 /*                                                                         */
   5 /*    Type 1 objects manager (specification).                              */
   6 /*                                                                         */
   7 /*  Copyright 1996-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 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 */