diff options
| author | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
|---|---|---|
| committer | Charles.Forsyth <devnull@localhost> | 2006-12-22 17:07:39 +0000 |
| commit | 37da2899f40661e3e9631e497da8dc59b971cbd0 (patch) | |
| tree | cbc6d4680e347d906f5fa7fca73214418741df72 /libfreetype/pshalgo1.h | |
| parent | 54bc8ff236ac10b3eaa928fd6bcfc0cdb2ba46ae (diff) | |
20060303a
Diffstat (limited to 'libfreetype/pshalgo1.h')
| -rw-r--r-- | libfreetype/pshalgo1.h | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/libfreetype/pshalgo1.h b/libfreetype/pshalgo1.h new file mode 100644 index 00000000..2f795a6a --- /dev/null +++ b/libfreetype/pshalgo1.h @@ -0,0 +1,110 @@ +/***************************************************************************/ +/* */ +/* pshalgo1.h */ +/* */ +/* PostScript hinting algorithm 1 (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 __PSHALGO1_H__ +#define __PSHALGO1_H__ + +#include "pshrec.h" + +FT_BEGIN_HEADER + + typedef struct PSH1_HintRec_* PSH1_Hint; + + typedef enum + { + PSH1_HINT_FLAG_GHOST = PS_HINT_FLAG_GHOST, + PSH1_HINT_FLAG_BOTTOM = PS_HINT_FLAG_BOTTOM, + PSH1_HINT_FLAG_ACTIVE = 4 + + } PSH1_Hint_Flags; + +#define psh1_hint_is_active( x ) \ + ( ( (x)->flags & PSH1_HINT_FLAG_ACTIVE ) != 0 ) +#define psh1_hint_is_ghost( x ) \ + ( ( (x)->flags & PSH1_HINT_FLAG_GHOST ) != 0 ) + +#define psh1_hint_activate( x ) (x)->flags |= PSH1_HINT_FLAG_ACTIVE +#define psh1_hint_deactivate( x ) (x)->flags &= ~PSH1_HINT_FLAG_ACTIVE + + typedef struct PSH1_HintRec_ + { + FT_Int org_pos; + FT_Int org_len; + FT_Pos cur_pos; + FT_Pos cur_len; + + FT_UInt flags; + + PSH1_Hint parent; + FT_Int order; + + } PSH1_HintRec; + + + /* this is an interpolation zone used for strong points; */ + /* weak points are interpolated according to their strong */ + /* neighbours */ + typedef struct PSH1_ZoneRec_ + { + FT_Fixed scale; + FT_Fixed delta; + FT_Pos min; + FT_Pos max; + + } PSH1_ZoneRec, *PSH1_Zone; + + + typedef struct PSH1_Hint_TableRec_ + { + FT_UInt max_hints; + FT_UInt num_hints; + PSH1_Hint hints; + PSH1_Hint* sort; + PSH1_Hint* sort_global; + FT_UInt num_zones; + PSH1_Zone zones; + PSH1_Zone zone; + PS_Mask_Table hint_masks; + PS_Mask_Table counter_masks; + + } PSH1_Hint_TableRec, *PSH1_Hint_Table; + + + extern FT_Error + ps1_hints_apply( PS_Hints ps_hints, + FT_Outline* outline, + PSH_Globals globals, + FT_Render_Mode hint_mode ); + + +#ifdef DEBUG_HINTER + extern PSH1_Hint_Table ps1_debug_hint_table; + + typedef void + (*PSH1_HintFunc)( PSH1_Hint hint, + FT_Bool vertical ); + + extern PSH1_HintFunc ps1_debug_hint_func; +#endif + +FT_END_HEADER + +#endif /* __PSHALGO1_H__ */ + + +/* END */ |
