Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/***************************************************************************/
2
/*                                                                         */
3
/*  pshglob.h                                                              */
4
/*                                                                         */
5
/*    PostScript hinter global hinting management.                         */
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
#ifndef __PSHGLOB_H__
20
#define __PSHGLOB_H__
21
 
22
 
23
#include FT_FREETYPE_H
24
#include FT_INTERNAL_POSTSCRIPT_HINTS_H
25
 
26
 
27
FT_BEGIN_HEADER
28
 
29
 
30
  /*************************************************************************/
31
  /*************************************************************************/
32
  /*****                                                               *****/
33
  /*****                    GLOBAL HINTS INTERNALS                     *****/
34
  /*****                                                               *****/
35
  /*************************************************************************/
36
  /*************************************************************************/
37
 
38
 
39
  /*************************************************************************/
40
  /*                                                                       */
41
  /* @constant:                                                            */
42
  /*    PS_GLOBALS_MAX_BLUE_ZONES                                          */
43
  /*                                                                       */
44
  /* @description:                                                         */
45
  /*    The maximum number of blue zones in a font global hints structure. */
46
  /*    See @PS_Globals_BluesRec.                                          */
47
  /*                                                                       */
48
#define PS_GLOBALS_MAX_BLUE_ZONES  16
49
 
50
 
51
  /*************************************************************************/
52
  /*                                                                       */
53
  /* @constant:                                                            */
54
  /*    PS_GLOBALS_MAX_STD_WIDTHS                                          */
55
  /*                                                                       */
56
  /* @description:                                                         */
57
  /*    The maximum number of standard and snap widths in either the       */
58
  /*    horizontal or vertical direction.  See @PS_Globals_WidthsRec.      */
59
  /*                                                                       */
60
#define PS_GLOBALS_MAX_STD_WIDTHS  16
61
 
62
 
63
  /* standard and snap width */
64
  typedef struct  PSH_WidthRec_
65
  {
66
    FT_Int  org;
67
    FT_Pos  cur;
68
    FT_Pos  fit;
69
 
70
  } PSH_WidthRec, *PSH_Width;
71
 
72
 
73
  /* standard and snap widths table */
74
  typedef struct  PSH_WidthsRec_
75
  {
76
    FT_UInt       count;
77
    PSH_WidthRec  widths[PS_GLOBALS_MAX_STD_WIDTHS];
78
 
79
  } PSH_WidthsRec, *PSH_Widths;
80
 
81
 
82
  typedef struct  PSH_DimensionRec_
83
  {
84
    PSH_WidthsRec  stdw;
85
    FT_Fixed       scale_mult;
86
    FT_Fixed       scale_delta;
87
 
88
  } PSH_DimensionRec, *PSH_Dimension;
89
 
90
 
91
  /* blue zone descriptor */
92
  typedef struct  PSH_Blue_ZoneRec_
93
  {
94
    FT_Int  org_ref;
95
    FT_Int  org_delta;
96
    FT_Int  org_top;
97
    FT_Int  org_bottom;
98
 
99
    FT_Pos  cur_ref;
100
    FT_Pos  cur_delta;
101
    FT_Pos  cur_bottom;
102
    FT_Pos  cur_top;
103
 
104
  } PSH_Blue_ZoneRec, *PSH_Blue_Zone;
105
 
106
 
107
  typedef struct  PSH_Blue_TableRec_
108
  {
109
    FT_UInt           count;
110
    PSH_Blue_ZoneRec  zones[PS_GLOBALS_MAX_BLUE_ZONES];
111
 
112
  } PSH_Blue_TableRec, *PSH_Blue_Table;
113
 
114
 
115
  /* blue zones table */
116
  typedef struct  PSH_BluesRec_
117
  {
118
    PSH_Blue_TableRec  normal_top;
119
    PSH_Blue_TableRec  normal_bottom;
120
    PSH_Blue_TableRec  family_top;
121
    PSH_Blue_TableRec  family_bottom;
122
 
123
    FT_Fixed           blue_scale;
124
    FT_Int             blue_shift;
125
    FT_Int             blue_threshold;
126
    FT_Int             blue_fuzz;
127
    FT_Bool            no_overshoots;
128
 
129
  } PSH_BluesRec, *PSH_Blues;
130
 
131
 
132
  /* font globals.                                         */
133
  /* dimension 0 => X coordinates + vertical hints/stems   */
134
  /* dimension 1 => Y coordinates + horizontal hints/stems */
135
  typedef struct  PSH_GlobalsRec_
136
  {
137
    FT_Memory         memory;
138
    PSH_DimensionRec  dimension[2];
139
    PSH_BluesRec      blues;
140
 
141
  } PSH_GlobalsRec;
142
 
143
 
144
#define PSH_BLUE_ALIGN_NONE  0
145
#define PSH_BLUE_ALIGN_TOP   1
146
#define PSH_BLUE_ALIGN_BOT   2
147
 
148
 
149
  typedef struct  PSH_AlignmentRec_
150
  {
151
    int     align;
152
    FT_Pos  align_top;
153
    FT_Pos  align_bot;
154
 
155
  } PSH_AlignmentRec, *PSH_Alignment;
156
 
157
 
158
  FT_LOCAL( void )
159
  psh_globals_funcs_init( PSH_Globals_FuncsRec*  funcs );
160
 
161
 
162
#if 0
163
  /* snap a stem width to fitter coordinates.  `org_width' is in font */
164
  /* units.  The result is in device pixels (26.6 format).            */
165
  FT_LOCAL( FT_Pos )
166
  psh_dimension_snap_width( PSH_Dimension  dimension,
167
                            FT_Int         org_width );
168
#endif
169
 
170
  FT_LOCAL( FT_Error )
171
  psh_globals_set_scale( PSH_Globals  globals,
172
                         FT_Fixed     x_scale,
173
                         FT_Fixed     y_scale,
174
                         FT_Fixed     x_delta,
175
                         FT_Fixed     y_delta );
176
 
177
  /* snap a stem to one or two blue zones */
178
  FT_LOCAL( void )
179
  psh_blues_snap_stem( PSH_Blues      blues,
180
                       FT_Int         stem_top,
181
                       FT_Int         stem_bot,
182
                       PSH_Alignment  alignment );
183
  /* */
184
 
185
#ifdef DEBUG_HINTER
186
  extern PSH_Globals  ps_debug_globals;
187
#endif
188
 
189
 
190
FT_END_HEADER
191
 
192
 
193
#endif /* __PSHGLOB_H__ */
194
 
195
 
196
/* END */