• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  *
3  * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
4  *
5  */
6 
7 #ifndef __PAIRPOSITIONINGSUBTABLES_H
8 #define __PAIRPOSITIONINGSUBTABLES_H
9 
10 /**
11  * \file
12  * \internal
13  */
14 
15 #include "LETypes.h"
16 #include "LEFontInstance.h"
17 #include "OpenTypeTables.h"
18 #include "GlyphPositioningTables.h"
19 #include "ValueRecords.h"
20 #include "GlyphIterator.h"
21 
22 U_NAMESPACE_BEGIN
23 
24 // NOTE: ValueRecord has a variable size
25 struct PairValueRecord
26 {
27     TTGlyphID     secondGlyph;
28     ValueRecord valueRecord1;
29 //  ValueRecord valueRecord2;
30 };
31 
32 struct PairSetTable
33 {
34     le_uint16       pairValueCount;
35     PairValueRecord pairValueRecordArray[ANY_NUMBER];
36 };
37 
38 struct PairPositioningSubtable : GlyphPositioningSubtable
39 {
40     ValueFormat valueFormat1;
41     ValueFormat valueFormat2;
42 
43     le_uint32  process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const;
44 };
45 
46 struct PairPositioningFormat1Subtable : PairPositioningSubtable
47 {
48     le_uint16   pairSetCount;
49     Offset      pairSetTableOffsetArray[ANY_NUMBER];
50 
51     le_uint32  process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const;
52 
53 private:
54     const PairValueRecord *findPairValueRecord(TTGlyphID glyphID, const PairValueRecord *records,
55         le_uint16 recordCount, le_uint16 recordSize) const;
56 };
57 
58 // NOTE: ValueRecord has a variable size
59 struct Class2Record
60 {
61     ValueRecord valueRecord1;
62 //  ValueRecord valurRecord2;
63 };
64 
65 struct Class1Record
66 {
67     Class2Record class2RecordArray[ANY_NUMBER];
68 };
69 
70 struct PairPositioningFormat2Subtable : PairPositioningSubtable
71 {
72     Offset       classDef1Offset;
73     Offset       classDef2Offset;
74     le_uint16    class1Count;
75     le_uint16    class2Count;
76     Class1Record class1RecordArray[ANY_NUMBER];
77 
78     le_uint32  process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const;
79 };
80 
81 U_NAMESPACE_END
82 #endif
83 
84 
85