summaryrefslogtreecommitdiff
path: root/src/pshinter/psrecord.h
blob: 06abd387e16e4bf180575597924a5e18bcced672 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#ifndef __PSRECORD_H_
#define __PSRECORD_H__

#include FT_INTERNAL_POSTSCRIPT_HINTS_H

FT_BEGIN_HEADER

 /**********************************************************************/
 /**********************************************************************/
 /*****                                                            *****/
 /*****                 GLYPH HINTS RECORDER INTERNALS             *****/
 /*****                                                            *****/
 /**********************************************************************/
 /**********************************************************************/

 /* handle to hint record */
  typedef struct PS_HintRec_*   PS_Hint;

 /* hint flags */
  typedef enum
  {
    PS_HINT_FLAG_ACTIVE = 1,
    PS_HINT_FLAG_GHOST  = 2,
    PS_HINT_FLAG_BOTTOM = 4

  } PS_Hint_Flags;

 /* hint descriptor */
  typedef struct PS_HintRec_
  {
    FT_Int    org_pos;
    FT_Int    org_len;
    FT_UInt   flags;

#if 0
    FT_Pos    cur_pos;
    FT_Pos    cur_len;

    PS_Hint   parent;

    FT_Fixed  interp_scale;
    FT_Fixed  interp_delta;
#endif

  } 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;


 /* magic value used within PS_HintsRec */
#define PS_HINTS_MAGIC  0x68696e74   /* "hint" */


 /* glyph hints descriptor */
  typedef struct PS_HintsRec_
  {
    FT_Memory          memory;
    FT_Error           error;
    FT_UInt32          magic;
    PS_Hint_Type       hint_type;
    PS_DimensionRec    dimension[2];

  } PS_HintsRec;

 /* */

FT_END_HEADER

#endif /* __T1_FITTER_HINTS_H__ */