diff -r 000000000000 -r bde4ae8d615e os/textandloc/fontservices/textshaperplugin/IcuSource/layout/LookupTables.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/textandloc/fontservices/textshaperplugin/IcuSource/layout/LookupTables.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,90 @@ +/* + * + * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved + * + */ + +#ifndef __LOOKUPTABLES_H +#define __LOOKUPTABLES_H + +/** + * \file + * \internal + */ + +#include "LETypes.h" +#include "LayoutTables.h" + +U_NAMESPACE_BEGIN + +enum LookupTableFormat +{ + ltfSimpleArray = 0, + ltfSegmentSingle = 2, + ltfSegmentArray = 4, + ltfSingleTable = 6, + ltfTrimmedArray = 8 +}; + +typedef le_int16 LookupValue; + +struct LookupTable +{ + le_int16 format; +}; + +struct LookupSegment +{ + TTGlyphID lastGlyph; + TTGlyphID firstGlyph; + LookupValue value; +}; + +struct LookupSingle +{ + TTGlyphID glyph; + LookupValue value; +}; + +struct BinarySearchLookupTable : LookupTable +{ + le_int16 unitSize; + le_int16 nUnits; + le_int16 searchRange; + le_int16 entrySelector; + le_int16 rangeShift; + + const LookupSegment *lookupSegment(const LookupSegment *segments, LEGlyphID glyph) const; + + const LookupSingle *lookupSingle(const LookupSingle *entries, LEGlyphID glyph) const; +}; + +struct SimpleArrayLookupTable : LookupTable +{ + LookupValue valueArray[ANY_NUMBER]; +}; + +struct SegmentSingleLookupTable : BinarySearchLookupTable +{ + LookupSegment segments[ANY_NUMBER]; +}; + +struct SegmentArrayLookupTable : BinarySearchLookupTable +{ + LookupSegment segments[ANY_NUMBER]; +}; + +struct SingleTableLookupTable : BinarySearchLookupTable +{ + LookupSingle entries[ANY_NUMBER]; +}; + +struct TrimmedArrayLookupTable : LookupTable +{ + TTGlyphID firstGlyph; + TTGlyphID glyphCount; + LookupValue valueArray[ANY_NUMBER]; +}; + +U_NAMESPACE_END +#endif