⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pshalgo2.h

📁 一个Xpdf应用的例子
💻 H
字号:
/***************************************************************************//*                                                                         *//*  pshalgo2.h                                                             *//*                                                                         *//*    PostScript hinting algorithm 2 (specification).                      *//*                                                                         *//*  Copyright 2001 by                                                      *//*  David Turner, Robert Wilhelm, and Werner Lemberg.                      *//*                                                                         *//*  This file is part of the FreeType project, and may only be used,       *//*  modified, and distributed under the terms of the FreeType project      *//*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     *//*  this file you indicate that you have read the license and              *//*  understand and accept it fully.                                        *//*                                                                         *//***************************************************************************/#ifndef __PSHALGO2_H__#define __PSHALGO2_H__#include "pshrec.h"#include "pshglob.h"#include FT_TRIGONOMETRY_HFT_BEGIN_HEADER  typedef struct PSH2_HintRec_*  PSH2_Hint;  typedef enum  {    PSH2_HINT_GHOST  = PS_HINT_FLAG_GHOST,    PSH2_HINT_BOTTOM = PS_HINT_FLAG_BOTTOM,    PSH2_HINT_ACTIVE = 4,    PSH2_HINT_FITTED = 8  } PSH2_Hint_Flags;#define psh2_hint_is_active( x )  ( ( (x)->flags & PSH2_HINT_ACTIVE ) != 0 )#define psh2_hint_is_ghost( x )   ( ( (x)->flags & PSH2_HINT_GHOST  ) != 0 )#define psh2_hint_is_fitted( x )  ( ( (x)->flags & PSH2_HINT_FITTED ) != 0 )#define psh2_hint_activate( x )    (x)->flags |=  PSH2_HINT_ACTIVE#define psh2_hint_deactivate( x )  (x)->flags &= ~PSH2_HINT_ACTIVE#define psh2_hint_set_fitted( x )  (x)->flags |=  PSH2_HINT_FITTED  typedef struct  PSH2_HintRec_  {    FT_Int     org_pos;    FT_Int     org_len;    FT_Pos     cur_pos;    FT_Pos     cur_len;    FT_UInt    flags;    PSH2_Hint  parent;    FT_Int     order;  } PSH2_HintRec;  /* this is an interpolation zone used for strong points;  */  /* weak points are interpolated according to their strong */  /* neighbours                                             */  typedef struct  PSH2_ZoneRec_  {    FT_Fixed  scale;    FT_Fixed  delta;    FT_Pos    min;    FT_Pos    max;  } PSH2_ZoneRec, *PSH2_Zone;  typedef struct  PSH2_Hint_TableRec_  {    FT_UInt        max_hints;    FT_UInt        num_hints;    PSH2_Hint      hints;    PSH2_Hint*     sort;    PSH2_Hint*     sort_global;    FT_UInt        num_zones;    PSH2_Zone      zones;    PSH2_Zone      zone;    PS_Mask_Table  hint_masks;    PS_Mask_Table  counter_masks;  } PSH2_Hint_TableRec, *PSH2_Hint_Table;  typedef struct PSH2_PointRec_*    PSH2_Point;  typedef struct PSH2_ContourRec_*  PSH2_Contour;  enum  {    PSH2_DIR_NONE  =  4,    PSH2_DIR_UP    =  1,    PSH2_DIR_DOWN  = -1,    PSH2_DIR_LEFT  = -2,    PSH2_DIR_RIGHT =  2  };  enum  {    PSH2_POINT_OFF    = 1,   /* point is off the curve  */    PSH2_POINT_STRONG = 2,   /* point is strong         */    PSH2_POINT_SMOOTH = 4,   /* point is smooth         */    PSH2_POINT_FITTED = 8    /* point is already fitted */  };  typedef struct  PSH2_PointRec_  {    PSH2_Point    prev;    PSH2_Point    next;    PSH2_Contour  contour;    FT_UInt       flags;    FT_Char       dir_in;    FT_Char       dir_out;    FT_Angle      angle_in;    FT_Angle      angle_out;    PSH2_Hint     hint;    FT_Pos        org_u;    FT_Pos        cur_u;#ifdef DEBUG_HINTER    FT_Pos        org_x;    FT_Pos        cur_x;    FT_Pos        org_y;    FT_Pos        cur_y;    FT_UInt       flags_x;    FT_UInt       flags_y;#endif  } PSH2_PointRec;#define psh2_point_is_strong( p )   ( (p)->flags & PSH2_POINT_STRONG )#define psh2_point_is_fitted( p )   ( (p)->flags & PSH2_POINT_FITTED )#define psh2_point_is_smooth( p )   ( (p)->flags & PSH2_POINT_SMOOTH )#define psh2_point_set_strong( p )  (p)->flags |= PSH2_POINT_STRONG#define psh2_point_set_fitted( p )  (p)->flags |= PSH2_POINT_FITTED#define psh2_point_set_smooth( p )  (p)->flags |= PSH2_POINT_SMOOTH  typedef struct  PSH2_ContourRec_  {    PSH2_Point  start;    FT_UInt     count;  } PSH2_ContourRec;  typedef struct  PSH2_GlyphRec_  {    FT_UInt             num_points;    FT_UInt             num_contours;    PSH2_Point          points;    PSH2_Contour        contours;    FT_Memory           memory;    FT_Outline*         outline;    PSH_Globals         globals;    PSH2_Hint_TableRec  hint_tables[2];    FT_Bool             vertical;    FT_Int              major_dir;    FT_Int              minor_dir;  } PSH2_GlyphRec, *PSH2_Glyph;#ifdef DEBUG_HINTER  extern PSH2_Hint_Table  ps2_debug_hint_table;  typedef void  (*PSH2_HintFunc)( PSH2_Hint  hint,                    FT_Bool    vertical );  extern PSH2_HintFunc    ps2_debug_hint_func;  extern PSH2_Glyph       ps2_debug_glyph;#endif  extern FT_Error  ps2_hints_apply( PS_Hints     ps_hints,                   FT_Outline*  outline,                   PSH_Globals  globals );FT_END_HEADER#endif /* __PSHALGO2_H__ *//* END */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -