~oif-team/ubuntu/natty/qt4-x11/xi2.1

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/include/freetype/fttypes.h

  • Committer: Bazaar Package Importer
  • Author(s): Adam Conrad
  • Date: 2005-08-24 04:09:09 UTC
  • Revision ID: james.westby@ubuntu.com-20050824040909-xmxe9jfr4a0w5671
Tags: upstream-4.0.0
ImportĀ upstreamĀ versionĀ 4.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/***************************************************************************/
 
2
/*                                                                         */
 
3
/*  fttypes.h                                                              */
 
4
/*                                                                         */
 
5
/*    FreeType simple types definitions (specification only).              */
 
6
/*                                                                         */
 
7
/*  Copyright 1996-2001 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 __FTTYPES_H__
 
20
#define __FTTYPES_H__
 
21
 
 
22
 
 
23
#include <ft2build.h>
 
24
#include FT_CONFIG_CONFIG_H
 
25
#include FT_SYSTEM_H
 
26
#include FT_IMAGE_H
 
27
 
 
28
#include <stddef.h>
 
29
 
 
30
 
 
31
FT_BEGIN_HEADER
 
32
 
 
33
 
 
34
  /*************************************************************************/
 
35
  /*                                                                       */
 
36
  /* <Section>                                                             */
 
37
  /*    basic_types                                                        */
 
38
  /*                                                                       */
 
39
  /* <Title>                                                               */
 
40
  /*    Basic Data Types                                                   */
 
41
  /*                                                                       */
 
42
  /* <Abstract>                                                            */
 
43
  /*    The basic data types defined by the library.                       */
 
44
  /*                                                                       */
 
45
  /* <Description>                                                         */
 
46
  /*    This section contains the basic data types defined by FreeType 2,  */
 
47
  /*    ranging from simple scalar types to bitmap descriptors.  More      */
 
48
  /*    font-specific structures are defined in a different section.       */
 
49
  /*                                                                       */
 
50
  /* <Order>                                                               */
 
51
  /*    FT_Byte                                                            */
 
52
  /*    FT_Char                                                            */
 
53
  /*    FT_Int                                                             */
 
54
  /*    FT_UInt                                                            */
 
55
  /*    FT_Short                                                           */
 
56
  /*    FT_UShort                                                          */
 
57
  /*    FT_Long                                                            */
 
58
  /*    FT_ULong                                                           */
 
59
  /*    FT_Bool                                                            */
 
60
  /*    FT_Offset                                                          */
 
61
  /*    FT_PtrDist                                                         */
 
62
  /*    FT_String                                                          */
 
63
  /*    FT_Error                                                           */
 
64
  /*    FT_Fixed                                                           */
 
65
  /*    FT_Pointer                                                         */
 
66
  /*    FT_Pos                                                             */
 
67
  /*    FT_Vector                                                          */
 
68
  /*    FT_BBox                                                            */
 
69
  /*    FT_Matrix                                                          */
 
70
  /*    FT_FWord                                                           */
 
71
  /*    FT_UFWord                                                          */
 
72
  /*    FT_F2Dot14                                                         */
 
73
  /*    FT_UnitVector                                                      */
 
74
  /*    FT_F26Dot6                                                         */
 
75
  /*                                                                       */
 
76
  /*                                                                       */
 
77
  /*    FT_Generic                                                         */
 
78
  /*    FT_Generic_Finalizer                                               */
 
79
  /*                                                                       */
 
80
  /*    FT_Bitmap                                                          */
 
81
  /*    FT_Pixel_Mode                                                      */
 
82
  /*    FT_Palette_Mode                                                    */
 
83
  /*    FT_Glyph_Format                                                    */
 
84
  /*    FT_IMAGE_TAG                                                       */
 
85
  /*                                                                       */
 
86
  /*************************************************************************/
 
87
 
 
88
 
 
89
  /*************************************************************************/
 
90
  /*                                                                       */
 
91
  /* <Type>                                                                */
 
92
  /*    FT_Bool                                                            */
 
93
  /*                                                                       */
 
94
  /* <Description>                                                         */
 
95
  /*    A typedef of unsigned char, used for simple booleans.              */
 
96
  /*                                                                       */
 
97
  typedef unsigned char  FT_Bool;
 
98
 
 
99
 
 
100
  /*************************************************************************/
 
101
  /*                                                                       */
 
102
  /* <Type>                                                                */
 
103
  /*    FT_FWord                                                           */
 
104
  /*                                                                       */
 
105
  /* <Description>                                                         */
 
106
  /*    A signed 16-bit integer used to store a distance in original font  */
 
107
  /*    units.                                                             */
 
108
  /*                                                                       */
 
109
  typedef signed short  FT_FWord;   /* distance in FUnits */
 
110
 
 
111
 
 
112
  /*************************************************************************/
 
113
  /*                                                                       */
 
114
  /* <Type>                                                                */
 
115
  /*    FT_UFWord                                                          */
 
116
  /*                                                                       */
 
117
  /* <Description>                                                         */
 
118
  /*    An unsigned 16-bit integer used to store a distance in original    */
 
119
  /*    font units.                                                        */
 
120
  /*                                                                       */
 
121
  typedef unsigned short  FT_UFWord;  /* unsigned distance */
 
122
 
 
123
 
 
124
  /*************************************************************************/
 
125
  /*                                                                       */
 
126
  /* <Type>                                                                */
 
127
  /*    FT_Char                                                            */
 
128
  /*                                                                       */
 
129
  /* <Description>                                                         */
 
130
  /*    A simple typedef for the _signed_ char type.                       */
 
131
  /*                                                                       */
 
132
  typedef signed char  FT_Char;
 
133
 
 
134
 
 
135
  /*************************************************************************/
 
136
  /*                                                                       */
 
137
  /* <Type>                                                                */
 
138
  /*    FT_Byte                                                            */
 
139
  /*                                                                       */
 
140
  /* <Description>                                                         */
 
141
  /*    A simple typedef for the _unsigned_ char type.                     */
 
142
  /*                                                                       */
 
143
  typedef unsigned char  FT_Byte;
 
144
 
 
145
 
 
146
  /*************************************************************************/
 
147
  /*                                                                       */
 
148
  /* <Type>                                                                */
 
149
  /*    FT_String                                                          */
 
150
  /*                                                                       */
 
151
  /* <Description>                                                         */
 
152
  /*    A simple typedef for the char type, usually used for strings.      */
 
153
  /*                                                                       */
 
154
  typedef char  FT_String;
 
155
 
 
156
 
 
157
  /*************************************************************************/
 
158
  /*                                                                       */
 
159
  /* <Type>                                                                */
 
160
  /*    FT_Short                                                           */
 
161
  /*                                                                       */
 
162
  /* <Description>                                                         */
 
163
  /*    A typedef for signed short.                                        */
 
164
  /*                                                                       */
 
165
  typedef signed short  FT_Short;
 
166
 
 
167
 
 
168
  /*************************************************************************/
 
169
  /*                                                                       */
 
170
  /* <Type>                                                                */
 
171
  /*    FT_UShort                                                          */
 
172
  /*                                                                       */
 
173
  /* <Description>                                                         */
 
174
  /*    A typedef for unsigned short.                                      */
 
175
  /*                                                                       */
 
176
  typedef unsigned short  FT_UShort;
 
177
 
 
178
 
 
179
  /*************************************************************************/
 
180
  /*                                                                       */
 
181
  /* <Type>                                                                */
 
182
  /*    FT_Int                                                             */
 
183
  /*                                                                       */
 
184
  /* <Description>                                                         */
 
185
  /*    A typedef for the int type.                                        */
 
186
  /*                                                                       */
 
187
  typedef int  FT_Int;
 
188
 
 
189
 
 
190
  /*************************************************************************/
 
191
  /*                                                                       */
 
192
  /* <Type>                                                                */
 
193
  /*    FT_UInt                                                            */
 
194
  /*                                                                       */
 
195
  /* <Description>                                                         */
 
196
  /*    A typedef for the unsigned int type.                               */
 
197
  /*                                                                       */
 
198
  typedef unsigned int  FT_UInt;
 
199
 
 
200
 
 
201
  /*************************************************************************/
 
202
  /*                                                                       */
 
203
  /* <Type>                                                                */
 
204
  /*    FT_Long                                                            */
 
205
  /*                                                                       */
 
206
  /* <Description>                                                         */
 
207
  /*    A typedef for signed long.                                         */
 
208
  /*                                                                       */
 
209
  typedef signed long  FT_Long;
 
210
 
 
211
 
 
212
  /*************************************************************************/
 
213
  /*                                                                       */
 
214
  /* <Type>                                                                */
 
215
  /*    FT_ULong                                                           */
 
216
  /*                                                                       */
 
217
  /* <Description>                                                         */
 
218
  /*    A typedef for unsigned long.                                       */
 
219
  /*                                                                       */
 
220
  typedef unsigned long  FT_ULong;
 
221
 
 
222
 
 
223
  /*************************************************************************/
 
224
  /*                                                                       */
 
225
  /* <Type>                                                                */
 
226
  /*    FT_F2Dot14                                                         */
 
227
  /*                                                                       */
 
228
  /* <Description>                                                         */
 
229
  /*    A signed 2.14 fixed float type used for unit vectors.              */
 
230
  /*                                                                       */
 
231
  typedef signed short  FT_F2Dot14;
 
232
 
 
233
 
 
234
  /*************************************************************************/
 
235
  /*                                                                       */
 
236
  /* <Type>                                                                */
 
237
  /*    FT_F26Dot6                                                         */
 
238
  /*                                                                       */
 
239
  /* <Description>                                                         */
 
240
  /*    A signed 26.6 fixed float type used for vectorial pixel            */
 
241
  /*    coordinates.                                                       */
 
242
  /*                                                                       */
 
243
  typedef signed long  FT_F26Dot6;
 
244
 
 
245
 
 
246
  /*************************************************************************/
 
247
  /*                                                                       */
 
248
  /* <Type>                                                                */
 
249
  /*    FT_Fixed                                                           */
 
250
  /*                                                                       */
 
251
  /* <Description>                                                         */
 
252
  /*    This type is used to store 16.16 fixed float values, like scales   */
 
253
  /*    or matrix coefficients.                                            */
 
254
  /*                                                                       */
 
255
  typedef signed long  FT_Fixed;
 
256
 
 
257
 
 
258
  /*************************************************************************/
 
259
  /*                                                                       */
 
260
  /* <Type>                                                                */
 
261
  /*    FT_Error                                                           */
 
262
  /*                                                                       */
 
263
  /* <Description>                                                         */
 
264
  /*    The FreeType error code type.  A value of 0 is always interpreted  */
 
265
  /*    as a successful operation.                                         */
 
266
  /*                                                                       */
 
267
  typedef int  FT_Error;
 
268
 
 
269
 
 
270
  /*************************************************************************/
 
271
  /*                                                                       */
 
272
  /* <Type>                                                                */
 
273
  /*    FT_Pointer                                                         */
 
274
  /*                                                                       */
 
275
  /* <Description>                                                         */
 
276
  /*    A simple typedef for a typeless pointer.                           */
 
277
  /*                                                                       */
 
278
  typedef void*  FT_Pointer;
 
279
 
 
280
 
 
281
  /*************************************************************************/
 
282
  /*                                                                       */
 
283
  /* <Type>                                                                */
 
284
  /*    FT_Offset                                                          */
 
285
  /*                                                                       */
 
286
  /* <Description>                                                         */
 
287
  /*    This is equivalent to the ANSI C `size_t' type, i.e. the largest   */
 
288
  /*    _unsigned_ integer type used to express a file size or position,   */
 
289
  /*    or a memory block size.                                            */
 
290
  /*                                                                       */
 
291
  typedef size_t  FT_Offset;
 
292
 
 
293
 
 
294
  /*************************************************************************/
 
295
  /*                                                                       */
 
296
  /* <Type>                                                                */
 
297
  /*    FT_PtrDist                                                         */
 
298
  /*                                                                       */
 
299
  /* <Description>                                                         */
 
300
  /*    This is equivalent to the ANSI C `ptrdiff_t' type, i.e. the        */
 
301
  /*    largest _signed_ integer type used to express the distance         */
 
302
  /*    between two pointers.                                              */
 
303
  /*                                                                       */
 
304
  typedef size_t  FT_PtrDist;
 
305
 
 
306
 
 
307
  /*************************************************************************/
 
308
  /*                                                                       */
 
309
  /* <Struct>                                                              */
 
310
  /*    FT_UnitVector                                                      */
 
311
  /*                                                                       */
 
312
  /* <Description>                                                         */
 
313
  /*    A simple structure used to store a 2D vector unit vector.  Uses    */
 
314
  /*    FT_F2Dot14 types.                                                  */
 
315
  /*                                                                       */
 
316
  /* <Fields>                                                              */
 
317
  /*    x :: Horizontal coordinate.                                        */
 
318
  /*                                                                       */
 
319
  /*    y :: Vertical coordinate.                                          */
 
320
  /*                                                                       */
 
321
  typedef struct  FT_UnitVector_
 
322
  {
 
323
    FT_F2Dot14  x;
 
324
    FT_F2Dot14  y;
 
325
 
 
326
  } FT_UnitVector;
 
327
 
 
328
 
 
329
  /*************************************************************************/
 
330
  /*                                                                       */
 
331
  /* <Struct>                                                              */
 
332
  /*    FT_Matrix                                                          */
 
333
  /*                                                                       */
 
334
  /* <Description>                                                         */
 
335
  /*    A simple structure used to store a 2x2 matrix.  Coefficients are   */
 
336
  /*    in 16.16 fixed float format.  The computation performed is:        */
 
337
  /*                                                                       */
 
338
  /*       {                                                               */
 
339
  /*          x' = x*xx + y*xy                                             */
 
340
  /*          y' = x*yx + y*yy                                             */
 
341
  /*       }                                                               */
 
342
  /*                                                                       */
 
343
  /* <Fields>                                                              */
 
344
  /*    xx :: Matrix coefficient.                                          */
 
345
  /*                                                                       */
 
346
  /*    xy :: Matrix coefficient.                                          */
 
347
  /*                                                                       */
 
348
  /*    yx :: Matrix coefficient.                                          */
 
349
  /*                                                                       */
 
350
  /*    yy :: Matrix coefficient.                                          */
 
351
  /*                                                                       */
 
352
  typedef struct  FT_Matrix_
 
353
  {
 
354
    FT_Fixed  xx, xy;
 
355
    FT_Fixed  yx, yy;
 
356
 
 
357
  } FT_Matrix;
 
358
 
 
359
 
 
360
  /*************************************************************************/
 
361
  /*                                                                       */
 
362
  /* <Struct>                                                              */
 
363
  /*    FT_Data                                                            */
 
364
  /*                                                                       */
 
365
  /* <Description>                                                         */
 
366
  /*    Read-only binary data represented as a pointer and a length.       */
 
367
  /*                                                                       */
 
368
  /* <Fields>                                                              */
 
369
  /*    pointer :: The data.                                               */
 
370
  /*                                                                       */
 
371
  /*    length  :: The length of the data in bytes.                        */
 
372
  /*                                                                       */
 
373
  typedef struct  FT_Data_
 
374
  {
 
375
    const FT_Byte*  pointer;
 
376
    FT_Int          length;
 
377
 
 
378
  } FT_Data;
 
379
 
 
380
 
 
381
  /*************************************************************************/
 
382
  /*                                                                       */
 
383
  /* <FuncType>                                                            */
 
384
  /*    FT_Generic_Finalizer                                               */
 
385
  /*                                                                       */
 
386
  /* <Description>                                                         */
 
387
  /*    Describes a function used to destroy the `client' data of any      */
 
388
  /*    FreeType object.  See the description of the FT_Generic type for   */
 
389
  /*    details of usage.                                                  */
 
390
  /*                                                                       */
 
391
  /* <Input>                                                               */
 
392
  /*    The address of the FreeType object which is under finalization.    */
 
393
  /*    Its client data is accessed through its `generic' field.           */
 
394
  /*                                                                       */
 
395
  typedef void  (*FT_Generic_Finalizer)(void*  object);
 
396
 
 
397
 
 
398
  /*************************************************************************/
 
399
  /*                                                                       */
 
400
  /* <Struct>                                                              */
 
401
  /*    FT_Generic                                                         */
 
402
  /*                                                                       */
 
403
  /* <Description>                                                         */
 
404
  /*    Client applications often need to associate their own data to a    */
 
405
  /*    variety of FreeType core objects.  For example, a text layout API  */
 
406
  /*    might want to associate a glyph cache to a given size object.      */
 
407
  /*                                                                       */
 
408
  /*    Most FreeType object contains a `generic' field, of type           */
 
409
  /*    FT_Generic, which usage is left to client applications and font    */
 
410
  /*    servers.                                                           */
 
411
  /*                                                                       */
 
412
  /*    It can be used to store a pointer to client-specific data, as well */
 
413
  /*    as the address of a `finalizer' function, which will be called by  */
 
414
  /*    FreeType when the object is destroyed (for example, the previous   */
 
415
  /*    client example would put the address of the glyph cache destructor */
 
416
  /*    in the `finalizer' field).                                         */
 
417
  /*                                                                       */
 
418
  /* <Fields>                                                              */
 
419
  /*    data      :: A typeless pointer to any client-specified data. This */
 
420
  /*                 field is completely ignored by the FreeType library.  */
 
421
  /*                                                                       */
 
422
  /*    finalizer :: A pointer to a `generic finalizer' function, which    */
 
423
  /*                 will be called when the object is destroyed.  If this */
 
424
  /*                 field is set to NULL, no code will be called.         */
 
425
  /*                                                                       */
 
426
  typedef struct  FT_Generic_
 
427
  {
 
428
    void*                 data;
 
429
    FT_Generic_Finalizer  finalizer;
 
430
 
 
431
  } FT_Generic;
 
432
 
 
433
 
 
434
  /*************************************************************************/
 
435
  /*                                                                       */
 
436
  /* <Macro>                                                               */
 
437
  /*    FT_MAKE_TAG                                                        */
 
438
  /*                                                                       */
 
439
  /* <Description>                                                         */
 
440
  /*    This macro converts four letter tags which are used to label       */
 
441
  /*    TrueType tables into an unsigned long to be used within FreeType.  */
 
442
  /*                                                                       */
 
443
  /* <Note>                                                                */
 
444
  /*    The produced values *must* be 32bit integers.  Don't redefine this */
 
445
  /*    macro.                                                             */
 
446
  /*                                                                       */
 
447
#define FT_MAKE_TAG( _x1, _x2, _x3, _x4 ) \
 
448
          ( ( (FT_ULong)_x1 << 24 ) |     \
 
449
            ( (FT_ULong)_x2 << 16 ) |     \
 
450
            ( (FT_ULong)_x3 <<  8 ) |     \
 
451
              (FT_ULong)_x4         )
 
452
 
 
453
 
 
454
  /*************************************************************************/
 
455
  /*************************************************************************/
 
456
  /*                                                                       */
 
457
  /*                    L I S T   M A N A G E M E N T                      */
 
458
  /*                                                                       */
 
459
  /*************************************************************************/
 
460
  /*************************************************************************/
 
461
 
 
462
 
 
463
  /*************************************************************************/
 
464
  /*                                                                       */
 
465
  /* <Section>                                                             */
 
466
  /*    list_processing                                                    */
 
467
  /*                                                                       */
 
468
  /*************************************************************************/
 
469
 
 
470
 
 
471
  /*************************************************************************/
 
472
  /*                                                                       */
 
473
  /* <Type>                                                                */
 
474
  /*    FT_ListNode                                                        */
 
475
  /*                                                                       */
 
476
  /* <Description>                                                         */
 
477
  /*     Many elements and objects in FreeType are listed through a        */
 
478
  /*     FT_List record (see FT_ListRec).  As its name suggests, a         */
 
479
  /*     FT_ListNode is a handle to a single list element.                 */
 
480
  /*                                                                       */
 
481
  typedef struct FT_ListNodeRec_*  FT_ListNode;
 
482
 
 
483
 
 
484
  /*************************************************************************/
 
485
  /*                                                                       */
 
486
  /* <Type>                                                                */
 
487
  /*    FT_List                                                            */
 
488
  /*                                                                       */
 
489
  /* <Description>                                                         */
 
490
  /*    A handle to a list record (see FT_ListRec).                        */
 
491
  /*                                                                       */
 
492
  typedef struct FT_ListRec_*  FT_List;
 
493
 
 
494
 
 
495
  /*************************************************************************/
 
496
  /*                                                                       */
 
497
  /* <Struct>                                                              */
 
498
  /*    FT_ListNodeRec                                                     */
 
499
  /*                                                                       */
 
500
  /* <Description>                                                         */
 
501
  /*    A structure used to hold a single list element.                    */
 
502
  /*                                                                       */
 
503
  /* <Fields>                                                              */
 
504
  /*    prev :: The previous element in the list.  NULL if first.          */
 
505
  /*                                                                       */
 
506
  /*    next :: The next element in the list.  NULL if last.               */
 
507
  /*                                                                       */
 
508
  /*    data :: A typeless pointer to the listed object.                   */
 
509
  /*                                                                       */
 
510
  typedef struct  FT_ListNodeRec_
 
511
  {
 
512
    FT_ListNode  prev;
 
513
    FT_ListNode  next;
 
514
    void*        data;
 
515
 
 
516
  } FT_ListNodeRec;
 
517
 
 
518
 
 
519
  /*************************************************************************/
 
520
  /*                                                                       */
 
521
  /* <Struct>                                                              */
 
522
  /*    FT_ListRec                                                         */
 
523
  /*                                                                       */
 
524
  /* <Description>                                                         */
 
525
  /*    A structure used to hold a simple doubly-linked list.  These are   */
 
526
  /*    used in many parts of FreeType.                                    */
 
527
  /*                                                                       */
 
528
  /* <Fields>                                                              */
 
529
  /*    head :: The head (first element) of doubly-linked list.            */
 
530
  /*                                                                       */
 
531
  /*    tail :: The tail (last element) of doubly-linked list.             */
 
532
  /*                                                                       */
 
533
  typedef struct  FT_ListRec_
 
534
  {
 
535
    FT_ListNode  head;
 
536
    FT_ListNode  tail;
 
537
 
 
538
  } FT_ListRec;
 
539
 
 
540
 
 
541
  /* */
 
542
 
 
543
#define FT_IS_EMPTY( list )  ( (list).head == 0 )
 
544
 
 
545
  /* return base error code (without module-specific prefix) */
 
546
#define FT_ERROR_BASE( x )    ( (x) & 0xFF )
 
547
 
 
548
  /* return module error code */
 
549
#define FT_ERROR_MODULE( x )  ( (x) & 0xFF00U )
 
550
 
 
551
#define FT_BOOL( x )  ( (FT_Bool)( x ) )
 
552
 
 
553
FT_END_HEADER
 
554
 
 
555
#endif /* __FTTYPES_H__ */
 
556
 
 
557
 
 
558
/* END */