00001 /* 00002 * @(#)StateTableProcessor.h 1.6 00/03/15 00003 * 00004 * (C) Copyright IBM Corp. 1998, 1999, 2000 - All Rights Reserved 00005 * 00006 */ 00007 00008 #ifndef __STATETABLEPROCESSOR_H 00009 #define __STATETABLEPROCESSOR_H 00010 00011 #include "LETypes.h" 00012 #include "MorphTables.h" 00013 #include "MorphStateTables.h" 00014 #include "SubtableProcessor.h" 00015 00016 class StateTableProcessor : public SubtableProcessor 00017 { 00018 public: 00019 void process(LEGlyphID *glyphs, le_int32 *charIndices, le_int32 glyph); 00020 00021 virtual void beginStateTable() = 0; 00022 00023 virtual ByteOffset processStateEntry(LEGlyphID *glyphs, le_int32 *charIndices, le_int32 &currGlyph, 00024 le_int32 glyphCount, EntryTableIndex index) = 0; 00025 00026 virtual void endStateTable() = 0; 00027 00028 protected: 00029 StateTableProcessor(MorphSubtableHeader *morphSubtableHeader); 00030 virtual ~StateTableProcessor(); 00031 00032 StateTableProcessor(); 00033 00034 le_int16 stateSize; 00035 ByteOffset classTableOffset; 00036 ByteOffset stateArrayOffset; 00037 ByteOffset entryTableOffset; 00038 00039 ClassTable *classTable; 00040 le_int16 firstGlyph; 00041 le_int16 lastGlyph; 00042 00043 MorphStateTableHeader *stateTableHeader; 00044 }; 00045 00046 #endif