diff -r 000000000000 -r bde4ae8d615e os/textandloc/fontservices/textshaperplugin/IcuSource/layout/PairPositioningSubtables.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/textandloc/fontservices/textshaperplugin/IcuSource/layout/PairPositioningSubtables.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,84 @@ +/* + * + * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved + * + */ + +#ifndef __PAIRPOSITIONINGSUBTABLES_H +#define __PAIRPOSITIONINGSUBTABLES_H + +/** + * \file + * \internal + */ + +#include "LETypes.h" +#include "LEFontInstance.h" +#include "OpenTypeTables.h" +#include "GlyphPositioningTables.h" +#include "ValueRecords.h" +#include "GlyphIterator.h" + +U_NAMESPACE_BEGIN + +// NOTE: ValueRecord has a variable size +struct PairValueRecord +{ + TTGlyphID secondGlyph; + ValueRecord valueRecord1; +// ValueRecord valueRecord2; +}; + +struct PairSetTable +{ + le_uint16 pairValueCount; + PairValueRecord pairValueRecordArray[ANY_NUMBER]; +}; + +struct PairPositioningSubtable : GlyphPositioningSubtable +{ + ValueFormat valueFormat1; + ValueFormat valueFormat2; + + le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; +}; + +struct PairPositioningFormat1Subtable : PairPositioningSubtable +{ + le_uint16 pairSetCount; + Offset pairSetTableOffsetArray[ANY_NUMBER]; + + le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; + +private: + const PairValueRecord *findPairValueRecord(TTGlyphID glyphID, const PairValueRecord *records, + le_uint16 recordCount, le_uint16 recordSize) const; +}; + +// NOTE: ValueRecord has a variable size +struct Class2Record +{ + ValueRecord valueRecord1; +// ValueRecord valurRecord2; +}; + +struct Class1Record +{ + Class2Record class2RecordArray[ANY_NUMBER]; +}; + +struct PairPositioningFormat2Subtable : PairPositioningSubtable +{ + Offset classDef1Offset; + Offset classDef2Offset; + le_uint16 class1Count; + le_uint16 class2Count; + Class1Record class1RecordArray[ANY_NUMBER]; + + le_uint32 process(GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; +}; + +U_NAMESPACE_END +#endif + +