os/textandloc/fontservices/textshaperplugin/IcuSource/layout/PairPositioningSubtables.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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