sl@0: /* sl@0: * sl@0: * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved sl@0: * sl@0: */ sl@0: sl@0: #ifndef __STATETABLEPROCESSOR_H sl@0: #define __STATETABLEPROCESSOR_H sl@0: sl@0: /** sl@0: * \file sl@0: * \internal sl@0: */ sl@0: sl@0: #include "LETypes.h" sl@0: #include "MorphTables.h" sl@0: #include "MorphStateTables.h" sl@0: #include "SubtableProcessor.h" sl@0: sl@0: U_NAMESPACE_BEGIN sl@0: sl@0: class LEGlyphStorage; sl@0: sl@0: class StateTableProcessor : public SubtableProcessor sl@0: { sl@0: public: sl@0: void process(LEGlyphStorage &glyphStorage); sl@0: sl@0: virtual void beginStateTable() = 0; sl@0: sl@0: virtual ByteOffset processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index) = 0; sl@0: sl@0: virtual void endStateTable() = 0; sl@0: sl@0: protected: sl@0: StateTableProcessor(const MorphSubtableHeader *morphSubtableHeader); sl@0: virtual ~StateTableProcessor(); sl@0: sl@0: StateTableProcessor(); sl@0: sl@0: le_int16 stateSize; sl@0: ByteOffset classTableOffset; sl@0: ByteOffset stateArrayOffset; sl@0: ByteOffset entryTableOffset; sl@0: sl@0: const ClassTable *classTable; sl@0: TTGlyphID firstGlyph; sl@0: TTGlyphID lastGlyph; sl@0: sl@0: const MorphStateTableHeader *stateTableHeader; sl@0: sl@0: private: sl@0: StateTableProcessor(const StateTableProcessor &other); // forbid copying of this class sl@0: StateTableProcessor &operator=(const StateTableProcessor &other); // forbid copying of this class sl@0: }; sl@0: sl@0: U_NAMESPACE_END sl@0: #endif