~ubuntu-branches/ubuntu/wily/hedgewars/wily

« back to all changes in this revision

Viewing changes to misc/libfreetype/src/pfr/pfrtypes.h

  • Committer: Package Import Robot
  • Author(s): Dmitry E. Oboukhov
  • Date: 2011-09-23 10:16:55 UTC
  • mfrom: (1.2.11 upstream)
  • Revision ID: package-import@ubuntu.com-20110923101655-3977th2gc5n0a3pv
Tags: 0.9.16-1
* New upstream version.
 + Downloadable content! Simply click to install any content.
   New voices, hats, maps, themes, translations, music, scripts...
   Hedgewars is now more customisable than ever before! As time goes
   by we will be soliciting community content to feature on this page,
   so remember to check it from time to time. If you decide you want
   to go back to standard Hedgewars, just remove the Data directory
   from your Hedgewars config directory.
 + 3-D rendering! Diorama-like rendering of the game in a variety
   of 3D modes. Let us know which ones work best for you, we didn't
   really have the equipment to test them all.
 + Resizable game window.
 + New utilities! The Time Box will remove one of your hedgehogs
   from the game for a while, protecting from attack until it returns,
   somewhere else on the map. Land spray will allow you to build bridges,
   seal up holes, or just make life unpleasant for your enemies.
 + New single player: Bamboo Thicket, That Sinking Feeling, Newton and
   the Tree and multi-player: The Specialists, Space Invaders,
   Racer - scripts! And a ton more script hooks for scripters
 + New twists on old weapons. Drill strike, seduction and fire have
   been adjusted. Defective mines have been added, rope can attach to
   hogs/crates/barrels again, grenades now have variable bounce (use
   precise key + 1-5). Portal gun is now more usable in flight and
   all game actions are a lot faster.
 + New theme - Golf, dozens of new community hats and a new
   localised Default voice, Ukranian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  pfrtypes.h                                                             */
 
4
/*                                                                         */
 
5
/*    FreeType PFR data structures (specification only).                   */
 
6
/*                                                                         */
 
7
/*  Copyright 2002, 2003, 2005, 2007 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 __PFRTYPES_H__
 
20
#define __PFRTYPES_H__
 
21
 
 
22
#include <ft2build.h>
 
23
#include FT_INTERNAL_OBJECTS_H
 
24
 
 
25
FT_BEGIN_HEADER
 
26
 
 
27
  /************************************************************************/
 
28
 
 
29
  /* the PFR Header structure */
 
30
  typedef struct  PFR_HeaderRec_
 
31
  {
 
32
    FT_UInt32  signature;
 
33
    FT_UInt    version;
 
34
    FT_UInt    signature2;
 
35
    FT_UInt    header_size;
 
36
 
 
37
    FT_UInt    log_dir_size;
 
38
    FT_UInt    log_dir_offset;
 
39
 
 
40
    FT_UInt    log_font_max_size;
 
41
    FT_UInt32  log_font_section_size;
 
42
    FT_UInt32  log_font_section_offset;
 
43
 
 
44
    FT_UInt32  phy_font_max_size;
 
45
    FT_UInt32  phy_font_section_size;
 
46
    FT_UInt32  phy_font_section_offset;
 
47
 
 
48
    FT_UInt    gps_max_size;
 
49
    FT_UInt32  gps_section_size;
 
50
    FT_UInt32  gps_section_offset;
 
51
 
 
52
    FT_UInt    max_blue_values;
 
53
    FT_UInt    max_x_orus;
 
54
    FT_UInt    max_y_orus;
 
55
 
 
56
    FT_UInt    phy_font_max_size_high;
 
57
    FT_UInt    color_flags;
 
58
 
 
59
    FT_UInt32  bct_max_size;
 
60
    FT_UInt32  bct_set_max_size;
 
61
    FT_UInt32  phy_bct_set_max_size;
 
62
 
 
63
    FT_UInt    num_phy_fonts;
 
64
    FT_UInt    max_vert_stem_snap;
 
65
    FT_UInt    max_horz_stem_snap;
 
66
    FT_UInt    max_chars;
 
67
 
 
68
  } PFR_HeaderRec, *PFR_Header;
 
69
 
 
70
 
 
71
  /* used in `color_flags' field of the PFR_Header */
 
72
  typedef enum  PFR_HeaderFlags_
 
73
  {
 
74
    PFR_FLAG_BLACK_PIXEL   = 1,
 
75
    PFR_FLAG_INVERT_BITMAP = 2
 
76
 
 
77
  } PFR_HeaderFlags;
 
78
 
 
79
 
 
80
  /************************************************************************/
 
81
 
 
82
  typedef struct  PFR_LogFontRec_
 
83
  {
 
84
    FT_UInt32  size;
 
85
    FT_UInt32  offset;
 
86
 
 
87
    FT_Int32   matrix[4];
 
88
    FT_UInt    stroke_flags;
 
89
    FT_Int     stroke_thickness;
 
90
    FT_Int     bold_thickness;
 
91
    FT_Int32   miter_limit;
 
92
 
 
93
    FT_UInt32  phys_size;
 
94
    FT_UInt32  phys_offset;
 
95
 
 
96
  } PFR_LogFontRec, *PFR_LogFont;
 
97
 
 
98
 
 
99
  typedef enum  PFR_LogFlags_
 
100
  {
 
101
    PFR_LOG_EXTRA_ITEMS  = 0x40,
 
102
    PFR_LOG_2BYTE_BOLD   = 0x20,
 
103
    PFR_LOG_BOLD         = 0x10,
 
104
    PFR_LOG_2BYTE_STROKE = 8,
 
105
    PFR_LOG_STROKE       = 4,
 
106
    PFR_LINE_JOIN_MASK   = 3
 
107
 
 
108
  } PFR_LogFlags;
 
109
 
 
110
 
 
111
  typedef enum  PFR_LineJoinFlags_
 
112
  {
 
113
    PFR_LINE_JOIN_MITER = 0,
 
114
    PFR_LINE_JOIN_ROUND = 1,
 
115
    PFR_LINE_JOIN_BEVEL = 2
 
116
 
 
117
  } PFR_LineJoinFlags;
 
118
 
 
119
 
 
120
  /************************************************************************/
 
121
 
 
122
  typedef enum  PFR_BitmapFlags_
 
123
  {
 
124
    PFR_BITMAP_3BYTE_OFFSET   = 4,
 
125
    PFR_BITMAP_2BYTE_SIZE     = 2,
 
126
    PFR_BITMAP_2BYTE_CHARCODE = 1
 
127
 
 
128
  } PFR_BitmapFlags;
 
129
 
 
130
 
 
131
  typedef struct  PFR_BitmapCharRec_
 
132
  {
 
133
    FT_UInt    char_code;
 
134
    FT_UInt    gps_size;
 
135
    FT_UInt32  gps_offset;
 
136
 
 
137
  } PFR_BitmapCharRec, *PFR_BitmapChar;
 
138
 
 
139
 
 
140
  typedef enum  PFR_StrikeFlags_
 
141
  {
 
142
    PFR_STRIKE_2BYTE_COUNT  = 0x10,
 
143
    PFR_STRIKE_3BYTE_OFFSET = 0x08,
 
144
    PFR_STRIKE_3BYTE_SIZE   = 0x04,
 
145
    PFR_STRIKE_2BYTE_YPPM   = 0x02,
 
146
    PFR_STRIKE_2BYTE_XPPM   = 0x01
 
147
 
 
148
  } PFR_StrikeFlags;
 
149
 
 
150
 
 
151
  typedef struct  PFR_StrikeRec_
 
152
  {
 
153
    FT_UInt         x_ppm;
 
154
    FT_UInt         y_ppm;
 
155
    FT_UInt         flags;
 
156
 
 
157
    FT_UInt32       gps_size;
 
158
    FT_UInt32       gps_offset;
 
159
 
 
160
    FT_UInt32       bct_size;
 
161
    FT_UInt32       bct_offset;
 
162
 
 
163
    /* optional */
 
164
    FT_UInt         num_bitmaps;
 
165
    PFR_BitmapChar  bitmaps;
 
166
 
 
167
  } PFR_StrikeRec, *PFR_Strike;
 
168
 
 
169
 
 
170
  /************************************************************************/
 
171
 
 
172
  typedef struct  PFR_CharRec_
 
173
  {
 
174
    FT_UInt    char_code;
 
175
    FT_Int     advance;
 
176
    FT_UInt    gps_size;
 
177
    FT_UInt32  gps_offset;
 
178
 
 
179
  } PFR_CharRec, *PFR_Char;
 
180
 
 
181
 
 
182
  /************************************************************************/
 
183
 
 
184
  typedef struct  PFR_DimensionRec_
 
185
  {
 
186
    FT_UInt  standard;
 
187
    FT_UInt  num_stem_snaps;
 
188
    FT_Int*  stem_snaps;
 
189
 
 
190
  } PFR_DimensionRec, *PFR_Dimension;
 
191
 
 
192
  /************************************************************************/
 
193
 
 
194
  typedef struct PFR_KernItemRec_*  PFR_KernItem;
 
195
 
 
196
  typedef struct  PFR_KernItemRec_
 
197
  {
 
198
    PFR_KernItem  next;
 
199
    FT_Byte       pair_count;
 
200
    FT_Byte       flags;
 
201
    FT_Short      base_adj;
 
202
    FT_UInt       pair_size;
 
203
    FT_Offset     offset;
 
204
    FT_UInt32     pair1;
 
205
    FT_UInt32     pair2;
 
206
 
 
207
  } PFR_KernItemRec;
 
208
 
 
209
 
 
210
#define PFR_KERN_INDEX( g1, g2 )                          \
 
211
          ( ( (FT_UInt32)(g1) << 16 ) | (FT_UInt16)(g2) )
 
212
 
 
213
#define PFR_KERN_PAIR_INDEX( pair )                        \
 
214
          PFR_KERN_INDEX( (pair)->glyph1, (pair)->glyph2 )
 
215
 
 
216
#define PFR_NEXT_KPAIR( p )  ( p += 2,                              \
 
217
                               ( (FT_UInt32)p[-2] << 16 ) | p[-1] )
 
218
 
 
219
 
 
220
  /************************************************************************/
 
221
 
 
222
  typedef struct  PFR_PhyFontRec_
 
223
  {
 
224
    FT_Memory          memory;
 
225
    FT_UInt32          offset;
 
226
 
 
227
    FT_UInt            font_ref_number;
 
228
    FT_UInt            outline_resolution;
 
229
    FT_UInt            metrics_resolution;
 
230
    FT_BBox            bbox;
 
231
    FT_UInt            flags;
 
232
    FT_UInt            standard_advance;
 
233
 
 
234
    FT_Int             ascent;   /* optional, bbox.yMax if not present */
 
235
    FT_Int             descent;  /* optional, bbox.yMin if not present */
 
236
    FT_Int             leading;  /* optional, 0 if not present         */
 
237
 
 
238
    PFR_DimensionRec   horizontal;
 
239
    PFR_DimensionRec   vertical;
 
240
 
 
241
    FT_String*         font_id;
 
242
    FT_String*         family_name;
 
243
    FT_String*         style_name;
 
244
 
 
245
    FT_UInt            num_strikes;
 
246
    FT_UInt            max_strikes;
 
247
    PFR_StrikeRec*     strikes;
 
248
 
 
249
    FT_UInt            num_blue_values;
 
250
    FT_Int            *blue_values;
 
251
    FT_UInt            blue_fuzz;
 
252
    FT_UInt            blue_scale;
 
253
 
 
254
    FT_UInt            num_chars;
 
255
    FT_Offset          chars_offset;
 
256
    PFR_Char           chars;
 
257
 
 
258
    FT_UInt            num_kern_pairs;
 
259
    PFR_KernItem       kern_items;
 
260
    PFR_KernItem*      kern_items_tail;
 
261
 
 
262
    /* not part of the spec, but used during load */
 
263
    FT_Long            bct_offset;
 
264
    FT_Byte*           cursor;
 
265
 
 
266
  } PFR_PhyFontRec, *PFR_PhyFont;
 
267
 
 
268
 
 
269
  typedef enum  PFR_PhyFlags_
 
270
  {
 
271
    PFR_PHY_EXTRA_ITEMS      = 0x80,
 
272
    PFR_PHY_3BYTE_GPS_OFFSET = 0x20,
 
273
    PFR_PHY_2BYTE_GPS_SIZE   = 0x10,
 
274
    PFR_PHY_ASCII_CODE       = 0x08,
 
275
    PFR_PHY_PROPORTIONAL     = 0x04,
 
276
    PFR_PHY_2BYTE_CHARCODE   = 0x02,
 
277
    PFR_PHY_VERTICAL         = 0x01
 
278
 
 
279
  } PFR_PhyFlags;
 
280
 
 
281
 
 
282
  typedef enum PFR_KernFlags_
 
283
  {
 
284
    PFR_KERN_2BYTE_CHAR  = 0x01,
 
285
    PFR_KERN_2BYTE_ADJ   = 0x02
 
286
 
 
287
  } PFR_KernFlags;
 
288
 
 
289
 
 
290
  /************************************************************************/
 
291
 
 
292
  typedef enum  PFR_GlyphFlags_
 
293
  {
 
294
    PFR_GLYPH_IS_COMPOUND   = 0x80,
 
295
    PFR_GLYPH_EXTRA_ITEMS   = 0x08,
 
296
    PFR_GLYPH_1BYTE_XYCOUNT = 0x04,
 
297
    PFR_GLYPH_XCOUNT        = 0x02,
 
298
    PFR_GLYPH_YCOUNT        = 0x01
 
299
 
 
300
  } PFR_GlyphFlags;
 
301
 
 
302
 
 
303
  /* controlled coordinate */
 
304
  typedef struct  PFR_CoordRec_
 
305
  {
 
306
    FT_UInt  org;
 
307
    FT_UInt  cur;
 
308
 
 
309
  } PFR_CoordRec, *PFR_Coord;
 
310
 
 
311
 
 
312
  typedef struct  PFR_SubGlyphRec_
 
313
  {
 
314
    FT_Fixed   x_scale;
 
315
    FT_Fixed   y_scale;
 
316
    FT_Int     x_delta;
 
317
    FT_Int     y_delta;
 
318
    FT_UInt32  gps_offset;
 
319
    FT_UInt    gps_size;
 
320
 
 
321
  } PFR_SubGlyphRec, *PFR_SubGlyph;
 
322
 
 
323
 
 
324
  typedef enum  PFR_SubgGlyphFlags_
 
325
  {
 
326
    PFR_SUBGLYPH_3BYTE_OFFSET = 0x80,
 
327
    PFR_SUBGLYPH_2BYTE_SIZE   = 0x40,
 
328
    PFR_SUBGLYPH_YSCALE       = 0x20,
 
329
    PFR_SUBGLYPH_XSCALE       = 0x10
 
330
 
 
331
  } PFR_SubGlyphFlags;
 
332
 
 
333
 
 
334
  typedef struct  PFR_GlyphRec_
 
335
  {
 
336
    FT_Byte           format;
 
337
 
 
338
#if 0
 
339
    FT_UInt           num_x_control;
 
340
    FT_UInt           num_y_control;
 
341
#endif
 
342
    FT_UInt           max_xy_control;
 
343
    FT_Pos*           x_control;
 
344
    FT_Pos*           y_control;
 
345
 
 
346
 
 
347
    FT_UInt           num_subs;
 
348
    FT_UInt           max_subs;
 
349
    PFR_SubGlyphRec*  subs;
 
350
 
 
351
    FT_GlyphLoader    loader;
 
352
    FT_Bool           path_begun;
 
353
 
 
354
  } PFR_GlyphRec, *PFR_Glyph;
 
355
 
 
356
 
 
357
FT_END_HEADER
 
358
 
 
359
#endif /* __PFRTYPES_H__ */
 
360
 
 
361
 
 
362
/* END */