sl@0: /* sl@0: * sl@0: * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved sl@0: * sl@0: */ sl@0: sl@0: #ifndef __CONTEXTUALGLYPHSUBSTITUTIONPROCESSOR_H sl@0: #define __CONTEXTUALGLYPHSUBSTITUTIONPROCESSOR_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 "SubtableProcessor.h" sl@0: #include "StateTableProcessor.h" sl@0: #include "ContextualGlyphSubstitution.h" sl@0: sl@0: U_NAMESPACE_BEGIN sl@0: sl@0: class LEGlyphStorage; sl@0: sl@0: class ContextualGlyphSubstitutionProcessor : public StateTableProcessor sl@0: { sl@0: public: sl@0: virtual void beginStateTable(); sl@0: sl@0: virtual ByteOffset processStateEntry(LEGlyphStorage &glyphStorage, le_int32 &currGlyph, EntryTableIndex index); sl@0: sl@0: virtual void endStateTable(); sl@0: sl@0: ContextualGlyphSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader); sl@0: virtual ~ContextualGlyphSubstitutionProcessor(); sl@0: sl@0: /** sl@0: * ICU "poor man's RTTI", returns a UClassID for the actual class. sl@0: * sl@0: * @stable ICU 2.8 sl@0: */ sl@0: virtual UClassID getDynamicClassID() const; sl@0: sl@0: /** sl@0: * ICU "poor man's RTTI", returns a UClassID for this class. sl@0: * sl@0: * @stable ICU 2.8 sl@0: */ sl@0: static UClassID getStaticClassID(); sl@0: sl@0: private: sl@0: ContextualGlyphSubstitutionProcessor(); sl@0: sl@0: protected: sl@0: ByteOffset substitutionTableOffset; sl@0: const ContextualGlyphSubstitutionStateEntry *entryTable; sl@0: sl@0: le_int32 markGlyph; sl@0: sl@0: const ContextualGlyphSubstitutionHeader *contextualGlyphSubstitutionHeader; sl@0: sl@0: }; sl@0: sl@0: U_NAMESPACE_END sl@0: #endif