Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/***************************************************************************/
2
/*                                                                         */
3
/*  pshrec.h                                                               */
4
/*                                                                         */
5
/*    Postscript (Type1/Type2) hints recorder (specification).             */
6
/*                                                                         */
7
/*  Copyright 2001, 2002, 2003, 2006, 2008 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 
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  PS_Hint_Type_
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  PS_Hint_Flags_
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 */