1/* 2 * 3 * (C) Copyright IBM Corp. and others 1998-2013 - All Rights Reserved 4 * 5 */ 6 7#ifndef __STATETABLEPROCESSOR2_H 8#define __STATETABLEPROCESSOR2_H 9 10/** 11 * \file 12 * \internal 13 */ 14 15#include "LETypes.h" 16#include "MorphTables.h" 17#include "MorphStateTables.h" 18#include "SubtableProcessor2.h" 19#include "LookupTables.h" 20 21U_NAMESPACE_BEGIN 22 23class LEGlyphStorage; 24 25class StateTableProcessor2 : public SubtableProcessor2 26{ 27public: 28 void process(LEGlyphStorage &glyphStorage, LEErrorCode &success); 29 30 virtual void beginStateTable() = 0; 31 32 virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success) = 0; 33 34 virtual void endStateTable() = 0; 35 36protected: 37 StateTableProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); 38 virtual ~StateTableProcessor2(); 39 40 StateTableProcessor2(); 41 42 le_int32 dir; 43 le_uint16 format; 44 le_uint32 nClasses; 45 le_uint32 classTableOffset; 46 le_uint32 stateArrayOffset; 47 le_uint32 entryTableOffset; 48 49 LEReferenceTo<LookupTable> classTable; 50 LEReferenceToArrayOf<EntryTableIndex2> stateArray; 51 LEReferenceTo<MorphStateTableHeader2> stateTableHeader; 52 LEReferenceTo<StateTableHeader2> stHeader; // for convenience 53 54private: 55 StateTableProcessor2(const StateTableProcessor2 &other); // forbid copying of this class 56 StateTableProcessor2 &operator=(const StateTableProcessor2 &other); // forbid copying of this class 57}; 58 59U_NAMESPACE_END 60#endif 61