536be8ba1e3c82a3d78a466e626be1c39ae50a28
[platform/upstream/freetype2.git] / src / type1 / t1objs.h
1 /****************************************************************************
2  *
3  * t1objs.h
4  *
5  *   Type 1 objects manager (specification).
6  *
7  * Copyright (C) 1996-2020 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 <freetype/internal/ftobjs.h>
25 #include FT_CONFIG_CONFIG_H
26 #include <freetype/internal/t1types.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 */