fontservices/textshaperplugin/IcuSource/layout/PairPositioningSubtables.h
changeset 0 1fb32624e06b
equal deleted inserted replaced
-1:000000000000 0:1fb32624e06b
       
     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