Subversion Repositories Kolibri OS

Rev

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

  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 */
  197.