os/textandloc/fontservices/textshaperplugin/IcuSource/layout/GlyphPosnLookupProc.cpp
Update contrib.
3 * (C) Copyright IBM Corp. 1998 - 2004 - All Rights Reserved
8 #include "LEFontInstance.h"
9 #include "OpenTypeTables.h"
12 #include "ScriptAndLanguage.h"
13 #include "GlyphDefinitionTables.h"
14 #include "GlyphPositioningTables.h"
15 #include "SinglePositioningSubtables.h"
16 #include "PairPositioningSubtables.h"
17 #include "CursiveAttachmentSubtables.h"
18 #include "MarkToBasePosnSubtables.h"
19 #include "MarkToLigaturePosnSubtables.h"
20 #include "MarkToMarkPosnSubtables.h"
21 //#include "ContextualPositioningSubtables.h"
22 #include "ContextualSubstSubtables.h"
23 #include "ExtensionSubtables.h"
24 #include "LookupProcessor.h"
25 #include "GlyphPosnLookupProc.h"
30 // Aside from the names, the contextual positioning subtables are
31 // the same as the contextual substitution subtables.
32 typedef ContextualSubstitutionSubtable ContextualPositioningSubtable;
33 typedef ChainingContextualSubstitutionSubtable ChainingContextualPositioningSubtable;
35 GlyphPositioningLookupProcessor::GlyphPositioningLookupProcessor(
36 const GlyphPositioningTableHeader *glyphPositioningTableHeader,
37 LETag scriptTag, LETag languageTag, const LETag *featureOrder)
39 (char *) glyphPositioningTableHeader,
40 SWAPW(glyphPositioningTableHeader->scriptListOffset),
41 SWAPW(glyphPositioningTableHeader->featureListOffset),
42 SWAPW(glyphPositioningTableHeader->lookupListOffset),
43 scriptTag, languageTag, featureOrder)
48 GlyphPositioningLookupProcessor::GlyphPositioningLookupProcessor()
52 le_uint32 GlyphPositioningLookupProcessor::applySubtable(
53 const LookupSubtable *lookupSubtable, le_uint16 lookupType,
54 GlyphIterator *glyphIterator, const LEFontInstance *fontInstance,
55 LEErrorCode& success) const
57 if (LE_FAILURE(success)) {
70 const SinglePositioningSubtable *subtable = (const SinglePositioningSubtable *) lookupSubtable;
72 delta = subtable->process(glyphIterator, fontInstance);
78 const PairPositioningSubtable *subtable = (const PairPositioningSubtable *) lookupSubtable;
80 delta = subtable->process(glyphIterator, fontInstance);
86 const CursiveAttachmentSubtable *subtable = (const CursiveAttachmentSubtable *) lookupSubtable;
88 delta = subtable->process(glyphIterator, fontInstance);
94 const MarkToBasePositioningSubtable *subtable = (const MarkToBasePositioningSubtable *) lookupSubtable;
96 delta = subtable->process(glyphIterator, fontInstance);
100 case gpstMarkToLigature:
102 const MarkToLigaturePositioningSubtable *subtable = (const MarkToLigaturePositioningSubtable *) lookupSubtable;
104 delta = subtable->process(glyphIterator, fontInstance);
110 const MarkToMarkPositioningSubtable *subtable = (const MarkToMarkPositioningSubtable *) lookupSubtable;
112 delta = subtable->process(glyphIterator, fontInstance);
118 const ContextualPositioningSubtable *subtable = (const ContextualPositioningSubtable *) lookupSubtable;
120 delta = subtable->process(this, glyphIterator, fontInstance, success);
124 case gpstChainedContext:
126 const ChainingContextualPositioningSubtable *subtable = (const ChainingContextualPositioningSubtable *) lookupSubtable;
128 delta = subtable->process(this, glyphIterator, fontInstance, success);
134 const ExtensionSubtable *subtable = (const ExtensionSubtable *) lookupSubtable;
136 delta = subtable->process(this, lookupType, glyphIterator, fontInstance, success);
147 GlyphPositioningLookupProcessor::~GlyphPositioningLookupProcessor()