sl@0: /* sl@0: * sl@0: * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved sl@0: * sl@0: */ sl@0: sl@0: #ifndef __LIGATURESUBSTITUTIONPROCESSOR_H sl@0: #define __LIGATURESUBSTITUTIONPROCESSOR_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 "LigatureSubstitution.h" sl@0: sl@0: U_NAMESPACE_BEGIN sl@0: sl@0: class LEGlyphStorage; sl@0: sl@0: #define nComponents 16 sl@0: sl@0: class LigatureSubstitutionProcessor : 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: LigatureSubstitutionProcessor(const MorphSubtableHeader *morphSubtableHeader); sl@0: virtual ~LigatureSubstitutionProcessor(); 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: LigatureSubstitutionProcessor(); sl@0: sl@0: protected: sl@0: ByteOffset ligatureActionTableOffset; sl@0: ByteOffset componentTableOffset; sl@0: ByteOffset ligatureTableOffset; sl@0: sl@0: const LigatureSubstitutionStateEntry *entryTable; sl@0: sl@0: le_int32 componentStack[nComponents]; sl@0: le_int16 m; sl@0: sl@0: const LigatureSubstitutionHeader *ligatureSubstitutionHeader; sl@0: sl@0: }; sl@0: sl@0: U_NAMESPACE_END sl@0: #endif