]>
Commit | Line | Data |
---|---|---|
b75a7d8f A |
1 | /* |
2 | * %W% %E% | |
3 | * | |
73c04bcf | 4 | * (C) Copyright IBM Corp. 1998-2005 - All Rights Reserved |
b75a7d8f A |
5 | * |
6 | */ | |
7 | ||
8 | #ifndef __LOOKUPPROCESSOR_H | |
9 | #define __LOOKUPPROCESSOR_H | |
10 | ||
11 | /** | |
12 | * \file | |
13 | * \internal | |
14 | */ | |
15 | ||
16 | #include "LETypes.h" | |
17 | #include "LEFontInstance.h" | |
18 | #include "OpenTypeTables.h" | |
73c04bcf A |
19 | //#include "Lookups.h" |
20 | //#include "Features.h" | |
b75a7d8f A |
21 | |
22 | U_NAMESPACE_BEGIN | |
23 | ||
73c04bcf A |
24 | class LEFontInstance; |
25 | class LEGlyphStorage; | |
26 | class GlyphIterator; | |
27 | class GlyphPositionAdjustments; | |
28 | struct FeatureTable; | |
29 | struct FeatureListTable; | |
30 | struct GlyphDefinitionTableHeader; | |
31 | struct LookupSubtable; | |
32 | struct LookupTable; | |
374ca955 | 33 | |
b75a7d8f A |
34 | class LookupProcessor : public UMemory { |
35 | public: | |
73c04bcf | 36 | le_int32 process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, |
b75a7d8f A |
37 | le_bool rightToLeft, const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, const LEFontInstance *fontInstance) const; |
38 | ||
39 | le_uint32 applyLookupTable(const LookupTable *lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; | |
40 | ||
41 | le_uint32 applySingleLookup(le_uint16 lookupTableIndex, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const; | |
42 | ||
43 | virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 subtableType, | |
44 | GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const = 0; | |
45 | ||
46 | virtual ~LookupProcessor(); | |
47 | ||
48 | protected: | |
73c04bcf | 49 | LookupProcessor(const char *baseAddress, |
b75a7d8f | 50 | Offset scriptListOffset, Offset featureListOffset, Offset lookupListOffset, |
73c04bcf | 51 | LETag scriptTag, LETag languageTag, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool orderFeatures); |
b75a7d8f | 52 | |
73c04bcf | 53 | LookupProcessor(); |
b75a7d8f | 54 | |
73c04bcf | 55 | le_int32 selectLookups(const FeatureTable *featureTable, FeatureMask featureMask, le_int32 order); |
b75a7d8f A |
56 | |
57 | const LookupListTable *lookupListTable; | |
58 | const FeatureListTable *featureListTable; | |
59 | ||
73c04bcf | 60 | FeatureMask *lookupSelectArray; |
b75a7d8f A |
61 | |
62 | le_uint16 *lookupOrderArray; | |
63 | le_uint32 lookupOrderCount; | |
64 | ||
65 | private: | |
66 | ||
67 | LookupProcessor(const LookupProcessor &other); // forbid copying of this class | |
68 | LookupProcessor &operator=(const LookupProcessor &other); // forbid copying of this class | |
69 | }; | |
70 | ||
71 | U_NAMESPACE_END | |
72 | #endif |