3 * (C) Copyright IBM Corp. and others 2013-2014 - All Rights Reserved
7 #ifndef __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H
8 #define __CONTEXTUALGLYPHINSERTIONPROCESSOR2_H
16 #include "MorphTables.h"
17 #include "SubtableProcessor2.h"
18 #include "StateTableProcessor2.h"
19 #include "ContextualGlyphInsertionProc2.h"
20 #include "ContextualGlyphInsertion.h"
26 class ContextualGlyphInsertionProcessor2 : public StateTableProcessor2
29 virtual void beginStateTable();
31 virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage,
32 le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success);
34 virtual void endStateTable();
36 ContextualGlyphInsertionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success);
37 virtual ~ContextualGlyphInsertionProcessor2();
40 * ICU "poor man's RTTI", returns a UClassID for the actual class.
42 * @deprecated ICU 54. See {@link icu::LayoutEngine}
44 virtual UClassID getDynamicClassID() const;
47 * ICU "poor man's RTTI", returns a UClassID for this class.
49 * @deprecated ICU 54. See {@link icu::LayoutEngine}
51 static UClassID getStaticClassID();
54 ContextualGlyphInsertionProcessor2();
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
64 void doInsertion(LEGlyphStorage &glyphStorage,
68 le_bool isKashidaLike,
70 LEErrorCode &success);
75 LEReferenceToArrayOf<le_uint16> insertionTable;
76 LEReferenceToArrayOf<ContextualGlyphInsertionStateEntry2> entryTable;
77 LEReferenceTo<ContextualGlyphInsertionHeader2> contextualGlyphHeader;