diff -r 000000000000 -r bde4ae8d615e os/textandloc/fontservices/textshaperplugin/IcuSource/layout/ValueRecords.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/textandloc/fontservices/textshaperplugin/IcuSource/layout/ValueRecords.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,72 @@ +/* + * + * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved + * + */ + +#ifndef __VALUERECORDS_H +#define __VALUERECORDS_H + +/** + * \file + * \internal + */ + +#include "LETypes.h" +#include "LEFontInstance.h" +#include "OpenTypeTables.h" +#include "GlyphIterator.h" + +U_NAMESPACE_BEGIN + +typedef le_uint16 ValueFormat; +typedef le_int16 ValueRecordField; + +struct ValueRecord +{ + le_int16 values[ANY_NUMBER]; + + le_int16 getFieldValue(ValueFormat valueFormat, ValueRecordField field) const; + le_int16 getFieldValue(le_int16 index, ValueFormat valueFormat, ValueRecordField field) const; + void adjustPosition(ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator, + const LEFontInstance *fontInstance) const; + void adjustPosition(le_int16 index, ValueFormat valueFormat, const char *base, GlyphIterator &glyphIterator, + const LEFontInstance *fontInstance) const; + + static le_int16 getSize(ValueFormat valueFormat); + +private: + static le_int16 getFieldCount(ValueFormat valueFormat); + static le_int16 getFieldIndex(ValueFormat valueFormat, ValueRecordField field); +}; + +enum ValueRecordFields +{ + vrfXPlacement = 0, + vrfYPlacement = 1, + vrfXAdvance = 2, + vrfYAdvance = 3, + vrfXPlaDevice = 4, + vrfYPlaDevice = 5, + vrfXAdvDevice = 6, + vrfYAdvDevice = 7 +}; + +enum ValueFormatBits +{ + vfbXPlacement = 0x0001, + vfbYPlacement = 0x0002, + vfbXAdvance = 0x0004, + vfbYAdvance = 0x0008, + vfbXPlaDevice = 0x0010, + vfbYPlaDevice = 0x0020, + vfbXAdvDevice = 0x0040, + vfbYAdvDevice = 0x0080, + vfbReserved = 0xFF00, + vfbAnyDevice = vfbXPlaDevice + vfbYPlaDevice + vfbXAdvDevice + vfbYAdvDevice +}; + +U_NAMESPACE_END +#endif + +