1/***************************************************************************/
2/*                                                                         */
3/*  cffobjs.h                                                              */
4/*                                                                         */
5/*    OpenType objects manager (specification).                            */
6/*                                                                         */
7/*  Copyright 1996-2001, 2002, 2003, 2004, 2006, 2007, 2008 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 <ft2build.h>
24#include FT_INTERNAL_OBJECTS_H
25#include "cfftypes.h"
26#include FT_INTERNAL_TRUETYPE_TYPES_H
27#include FT_SERVICE_POSTSCRIPT_CMAPS_H
28#include FT_INTERNAL_POSTSCRIPT_HINTS_H
29
30
31FT_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  /* TrueType driver class.                                              */
116  /*                                                                     */
117  typedef struct  CFF_DriverRec_
118  {
119    FT_DriverRec  root;
120    void*         extension_component;
121
122  } CFF_DriverRec;
123
124
125  FT_LOCAL( FT_Error )
126  cff_size_init( FT_Size  size );           /* CFF_Size */
127
128  FT_LOCAL( void )
129  cff_size_done( FT_Size  size );           /* CFF_Size */
130
131  FT_LOCAL( FT_Error )
132  cff_size_request( FT_Size          size,
133                    FT_Size_Request  req );
134
135#ifdef TT_CONFIG_OPTION_EMBEDDED_BITMAPS
136
137  FT_LOCAL( FT_Error )
138  cff_size_select( FT_Size   size,
139                   FT_ULong  strike_index );
140
141#endif
142
143  FT_LOCAL( void )
144  cff_slot_done( FT_GlyphSlot  slot );
145
146  FT_LOCAL( FT_Error )
147  cff_slot_init( FT_GlyphSlot  slot );
148
149
150  /*************************************************************************/
151  /*                                                                       */
152  /* Face functions                                                        */
153  /*                                                                       */
154  FT_LOCAL( FT_Error )
155  cff_face_init( FT_Stream      stream,
156                 FT_Face        face,           /* CFF_Face */
157                 FT_Int         face_index,
158                 FT_Int         num_params,
159                 FT_Parameter*  params );
160
161  FT_LOCAL( void )
162  cff_face_done( FT_Face  face );               /* CFF_Face */
163
164
165  /*************************************************************************/
166  /*                                                                       */
167  /* Driver functions                                                      */
168  /*                                                                       */
169  FT_LOCAL( FT_Error )
170  cff_driver_init( FT_Module  module );
171
172  FT_LOCAL( void )
173  cff_driver_done( FT_Module  module );
174
175
176FT_END_HEADER
177
178#endif /* __CFFOBJS_H__ */
179
180
181/* END */
182