update for HEAD-2003021201
[reactos.git] / subsys / win32k / freetype / src / type1z / z1objs.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  z1objs.h                                                               */
4 /*                                                                         */
5 /*    Experimental 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 Z1OBJS_H
20 #define Z1OBJS_H
21
22 #include <freetype/internal/ftobjs.h>
23 #include <freetype/config/ftconfig.h>
24 #include <freetype/internal/t1errors.h>
25 #include <freetype/internal/t1types.h>
26
27 #ifdef __cplusplus
28   extern "C" {
29 #endif
30
31   /* The following structures must be defined by the hinter */
32   typedef struct Z1_Size_Hints_   Z1_Size_Hints;
33   typedef struct Z1_Glyph_Hints_  Z1_Glyph_Hints;
34
35
36   /*************************************************************************/
37   /*                                                                       */
38   /* <Type>                                                                */
39   /*    Z1_Driver                                                          */
40   /*                                                                       */
41   /* <Description>                                                         */
42   /*    A handle to a Type 1 driver object.                                */
43   /*                                                                       */
44   typedef struct Z1_DriverRec_   *Z1_Driver;
45
46
47   /*************************************************************************/
48   /*                                                                       */
49   /* <Type>                                                                */
50   /*    Z1_Size                                                            */
51   /*                                                                       */
52   /* <Description>                                                         */
53   /*    A handle to a Type 1 size object.                                  */
54   /*                                                                       */
55   typedef struct Z1_SizeRec_*  Z1_Size;
56
57
58   /*************************************************************************/
59   /*                                                                       */
60   /* <Type>                                                                */
61   /*    Z1_GlyphSlot                                                       */
62   /*                                                                       */
63   /* <Description>                                                         */
64   /*    A handle to a Type 1 glyph slot object.                            */
65   /*                                                                       */
66   typedef struct Z1_GlyphSlotRec_*  Z1_GlyphSlot;
67
68
69   /*************************************************************************/
70   /*                                                                       */
71   /* <Type>                                                                */
72   /*    Z1_CharMap                                                         */
73   /*                                                                       */
74   /* <Description>                                                         */
75   /*    A handle to a Type 1 character mapping object.                     */
76   /*                                                                       */
77   /* <Note>                                                                */
78   /*    The Type 1 format doesn't use a charmap but an encoding table.     */
79   /*    The driver is responsible for making up charmap objects            */
80   /*    corresponding to these tables.                                     */
81   /*                                                                       */
82   typedef struct Z1_CharMapRec_*   Z1_CharMap;
83
84
85   /*************************************************************************/
86   /*                                                                       */
87   /*                  HERE BEGINS THE TYPE1 SPECIFIC STUFF                 */
88   /*                                                                       */
89   /*************************************************************************/
90
91
92   /*************************************************************************/
93   /*                                                                       */
94   /* <Type>                                                                */
95   /*    Z1_SizeRec                                                         */
96   /*                                                                       */
97   /* <Description>                                                         */
98   /*    Type 1 size record.                                                */
99   /*                                                                       */
100   typedef struct  Z1_SizeRec_
101   {
102     FT_SizeRec      root;
103     FT_Bool         valid;
104     Z1_Size_Hints*  hints;  /* defined in the hinter. This allows */
105                             /* us to experiment with different    */
106                             /* hinting schemes without having to  */
107                             /* change `z1objs' each time.         */
108   } Z1_SizeRec;
109
110
111   /*************************************************************************/
112   /*                                                                       */
113   /* <Type>                                                                */
114   /*    Z1_GlyphSlotRec                                                    */
115   /*                                                                       */
116   /* <Description>                                                         */
117   /*    Type 1 glyph slot record.                                          */
118   /*                                                                       */
119   typedef struct  Z1_GlyphSlotRec_
120   {
121     FT_GlyphSlotRec  root;
122
123     FT_Bool          hint;
124     FT_Bool          scaled;
125
126     FT_Int           max_points;
127     FT_Int           max_contours;
128
129     FT_Fixed         x_scale;
130     FT_Fixed         y_scale;
131
132     Z1_Glyph_Hints*  hints;  /* defined in the hinter */
133
134   } Z1_GlyphSlotRec;
135
136
137   LOCAL_DEF
138   FT_Error  Z1_Init_Face( FT_Stream      stream,
139                           T1_Face        face,
140                           FT_Int         face_index,
141                           FT_Int         num_params,
142                           FT_Parameter*  params );
143
144   LOCAL_DEF
145   void  Z1_Done_Face( T1_Face  face );
146
147   LOCAL_DEF
148   FT_Error  Z1_Init_Driver( Z1_Driver  driver );
149
150   LOCAL_DEF
151   void  Z1_Done_Driver( Z1_Driver  driver );
152
153
154 #ifdef __cplusplus
155   }
156 #endif
157
158 #endif /* Z1OBJS_H */
159
160
161 /* END */