--- /dev/null
+/***************************************************************************/
+/* */
+/* 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 */