1/***************************************************************************/
2/*                                                                         */
3/*  t1objs.h                                                               */
4/*                                                                         */
5/*    Type 1 objects manager (specification).                              */
6/*                                                                         */
7/*  Copyright 1996-2001, 2002, 2006, 2011 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 "../../include/ft2build.h"
24#include "../../include/freetype/internal/ftobjs.h"
25#include "../../include/freetype/config/ftconfig.h"
26#include "../../include/freetype/internal/t1types.h"
27
28
29FT_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_Int           max_points;
124    FT_Int           max_contours;
125
126    FT_Fixed         x_scale;
127    FT_Fixed         y_scale;
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
155FT_END_HEADER
156
157#endif /* __T1OBJS_H__ */
158
159
160/* END */
161