1/***************************************************************************/
2/*                                                                         */
3/*  psobjs.h                                                               */
4/*                                                                         */
5/*    Auxiliary functions for PostScript fonts (specification).            */
6/*                                                                         */
7/*  Copyright 1996-2001, 2002, 2003 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 __PSOBJS_H__
20#define __PSOBJS_H__
21
22
23#include "../../include/ft2build.h"
24#include "../../include/freetype/internal/psaux.h"
25
26
27FT_BEGIN_HEADER
28
29
30  /*************************************************************************/
31  /*************************************************************************/
32  /*****                                                               *****/
33  /*****                             T1_TABLE                          *****/
34  /*****                                                               *****/
35  /*************************************************************************/
36  /*************************************************************************/
37
38
39  FT_CALLBACK_TABLE
40  const PS_Table_FuncsRec    ps_table_funcs;
41
42  FT_CALLBACK_TABLE
43  const PS_Parser_FuncsRec   ps_parser_funcs;
44
45  FT_CALLBACK_TABLE
46  const T1_Builder_FuncsRec  t1_builder_funcs;
47
48
49  FT_LOCAL( FT_Error )
50  ps_table_new( PS_Table   table,
51                FT_Int     count,
52                FT_Memory  memory );
53
54  FT_LOCAL( FT_Error )
55  ps_table_add( PS_Table    table,
56                FT_Int      idx,
57                void*       object,
58                FT_PtrDist  length );
59
60  FT_LOCAL( void )
61  ps_table_done( PS_Table  table );
62
63
64  FT_LOCAL( void )
65  ps_table_release( PS_Table  table );
66
67
68  /*************************************************************************/
69  /*************************************************************************/
70  /*****                                                               *****/
71  /*****                            T1 PARSER                          *****/
72  /*****                                                               *****/
73  /*************************************************************************/
74  /*************************************************************************/
75
76
77  FT_LOCAL( void )
78  ps_parser_skip_spaces( PS_Parser  parser );
79
80  FT_LOCAL( void )
81  ps_parser_skip_PS_token( PS_Parser  parser );
82
83  FT_LOCAL( void )
84  ps_parser_to_token( PS_Parser  parser,
85                      T1_Token   token );
86
87  FT_LOCAL( void )
88  ps_parser_to_token_array( PS_Parser  parser,
89                            T1_Token   tokens,
90                            FT_UInt    max_tokens,
91                            FT_Int*    pnum_tokens );
92
93  FT_LOCAL( FT_Error )
94  ps_parser_load_field( PS_Parser       parser,
95                        const T1_Field  field,
96                        void**          objects,
97                        FT_UInt         max_objects,
98                        FT_ULong*       pflags );
99
100  FT_LOCAL( FT_Error )
101  ps_parser_load_field_table( PS_Parser       parser,
102                              const T1_Field  field,
103                              void**          objects,
104                              FT_UInt         max_objects,
105                              FT_ULong*       pflags );
106
107  FT_LOCAL( FT_Long )
108  ps_parser_to_int( PS_Parser  parser );
109
110
111  FT_LOCAL( FT_Error )
112  ps_parser_to_bytes( PS_Parser  parser,
113                      FT_Byte*   bytes,
114                      FT_Offset  max_bytes,
115                      FT_Long*   pnum_bytes,
116                      FT_Bool    delimiters );
117
118
119  FT_LOCAL( FT_Fixed )
120  ps_parser_to_fixed( PS_Parser  parser,
121                      FT_Int     power_ten );
122
123
124  FT_LOCAL( FT_Int )
125  ps_parser_to_coord_array( PS_Parser  parser,
126                            FT_Int     max_coords,
127                            FT_Short*  coords );
128
129  FT_LOCAL( FT_Int )
130  ps_parser_to_fixed_array( PS_Parser  parser,
131                            FT_Int     max_values,
132                            FT_Fixed*  values,
133                            FT_Int     power_ten );
134
135
136  FT_LOCAL( void )
137  ps_parser_init( PS_Parser  parser,
138                  FT_Byte*   base,
139                  FT_Byte*   limit,
140                  FT_Memory  memory );
141
142  FT_LOCAL( void )
143  ps_parser_done( PS_Parser  parser );
144
145
146  /*************************************************************************/
147  /*************************************************************************/
148  /*****                                                               *****/
149  /*****                            T1 BUILDER                         *****/
150  /*****                                                               *****/
151  /*************************************************************************/
152  /*************************************************************************/
153
154  FT_LOCAL( void )
155  t1_builder_init( T1_Builder    builder,
156                   FT_Face       face,
157                   FT_Size       size,
158                   FT_GlyphSlot  glyph,
159                   FT_Bool       hinting );
160
161  FT_LOCAL( void )
162  t1_builder_done( T1_Builder  builder );
163
164  FT_LOCAL( FT_Error )
165  t1_builder_check_points( T1_Builder  builder,
166                           FT_Int      count );
167
168  FT_LOCAL( void )
169  t1_builder_add_point( T1_Builder  builder,
170                        FT_Pos      x,
171                        FT_Pos      y,
172                        FT_Byte     flag );
173
174  FT_LOCAL( FT_Error )
175  t1_builder_add_point1( T1_Builder  builder,
176                         FT_Pos      x,
177                         FT_Pos      y );
178
179  FT_LOCAL( FT_Error )
180  t1_builder_add_contour( T1_Builder  builder );
181
182
183  FT_LOCAL( FT_Error )
184  t1_builder_start_point( T1_Builder  builder,
185                          FT_Pos      x,
186                          FT_Pos      y );
187
188
189  FT_LOCAL( void )
190  t1_builder_close_contour( T1_Builder  builder );
191
192
193  /*************************************************************************/
194  /*************************************************************************/
195  /*****                                                               *****/
196  /*****                            OTHER                              *****/
197  /*****                                                               *****/
198  /*************************************************************************/
199  /*************************************************************************/
200
201  FT_LOCAL( void )
202  t1_decrypt( FT_Byte*   buffer,
203              FT_Offset  length,
204              FT_UShort  seed );
205
206
207FT_END_HEADER
208
209#endif /* __PSOBJS_H__ */
210
211
212/* END */
213