PageRenderTime 341ms CodeModel.GetById 181ms app.highlight 10ms RepoModel.GetById 147ms app.codeStats 1ms

/src/compiler/android-ndk/jni/freetype/src/pshinter/pshglob.h

http://ftk.googlecode.com/
C++ Header | 196 lines | 90 code | 53 blank | 53 comment | 0 complexity | 9e7e2833ed2afa8f7f236404a53d9d36 MD5 | raw file
  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
 27FT_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
190FT_END_HEADER
191
192
193#endif /* __PSHGLOB_H__ */
194
195
196/* END */