/src/3rdparty/freetype/src/pshinter/pshrec.h
https://bitbucket.org/ultra_iter/qt-vtl · C Header · 176 lines · 75 code · 50 blank · 51 comment · 0 complexity · 5b73f68172c5bf43b5a7c5192cd915c4 MD5 · raw file
- /***************************************************************************/
- /* */
- /* pshrec.h */
- /* */
- /* Postscript (Type1/Type2) hints recorder (specification). */
- /* */
- /* Copyright 2001, 2002, 2003, 2006, 2008 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. */
- /* */
- /***************************************************************************/
- /**************************************************************************/
- /* */
- /* The functions defined here are called from the Type 1, CID and CFF */
- /* font drivers to record the hints of a given character/glyph. */
- /* */
- /* The hints are recorded in a unified format, and are later processed */
- /* by the `optimizer' and `fitter' to adjust the outlines to the pixel */
- /* grid. */
- /* */
- /**************************************************************************/
- #ifndef __PSHREC_H__
- #define __PSHREC_H__
- #include <ft2build.h>
- #include FT_INTERNAL_POSTSCRIPT_HINTS_H
- #include "pshglob.h"
- FT_BEGIN_HEADER
- /*************************************************************************/
- /*************************************************************************/
- /***** *****/
- /***** GLYPH HINTS RECORDER INTERNALS *****/
- /***** *****/
- /*************************************************************************/
- /*************************************************************************/
- /* handle to hint record */
- typedef struct PS_HintRec_* PS_Hint;
- /* hint types */
- typedef enum PS_Hint_Type_
- {
- PS_HINT_TYPE_1 = 1,
- PS_HINT_TYPE_2 = 2
- } PS_Hint_Type;
- /* hint flags */
- typedef enum PS_Hint_Flags_
- {
- PS_HINT_FLAG_GHOST = 1,
- PS_HINT_FLAG_BOTTOM = 2
- } PS_Hint_Flags;
- /* hint descriptor */
- typedef struct PS_HintRec_
- {
- FT_Int pos;
- FT_Int len;
- FT_UInt flags;
- } PS_HintRec;
- #define ps_hint_is_active( x ) ( (x)->flags & PS_HINT_FLAG_ACTIVE )
- #define ps_hint_is_ghost( x ) ( (x)->flags & PS_HINT_FLAG_GHOST )
- #define ps_hint_is_bottom( x ) ( (x)->flags & PS_HINT_FLAG_BOTTOM )
- /* hints table descriptor */
- typedef struct PS_Hint_TableRec_
- {
- FT_UInt num_hints;
- FT_UInt max_hints;
- PS_Hint hints;
- } PS_Hint_TableRec, *PS_Hint_Table;
- /* hint and counter mask descriptor */
- typedef struct PS_MaskRec_
- {
- FT_UInt num_bits;
- FT_UInt max_bits;
- FT_Byte* bytes;
- FT_UInt end_point;
- } PS_MaskRec, *PS_Mask;
- /* masks and counters table descriptor */
- typedef struct PS_Mask_TableRec_
- {
- FT_UInt num_masks;
- FT_UInt max_masks;
- PS_Mask masks;
- } PS_Mask_TableRec, *PS_Mask_Table;
- /* dimension-specific hints descriptor */
- typedef struct PS_DimensionRec_
- {
- PS_Hint_TableRec hints;
- PS_Mask_TableRec masks;
- PS_Mask_TableRec counters;
- } PS_DimensionRec, *PS_Dimension;
- /* glyph hints descriptor */
- /* dimension 0 => X coordinates + vertical hints/stems */
- /* dimension 1 => Y coordinates + horizontal hints/stems */
- typedef struct PS_HintsRec_
- {
- FT_Memory memory;
- FT_Error error;
- FT_UInt32 magic;
- PS_Hint_Type hint_type;
- PS_DimensionRec dimension[2];
- } PS_HintsRec, *PS_Hints;
- /* */
- /* initialize hints recorder */
- FT_LOCAL( FT_Error )
- ps_hints_init( PS_Hints hints,
- FT_Memory memory );
- /* finalize hints recorder */
- FT_LOCAL( void )
- ps_hints_done( PS_Hints hints );
- /* initialize Type1 hints recorder interface */
- FT_LOCAL( void )
- t1_hints_funcs_init( T1_Hints_FuncsRec* funcs );
- /* initialize Type2 hints recorder interface */
- FT_LOCAL( void )
- t2_hints_funcs_init( T2_Hints_FuncsRec* funcs );
- #ifdef DEBUG_HINTER
- extern PS_Hints ps_debug_hints;
- extern int ps_debug_no_horz_hints;
- extern int ps_debug_no_vert_hints;
- #endif
- /* */
- FT_END_HEADER
- #endif /* __PS_HINTER_RECORD_H__ */
- /* END */