00001 /* 00002 * @(#)LigatureSubstitutionProcessor.h 1.6 00/03/15 00003 * 00004 * (C) Copyright IBM Corp. 1998, 1999, 2000 - All Rights Reserved 00005 * 00006 */ 00007 00008 #ifndef __LIGATURESUBSTITUTIONPROCESSOR_H 00009 #define __LIGATURESUBSTITUTIONPROCESSOR_H 00010 00011 #include "LETypes.h" 00012 #include "MorphTables.h" 00013 #include "SubtableProcessor.h" 00014 #include "StateTableProcessor.h" 00015 #include "LigatureSubstitution.h" 00016 00017 00018 #define nComponents 16 00019 00020 class LigatureSubstitutionProcessor : public StateTableProcessor 00021 { 00022 public: 00023 virtual void beginStateTable(); 00024 00025 virtual ByteOffset processStateEntry(LEGlyphID *glyphs, le_int32 *charIndices, le_int32 &currGlyph, 00026 le_int32 glyphCount, EntryTableIndex index); 00027 00028 virtual void endStateTable(); 00029 00030 LigatureSubstitutionProcessor(MorphSubtableHeader *morphSubtableHeader); 00031 virtual ~LigatureSubstitutionProcessor(); 00032 00033 private: 00034 LigatureSubstitutionProcessor(); 00035 00036 protected: 00037 ByteOffset ligatureActionTableOffset; 00038 ByteOffset componentTableOffset; 00039 ByteOffset ligatureTableOffset; 00040 00041 LigatureSubstitutionStateEntry *entryTable; 00042 00043 le_int32 componentStack[nComponents]; 00044 le_int16 m; 00045 00046 LigatureSubstitutionHeader *ligatureSubstitutionHeader; 00047 }; 00048 00049 #endif