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

« back to all changes in this revision

Viewing changes to src/3rdparty/freetype/src/pshinter/pshglob.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
/*  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 */