1 /* 2 * 3 * (C) Copyright IBM Corp. and others 2013-2014 - All Rights Reserved 4 * 5 */ 6 7 #ifndef __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H 8 #define __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H 9 10 /** 11 * \file 12 * \internal 13 */ 14 15 #include "LETypes.h" 16 #include "MorphTables.h" 17 #include "SubtableProcessor2.h" 18 #include "StateTableProcessor2.h" 19 #include "ContextualGlyphInsertionProc2.h" 20 #include "ContextualGlyphInsertion.h" 21 22 U_NAMESPACE_BEGIN 23 24 class LEGlyphStorage; 25 26 class ContextualGlyphInsertionProcessor2 : public StateTableProcessor2 27 { 28 public: 29 virtual void beginStateTable(); 30 31 virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, 32 le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success); 33 34 virtual void endStateTable(); 35 36 ContextualGlyphInsertionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); 37 virtual ~ContextualGlyphInsertionProcessor2(); 38 39 /** 40 * ICU "poor man's RTTI", returns a UClassID for the actual class. 41 * 42 * @deprecated ICU 54. See {@link icu::LayoutEngine} 43 */ 44 virtual UClassID getDynamicClassID() const; 45 46 /** 47 * ICU "poor man's RTTI", returns a UClassID for this class. 48 * 49 * @deprecated ICU 54. See {@link icu::LayoutEngine} 50 */ 51 static UClassID getStaticClassID(); 52 53 private: 54 ContextualGlyphInsertionProcessor2(); 55 56 /** 57 * Perform the actual insertion 58 * @param atGlyph index of glyph to insert at 59 * @param index index into the insertionTable (in/out) 60 * @param count number of insertions 61 * @param isKashidaLike Kashida like (vs Split Vowel like). No effect currently. 62 * @param isBefore if true, insert extra glyphs before the marked glyph 63 */ 64 void doInsertion(LEGlyphStorage &glyphStorage, 65 le_int16 atGlyph, 66 le_int16 &index, 67 le_int16 count, 68 le_bool isKashidaLike, 69 le_bool isBefore, 70 LEErrorCode &success); 71 72 73 protected: 74 le_int32 markGlyph; 75 LEReferenceToArrayOf<le_uint16> insertionTable; 76 LEReferenceToArrayOf<ContextualGlyphInsertionStateEntry2> entryTable; 77 LEReferenceTo<ContextualGlyphInsertionHeader2> contextualGlyphHeader; 78 }; 79 80 U_NAMESPACE_END 81 #endif 82