XFA: merge patch from CL 817753002
[pdfium.git] / core / src / fxge / fx_freetype / fxft2.5.01 / src / cff / cffobjs.h
1 /***************************************************************************/
2 /*                                                                         */
3 /*  cffobjs.h                                                              */
4 /*                                                                         */
5 /*    OpenType objects manager (specification).                            */
6 /*                                                                         */
7 /*  Copyright 1996-2004, 2006-2008, 2013 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 __CFFOBJS_H__
20 #define __CFFOBJS_H__
21
22
23 #include "../../include/ft2build.h"
24 #include "../../include/freetype/internal/ftobjs.h"
25 #include "cfftypes.h"
26 #include "../../include/freetype/internal/tttypes.h"
27 #include "../../include/freetype/internal/services/svpscmap.h"
28 #include "../../include/freetype/internal/pshints.h"
29
30
31 FT_BEGIN_HEADER
32
33
34   /*************************************************************************/
35   /*                                                                       */
36   /* <Type>                                                                */
37   /*    CFF_Driver                                                         */
38   /*                                                                       */
39   /* <Description>                                                         */
40   /*    A handle to an OpenType driver object.                             */
41   /*                                                                       */
42   typedef struct CFF_DriverRec_*  CFF_Driver;
43
44   typedef TT_Face  CFF_Face;
45
46
47   /*************************************************************************/
48   /*                                                                       */
49   /* <Type>                                                                */
50   /*    CFF_Size                                                           */
51   /*                                                                       */
52   /* <Description>                                                         */
53   /*    A handle to an OpenType size object.                               */
54   /*                                                                       */
55   typedef struct  CFF_SizeRec_
56   {
57     FT_SizeRec  root;
58     FT_ULong    strike_index;    /* 0xFFFFFFFF to indicate invalid */
59
60   } CFF_SizeRec, *CFF_Size;
61
62
63   /*************************************************************************/
64   /*                                                                       */
65   /* <Type>                                                                */
66   /*    CFF_GlyphSlot                                                      */
67   /*                                                                       */
68   /* <Description>                                                         */
69   /*    A handle to an OpenType glyph slot object.                         */
70   /*                                                                       */
71   typedef struct  CFF_GlyphSlotRec_
72   {
73     FT_GlyphSlotRec  root;
74
75     FT_Bool          hint;
76     FT_Bool          scaled;
77
78     FT_Fixed         x_scale;
79     FT_Fixed         y_scale;
80
81   } CFF_GlyphSlotRec, *CFF_GlyphSlot;
82
83
84   /*************************************************************************/
85   /*                                                                       */
86   /* <Type>                                                                */
87   /*    CFF_Internal                                                       */
88   /*                                                                       */
89   /* <Description>                                                         */
90   /*    The interface to the `internal' field of `FT_Size'.                */
91   /*                                                                       */
92   typedef struct  CFF_InternalRec_
93   {
94     PSH_Globals  topfont;
95     PSH_Globals  subfonts[CFF_MAX_CID_FONTS];
96
97   } CFF_InternalRec, *CFF_Internal;
98
99
100   /*************************************************************************/
101   /*                                                                       */
102   /* Subglyph transformation record.                                       */
103   /*                                                                       */
104   typedef struct  CFF_Transform_
105   {
106     FT_Fixed    xx, xy;     /* transformation matrix coefficients */
107     FT_Fixed    yx, yy;
108     FT_F26Dot6  ox, oy;     /* offsets        */
109
110   } CFF_Transform;
111
112
113   /***********************************************************************/
114   /*                                                                     */
115   /* CFF driver class.                                                   */
116   /*                                                                     */
117   typedef struct  CFF_DriverRec_
118   {
119     FT_DriverRec  root;
120
121     FT_UInt  hinting_engine;
122     FT_Bool  no_stem_darkening;
123
124   } CFF_DriverRec;
125
126
127   FT_LOCAL( FT_Error )
128   cff_size_init( FT_Size  size );           /* CFF_Size */
129
130   FT_LOCAL( void )
131   cff_size_done( FT_Size  size );           /* CFF_Size */
132
133   FT_LOCAL( FT_Error )
134   cff_size_request( FT_Size          size,
135                     FT_Size_Request  req );
136
137 #ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
138
139   FT_LOCAL( FT_Error )
140   cff_size_select( FT_Size   size,
141                    FT_ULong  strike_index );
142
143 #endif
144
145   FT_LOCAL( void )
146   cff_slot_done( FT_GlyphSlot  slot );
147
148   FT_LOCAL( FT_Error )
149   cff_slot_init( FT_GlyphSlot  slot );
150
151
152   /*************************************************************************/
153   /*                                                                       */
154   /* Face functions                                                        */
155   /*                                                                       */
156   FT_LOCAL( FT_Error )
157   cff_face_init( FT_Stream      stream,
158                  FT_Face        face,           /* CFF_Face */
159                  FT_Int         face_index,
160                  FT_Int         num_params,
161                  FT_Parameter*  params );
162
163   FT_LOCAL( void )
164   cff_face_done( FT_Face  face );               /* CFF_Face */
165
166
167   /*************************************************************************/
168   /*                                                                       */
169   /* Driver functions                                                      */
170   /*                                                                       */
171   FT_LOCAL( FT_Error )
172   cff_driver_init( FT_Module  module );         /* CFF_Driver */
173
174   FT_LOCAL( void )
175   cff_driver_done( FT_Module  module );         /* CFF_Driver */
176
177
178 FT_END_HEADER
179
180 #endif /* __CFFOBJS_H__ */
181
182
183 /* END */