]>
Commit | Line | Data |
---|---|---|
51004dcb A |
1 | /* |
2 | * | |
b331163b | 3 | * (C) Copyright IBM Corp. and others 2013-2014 - All Rights Reserved |
51004dcb A |
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 | ||
57a6839d A |
31 | virtual le_uint16 processStateEntry(LEGlyphStorage &glyphStorage, |
32 | le_int32 &currGlyph, EntryTableIndex2 index, LEErrorCode &success); | |
51004dcb A |
33 | |
34 | virtual void endStateTable(); | |
35 | ||
57a6839d | 36 | ContextualGlyphInsertionProcessor2(const LEReferenceTo<MorphSubtableHeader2> &morphSubtableHeader, LEErrorCode &success); |
51004dcb A |
37 | virtual ~ContextualGlyphInsertionProcessor2(); |
38 | ||
39 | /** | |
40 | * ICU "poor man's RTTI", returns a UClassID for the actual class. | |
41 | * | |
b331163b | 42 | * @deprecated ICU 54. See {@link icu::LayoutEngine} |
51004dcb A |
43 | */ |
44 | virtual UClassID getDynamicClassID() const; | |
45 | ||
46 | /** | |
47 | * ICU "poor man's RTTI", returns a UClassID for this class. | |
48 | * | |
b331163b | 49 | * @deprecated ICU 54. See {@link icu::LayoutEngine} |
51004dcb A |
50 | */ |
51 | static UClassID getStaticClassID(); | |
52 | ||
53 | private: | |
54 | ContextualGlyphInsertionProcessor2(); | |
55 | ||
57a6839d A |
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 | ||
51004dcb A |
73 | protected: |
74 | le_int32 markGlyph; | |
57a6839d A |
75 | LEReferenceToArrayOf<le_uint16> insertionTable; |
76 | LEReferenceToArrayOf<ContextualGlyphInsertionStateEntry2> entryTable; | |
77 | LEReferenceTo<ContextualGlyphInsertionHeader2> contextualGlyphHeader; | |
51004dcb A |
78 | }; |
79 | ||
80 | U_NAMESPACE_END | |
81 | #endif |