47b0a37be1ca6a663a5513ec0723c3794dba74eb
[reactos.git] / subsys / win32k / freetype / src / type1 / t1objs.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  t1objs.h                                                               */
4 /*                                                                         */
5 /*    Type 1 objects manager (specification).                              */
6 /*                                                                         */
7 /*  Copyright 1996-2000 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 #include <freetype/config/ftconfig.h>
23 #include <freetype/internal/ftobjs.h>
24 #include <freetype/internal/t1types.h>
25
26 #include <freetype/internal/t1errors.h>
27
28 #ifdef __cplusplus
29   extern "C" {
30 #endif
31
32
33   /* The following structures must be defined by the hinter */
34   typedef struct T1_Size_Hints_   T1_Size_Hints;
35   typedef struct T1_Glyph_Hints_  T1_Glyph_Hints;
36
37
38   /*************************************************************************/
39   /*                                                                       */
40   /* <Type>                                                                */
41   /*    T1_Driver                                                          */
42   /*                                                                       */
43   /* <Description>                                                         */
44   /*    A handle to a Type 1 driver object.                                */
45   /*                                                                       */
46   typedef struct T1_DriverRec_*  T1_Driver;
47
48
49   /*************************************************************************/
50   /*                                                                       */
51   /* <Type>                                                                */
52   /*    T1_Size                                                            */
53   /*                                                                       */
54   /* <Description>                                                         */
55   /*    A handle to a Type 1 size object.                                  */
56   /*                                                                       */
57   typedef struct T1_SizeRec_*  T1_Size;
58
59
60   /*************************************************************************/
61   /*                                                                       */
62   /* <Type>                                                                */
63   /*    T1_GlyphSlot                                                       */
64   /*                                                                       */
65   /* <Description>                                                         */
66   /*    A handle to a Type 1 glyph slot object.                            */
67   /*                                                                       */
68   typedef struct T1_GlyphSlotRec_*  T1_GlyphSlot;
69
70
71   /*************************************************************************/
72   /*                                                                       */
73   /* <Type>                                                                */
74   /*    T1_CharMap                                                         */
75   /*                                                                       */
76   /* <Description>                                                         */
77   /*    A handle to a Type 1 character mapping object.                     */
78   /*                                                                       */
79   /* <Note>                                                                */
80   /*    The Type 1 format doesn't use a charmap but an encoding table.     */
81   /*    The driver is responsible for making up charmap objects            */
82   /*    corresponding to these tables.                                     */
83   /*                                                                       */
84   typedef struct T1_CharMapRec_*  T1_CharMap;
85
86
87   /*************************************************************************/
88   /*                                                                       */
89   /*                  HERE BEGINS THE TYPE1 SPECIFIC STUFF                 */
90   /*                                                                       */
91   /*************************************************************************/
92
93
94   /*************************************************************************/
95   /*                                                                       */
96   /* <Type>                                                                */
97   /*    T1_SizeRec                                                         */
98   /*                                                                       */
99   /* <Description>                                                         */
100   /*    Type 1 size record.                                                */
101   /*                                                                       */
102   typedef struct  T1_SizeRec_
103   {
104     FT_SizeRec      root;
105     FT_Bool         valid;
106     T1_Size_Hints*  hints;  /* defined in the hinter. This allows */
107                             /* us to experiment with different    */
108                             /* hinting schemes without having to  */
109                             /* change `t1objs' each time.         */
110   } T1_SizeRec;
111
112
113   /*************************************************************************/
114   /*                                                                       */
115   /* <Type>                                                                */
116   /*    T1_GlyphSlotRec                                                    */
117   /*                                                                       */
118   /* <Description>                                                         */
119   /*    Type 1 glyph slot record.                                          */
120   /*                                                                       */
121   typedef struct  T1_GlyphSlotRec_
122   {
123     FT_GlyphSlotRec  root;
124
125     FT_Bool          hint;
126     FT_Bool          scaled;
127
128     FT_Int           max_points;
129     FT_Int           max_contours;
130
131     FT_Fixed         x_scale;
132     FT_Fixed         y_scale;
133
134     T1_Glyph_Hints*  hints;  /* defined in the hinter */
135
136   } T1_GlyphSlotRec;
137
138
139   LOCAL_DEF
140   FT_Error  T1_Init_Face( FT_Stream      stream,
141                           T1_Face        face,
142                           FT_Int         face_index,
143                           FT_Int         num_params,
144                           FT_Parameter*  params );
145
146   LOCAL_DEF
147   void  T1_Done_Face( T1_Face  face );
148
149   LOCAL_DEF
150   FT_Error  T1_Init_Size( T1_Size  size );
151
152   LOCAL_DEF
153   void  T1_Done_Size( T1_Size  size );
154
155   LOCAL_DEF
156   FT_Error  T1_Reset_Size( T1_Size  size );
157
158   LOCAL_DEF
159   FT_Error  T1_Init_GlyphSlot( T1_GlyphSlot  slot );
160
161   LOCAL_DEF
162   void  T1_Done_GlyphSlot( T1_GlyphSlot  slot );
163
164
165 #ifdef __cplusplus
166   }
167 #endif
168
169 #endif /* T1OBJS_H */
170
171
172 /* END */