1/***************************************************************************/
2/*                                                                         */
3/*  cidobjs.h                                                              */
4/*                                                                         */
5/*    CID objects manager (specification).                                 */
6/*                                                                         */
7/*  Copyright 1996-2001, 2002, 2004, 2006 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 __CIDOBJS_H__
20#define __CIDOBJS_H__
21
22
23#include "../../include/ft2build.h"
24#include "../../include/freetype/internal/ftobjs.h"
25#include "../../include/freetype/config/ftconfig.h"
26#include "../../include/freetype/internal/t1types.h"
27
28
29FT_BEGIN_HEADER
30
31
32  /* The following structures must be defined by the hinter */
33  typedef struct CID_Size_Hints_   CID_Size_Hints;
34  typedef struct CID_Glyph_Hints_  CID_Glyph_Hints;
35
36
37  /*************************************************************************/
38  /*                                                                       */
39  /* <Type>                                                                */
40  /*    CID_Driver                                                         */
41  /*                                                                       */
42  /* <Description>                                                         */
43  /*    A handle to a Type 1 driver object.                                */
44  /*                                                                       */
45  typedef struct CID_DriverRec_*  CID_Driver;
46
47
48  /*************************************************************************/
49  /*                                                                       */
50  /* <Type>                                                                */
51  /*    CID_Size                                                           */
52  /*                                                                       */
53  /* <Description>                                                         */
54  /*    A handle to a Type 1 size object.                                  */
55  /*                                                                       */
56  typedef struct CID_SizeRec_*  CID_Size;
57
58
59  /*************************************************************************/
60  /*                                                                       */
61  /* <Type>                                                                */
62  /*    CID_GlyphSlot                                                      */
63  /*                                                                       */
64  /* <Description>                                                         */
65  /*    A handle to a Type 1 glyph slot object.                            */
66  /*                                                                       */
67  typedef struct CID_GlyphSlotRec_*  CID_GlyphSlot;
68
69
70  /*************************************************************************/
71  /*                                                                       */
72  /* <Type>                                                                */
73  /*    CID_CharMap                                                        */
74  /*                                                                       */
75  /* <Description>                                                         */
76  /*    A handle to a Type 1 character mapping object.                     */
77  /*                                                                       */
78  /* <Note>                                                                */
79  /*    The Type 1 format doesn't use a charmap but an encoding table.     */
80  /*    The driver is responsible for making up charmap objects            */
81  /*    corresponding to these tables.                                     */
82  /*                                                                       */
83  typedef struct CID_CharMapRec_*  CID_CharMap;
84
85
86  /*************************************************************************/
87  /*                                                                       */
88  /* HERE BEGINS THE TYPE 1 SPECIFIC STUFF                                 */
89  /*                                                                       */
90  /*************************************************************************/
91
92
93  typedef struct  CID_SizeRec_
94  {
95    FT_SizeRec  root;
96    FT_Bool     valid;
97
98  } CID_SizeRec;
99
100
101  typedef struct  CID_GlyphSlotRec_
102  {
103    FT_GlyphSlotRec  root;
104
105    FT_Bool          hint;
106    FT_Bool          scaled;
107
108    FT_Fixed         x_scale;
109    FT_Fixed         y_scale;
110
111  } CID_GlyphSlotRec;
112
113
114  FT_LOCAL( void )
115  cid_slot_done( FT_GlyphSlot  slot );
116
117  FT_LOCAL( FT_Error )
118  cid_slot_init( FT_GlyphSlot  slot );
119
120
121  FT_LOCAL( void )
122  cid_size_done( FT_Size  size );       /* CID_Size */
123
124  FT_LOCAL( FT_Error )
125  cid_size_init( FT_Size  size );       /* CID_Size */
126
127  FT_LOCAL( FT_Error )
128  cid_size_request( FT_Size          size,      /* CID_Size */
129                    FT_Size_Request  req );
130
131  FT_LOCAL( FT_Error )
132  cid_face_init( FT_Stream      stream,
133                 FT_Face        face,           /* CID_Face */
134                 FT_Int         face_index,
135                 FT_Int         num_params,
136                 FT_Parameter*  params );
137
138  FT_LOCAL( void )
139  cid_face_done( FT_Face  face );               /* CID_Face */
140
141
142  FT_LOCAL( FT_Error )
143  cid_driver_init( FT_Module  driver );
144
145  FT_LOCAL( void )
146  cid_driver_done( FT_Module  driver );
147
148
149FT_END_HEADER
150
151#endif /* __CIDOBJS_H__ */
152
153
154/* END */
155