blob: c0e482a209096aa7d420c8eaac102c20579ab8b2 [file] [log] [blame]
Werner Lembergb1c8bf02000-08-17 07:18:04 +00001/***************************************************************************/
2/* */
3/* psobjs.h */
4/* */
5/* Auxiliary functions for PostScript fonts (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
Werner Lemberg90d99642000-12-09 00:45:38 +000019#ifndef __PSOBJS_H__
20#define __PSOBJS_H__
David Turner24d70242000-08-17 01:09:06 +000021
Werner Lembergcc069be2000-12-08 16:17:16 +000022
23#include <ft2build.h>
24#include FT_INTERNAL_POSTSCRIPT_AUX_H
25
David Turner24d70242000-08-17 01:09:06 +000026
David Turner19ed8af2000-12-08 02:42:29 +000027FT_BEGIN_HEADER
Werner Lembergb1c8bf02000-08-17 07:18:04 +000028
Werner Lembergcc069be2000-12-08 16:17:16 +000029
David Turner24d70242000-08-17 01:09:06 +000030 /*************************************************************************/
31 /*************************************************************************/
32 /***** *****/
33 /***** T1_TABLE *****/
34 /***** *****/
35 /*************************************************************************/
36 /*************************************************************************/
37
Werner Lemberg4e9dae62000-08-29 16:50:01 +000038
David Turner76a5f622000-11-04 01:55:49 +000039 FT_CALLBACK_TABLE
Werner Lemberg8728f292000-08-23 17:32:42 +000040 const PS_Table_Funcs ps_table_funcs;
David Turner24d70242000-08-17 01:09:06 +000041
David Turner76a5f622000-11-04 01:55:49 +000042 FT_CALLBACK_TABLE
Werner Lemberg8728f292000-08-23 17:32:42 +000043 const T1_Parser_Funcs t1_parser_funcs;
Werner Lemberg4e9dae62000-08-29 16:50:01 +000044
David Turner76a5f622000-11-04 01:55:49 +000045 FT_CALLBACK_TABLE
David Turnera39acf52000-08-23 02:47:57 +000046 const T1_Builder_Funcs t1_builder_funcs;
Werner Lemberg4e9dae62000-08-29 16:50:01 +000047
Werner Lemberge4b32a52000-10-31 20:42:18 +000048
David Turner76a5f622000-11-04 01:55:49 +000049 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +000050 FT_Error PS_Table_New( PS_Table* table,
David Turner24d70242000-08-17 01:09:06 +000051 FT_Int count,
52 FT_Memory memory );
Werner Lemberge4b32a52000-10-31 20:42:18 +000053
David Turner76a5f622000-11-04 01:55:49 +000054 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +000055 FT_Error PS_Table_Add( PS_Table* table,
David Turner24d70242000-08-17 01:09:06 +000056 FT_Int index,
57 void* object,
58 FT_Int length );
59
David Turner76a5f622000-11-04 01:55:49 +000060 FT_LOCAL
Werner Lemberg8728f292000-08-23 17:32:42 +000061 void PS_Table_Done( PS_Table* table );
David Turnerf95a6032000-08-21 04:58:49 +000062
David Turner24d70242000-08-17 01:09:06 +000063
David Turner76a5f622000-11-04 01:55:49 +000064 FT_LOCAL
Werner Lemberg8728f292000-08-23 17:32:42 +000065 void PS_Table_Release( PS_Table* table );
David Turner24d70242000-08-17 01:09:06 +000066
67
David Turner24d70242000-08-17 01:09:06 +000068 /*************************************************************************/
69 /*************************************************************************/
70 /***** *****/
71 /***** T1 PARSER *****/
72 /***** *****/
73 /*************************************************************************/
74 /*************************************************************************/
75
76
David Turner76a5f622000-11-04 01:55:49 +000077 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +000078 void T1_Skip_Spaces( T1_Parser* parser );
79
David Turner76a5f622000-11-04 01:55:49 +000080 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +000081 void T1_Skip_Alpha( T1_Parser* parser );
82
David Turner76a5f622000-11-04 01:55:49 +000083 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +000084 void T1_ToToken( T1_Parser* parser,
85 T1_Token* token );
86
David Turner76a5f622000-11-04 01:55:49 +000087 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +000088 void T1_ToTokenArray( T1_Parser* parser,
89 T1_Token* tokens,
90 FT_UInt max_tokens,
91 FT_Int* pnum_tokens );
Werner Lemberge4b32a52000-10-31 20:42:18 +000092
David Turner76a5f622000-11-04 01:55:49 +000093 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +000094 FT_Error T1_Load_Field( T1_Parser* parser,
95 const T1_Field* field,
96 void** objects,
97 FT_UInt max_objects,
98 FT_ULong* pflags );
Werner Lemberge4b32a52000-10-31 20:42:18 +000099
David Turner76a5f622000-11-04 01:55:49 +0000100 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +0000101 FT_Error T1_Load_Field_Table( T1_Parser* parser,
102 const T1_Field* field,
103 void** objects,
104 FT_UInt max_objects,
105 FT_ULong* pflags );
Werner Lemberge4b32a52000-10-31 20:42:18 +0000106
David Turner76a5f622000-11-04 01:55:49 +0000107 FT_LOCAL
Werner Lembergb1c8bf02000-08-17 07:18:04 +0000108 FT_Long T1_ToInt( T1_Parser* parser );
David Turner24d70242000-08-17 01:09:06 +0000109
110
David Turner76a5f622000-11-04 01:55:49 +0000111 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +0000112 FT_Fixed T1_ToFixed( T1_Parser* parser,
113 FT_Int power_ten );
114
115
David Turner76a5f622000-11-04 01:55:49 +0000116 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +0000117 FT_Int T1_ToCoordArray( T1_Parser* parser,
118 FT_Int max_coords,
119 FT_Short* coords );
120
David Turner76a5f622000-11-04 01:55:49 +0000121 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +0000122 FT_Int T1_ToFixedArray( T1_Parser* parser,
123 FT_Int max_values,
124 FT_Fixed* values,
125 FT_Int power_ten );
126
127
David Turner76a5f622000-11-04 01:55:49 +0000128 FT_LOCAL
Werner Lemberg8728f292000-08-23 17:32:42 +0000129 void T1_Init_Parser( T1_Parser* parser,
130 FT_Byte* base,
131 FT_Byte* limit,
132 FT_Memory memory );
David Turner24d70242000-08-17 01:09:06 +0000133
David Turner76a5f622000-11-04 01:55:49 +0000134 FT_LOCAL
Werner Lemberg8728f292000-08-23 17:32:42 +0000135 void T1_Done_Parser( T1_Parser* parser );
David Turner24d70242000-08-17 01:09:06 +0000136
137
David Turnerf95a6032000-08-21 04:58:49 +0000138 /*************************************************************************/
139 /*************************************************************************/
140 /***** *****/
141 /***** T1 BUILDER *****/
142 /***** *****/
143 /*************************************************************************/
144 /*************************************************************************/
145
David Turner76a5f622000-11-04 01:55:49 +0000146 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000147 void T1_Builder_Init( T1_Builder* builder,
148 FT_Face face,
149 FT_Size size,
150 FT_GlyphSlot glyph );
151
David Turner76a5f622000-11-04 01:55:49 +0000152 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000153 void T1_Builder_Done( T1_Builder* builder );
Werner Lemberge4b32a52000-10-31 20:42:18 +0000154
David Turner76a5f622000-11-04 01:55:49 +0000155 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000156 FT_Error T1_Builder_Check_Points( T1_Builder* builder,
157 FT_Int count );
Werner Lemberge4b32a52000-10-31 20:42:18 +0000158
David Turner76a5f622000-11-04 01:55:49 +0000159 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000160 void T1_Builder_Add_Point( T1_Builder* builder,
161 FT_Pos x,
162 FT_Pos y,
163 FT_Byte flag );
164
David Turner76a5f622000-11-04 01:55:49 +0000165 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000166 FT_Error T1_Builder_Add_Point1( T1_Builder* builder,
167 FT_Pos x,
168 FT_Pos y );
Werner Lemberge4b32a52000-10-31 20:42:18 +0000169
David Turner76a5f622000-11-04 01:55:49 +0000170 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000171 FT_Error T1_Builder_Add_Contour( T1_Builder* builder );
Werner Lemberge4b32a52000-10-31 20:42:18 +0000172
David Turnerf95a6032000-08-21 04:58:49 +0000173
David Turner76a5f622000-11-04 01:55:49 +0000174 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000175 FT_Error T1_Builder_Start_Point( T1_Builder* builder,
176 FT_Pos x,
177 FT_Pos y );
178
179
David Turner76a5f622000-11-04 01:55:49 +0000180 FT_LOCAL
David Turnerf95a6032000-08-21 04:58:49 +0000181 void T1_Builder_Close_Contour( T1_Builder* builder );
182
183
184 /*************************************************************************/
185 /*************************************************************************/
186 /***** *****/
187 /***** OTHER *****/
188 /***** *****/
189 /*************************************************************************/
190 /*************************************************************************/
191
David Turner76a5f622000-11-04 01:55:49 +0000192 FT_LOCAL
David Turner24d70242000-08-17 01:09:06 +0000193 void T1_Decrypt( FT_Byte* buffer,
194 FT_Int length,
195 FT_UShort seed );
196
197
David Turner19ed8af2000-12-08 02:42:29 +0000198FT_END_HEADER
Werner Lembergb1c8bf02000-08-17 07:18:04 +0000199
Werner Lemberg90d99642000-12-09 00:45:38 +0000200#endif /* __PSOBJS_H__ */
David Turner24d70242000-08-17 01:09:06 +0000201
Werner Lembergb1c8bf02000-08-17 07:18:04 +0000202
203/* END */