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

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/src/pshinter/pshrec.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
/*  pshrec.h                                                               */
 
4
/*                                                                         */
 
5
/*    Postscript (Type1/Type2) hints recorder (specification).             */
 
6
/*                                                                         */
 
7
/*  Copyright 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
  /**************************************************************************/
 
20
  /*                                                                        */
 
21
  /*  The functions defined here are called from the Type 1, CID and CFF    */
 
22
  /*  font drivers to record the hints of a given character/glyph.          */
 
23
  /*                                                                        */
 
24
  /*  The hints are recorded in a unified format, and are later processed   */
 
25
  /*  by the "optimizer" and "fitter" to adjust the outlines to the pixel   */
 
26
  /*  grid.                                                                 */
 
27
  /*                                                                        */
 
28
  /**************************************************************************/
 
29
 
 
30
 
 
31
#ifndef __PSHREC_H__
 
32
#define __PSHREC_H__
 
33
 
 
34
 
 
35
#include <ft2build.h>
 
36
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
 
37
#include "pshglob.h"
 
38
 
 
39
 
 
40
FT_BEGIN_HEADER
 
41
 
 
42
 
 
43
  /*************************************************************************/
 
44
  /*************************************************************************/
 
45
  /*****                                                               *****/
 
46
  /*****                 GLYPH HINTS RECORDER INTERNALS                *****/
 
47
  /*****                                                               *****/
 
48
  /*************************************************************************/
 
49
  /*************************************************************************/
 
50
 
 
51
  /* handle to hint record */
 
52
  typedef struct PS_HintRec_*  PS_Hint;
 
53
 
 
54
  /* hint types */
 
55
  typedef enum
 
56
  {
 
57
    PS_HINT_TYPE_1 = 1,
 
58
    PS_HINT_TYPE_2 = 2
 
59
 
 
60
  } PS_Hint_Type;
 
61
 
 
62
 
 
63
  /* hint flags */
 
64
  typedef enum
 
65
  {
 
66
    PS_HINT_FLAG_GHOST  = 1,
 
67
    PS_HINT_FLAG_BOTTOM = 2
 
68
 
 
69
  } PS_Hint_Flags;
 
70
 
 
71
 
 
72
  /* hint descriptor */
 
73
  typedef struct  PS_HintRec_
 
74
  {
 
75
    FT_Int   pos;
 
76
    FT_Int   len;
 
77
    FT_UInt  flags;
 
78
 
 
79
  } PS_HintRec;
 
80
 
 
81
 
 
82
#define ps_hint_is_active( x )  ( (x)->flags & PS_HINT_FLAG_ACTIVE )
 
83
#define ps_hint_is_ghost( x )   ( (x)->flags & PS_HINT_FLAG_GHOST  )
 
84
#define ps_hint_is_bottom( x )  ( (x)->flags & PS_HINT_FLAG_BOTTOM )
 
85
 
 
86
 
 
87
  /* hints table descriptor */
 
88
  typedef struct  PS_Hint_TableRec_
 
89
  {
 
90
    FT_UInt  num_hints;
 
91
    FT_UInt  max_hints;
 
92
    PS_Hint  hints;
 
93
 
 
94
  } PS_Hint_TableRec, *PS_Hint_Table;
 
95
 
 
96
 
 
97
  /* hint and counter mask descriptor */
 
98
  typedef struct  PS_MaskRec_
 
99
  {
 
100
    FT_UInt   num_bits;
 
101
    FT_UInt   max_bits;
 
102
    FT_Byte*  bytes;
 
103
    FT_UInt   end_point;
 
104
 
 
105
  } PS_MaskRec, *PS_Mask;
 
106
 
 
107
 
 
108
  /* masks and counters table descriptor */
 
109
  typedef struct  PS_Mask_TableRec_
 
110
  {
 
111
    FT_UInt  num_masks;
 
112
    FT_UInt  max_masks;
 
113
    PS_Mask  masks;
 
114
 
 
115
  } PS_Mask_TableRec, *PS_Mask_Table;
 
116
 
 
117
 
 
118
 /* dimension-specific hints descriptor */
 
119
  typedef struct  PS_DimensionRec_
 
120
  {
 
121
    PS_Hint_TableRec  hints;
 
122
    PS_Mask_TableRec  masks;
 
123
    PS_Mask_TableRec  counters;
 
124
 
 
125
  } PS_DimensionRec, *PS_Dimension;
 
126
 
 
127
 
 
128
  /* glyph hints descriptor                                */
 
129
  /* dimension 0 => X coordinates + vertical hints/stems   */
 
130
  /* dimension 1 => Y coordinates + horizontal hints/stems */
 
131
  typedef struct  PS_HintsRec_
 
132
  {
 
133
    FT_Memory        memory;
 
134
    FT_Error         error;
 
135
    FT_UInt32        magic;
 
136
    PS_Hint_Type     hint_type;
 
137
    PS_DimensionRec  dimension[2];
 
138
 
 
139
  } PS_HintsRec, *PS_Hints;
 
140
 
 
141
  /* */
 
142
 
 
143
  /* initialize hints recorder */
 
144
  FT_LOCAL( FT_Error )
 
145
  ps_hints_init( PS_Hints   hints,
 
146
                 FT_Memory  memory );
 
147
 
 
148
  /* finalize hints recorder */
 
149
  FT_LOCAL( void )
 
150
  ps_hints_done( PS_Hints  hints );
 
151
 
 
152
  /* initialize Type1 hints recorder interface */
 
153
  FT_LOCAL( void )
 
154
  t1_hints_funcs_init( T1_Hints_FuncsRec*  funcs );
 
155
 
 
156
  /* initialize Type2 hints recorder interface */
 
157
  FT_LOCAL( void )
 
158
  t2_hints_funcs_init( T2_Hints_FuncsRec*  funcs );
 
159
 
 
160
 
 
161
#ifdef DEBUG_HINTER
 
162
  extern PS_Hints  ps_debug_hints;
 
163
  extern  int      ps_debug_no_horz_hints;
 
164
  extern  int      ps_debug_no_vert_hints;
 
165
#endif
 
166
 
 
167
 /* */
 
168
 
 
169
 
 
170
FT_END_HEADER
 
171
 
 
172
 
 
173
#endif /* __PS_HINTER_RECORD_H__ */
 
174
 
 
175
 
 
176
/* END */