1 /* 2 * 3 * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved 4 * 5 */ 6 7 #ifndef __CLASSDEFINITIONTABLES_H 8 #define __CLASSDEFINITIONTABLES_H 9 10 /** 11 * \file 12 * \internal 13 */ 14 15 #include "LETypes.h" 16 #include "OpenTypeTables.h" 17 18 U_NAMESPACE_BEGIN 19 20 struct ClassDefinitionTable 21 { 22 le_uint16 classFormat; 23 24 le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; 25 le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; 26 getGlyphClassClassDefinitionTable27 le_int32 getGlyphClass(LEGlyphID glyphID) const { 28 LETableReference base((const le_uint8*)this); 29 LEErrorCode ignored = LE_NO_ERROR; 30 return getGlyphClass(base,glyphID,ignored); 31 } 32 hasGlyphClassClassDefinitionTable33 le_bool hasGlyphClass(le_int32 glyphClass) const { 34 LETableReference base((const le_uint8*)this); 35 LEErrorCode ignored = LE_NO_ERROR; 36 return hasGlyphClass(base,glyphClass,ignored); 37 } 38 }; 39 40 struct ClassDefFormat1Table : ClassDefinitionTable 41 { 42 TTGlyphID startGlyph; 43 le_uint16 glyphCount; 44 le_uint16 classValueArray[ANY_NUMBER]; 45 46 le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; 47 le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; 48 }; 49 LE_VAR_ARRAY(ClassDefFormat1Table, classValueArray) 50 51 52 struct ClassRangeRecord 53 { 54 TTGlyphID start; 55 TTGlyphID end; 56 le_uint16 classValue; 57 }; 58 59 struct ClassDefFormat2Table : ClassDefinitionTable 60 { 61 le_uint16 classRangeCount; 62 GlyphRangeRecord classRangeRecordArray[ANY_NUMBER]; 63 64 le_int32 getGlyphClass(const LETableReference &base, LEGlyphID glyphID, LEErrorCode &success) const; 65 le_bool hasGlyphClass(const LETableReference &base, le_int32 glyphClass, LEErrorCode &success) const; 66 }; 67 LE_VAR_ARRAY(ClassDefFormat2Table, classRangeRecordArray) 68 69 U_NAMESPACE_END 70 #endif 71