]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * %W% %E% | |
3 | * | |
4 | * (C) Copyright IBM Corp. 1998-2013 - All Rights Reserved | |
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" | |
19 | #include "LETableReference.h" | |
20 | //#include "Lookups.h" | |
21 | //#include "Features.h" | |
22 | ||
23 | U_NAMESPACE_BEGIN | |
24 | ||
25 | class LEFontInstance; | |
26 | class LEGlyphStorage; | |
27 | class GlyphIterator; | |
28 | class GlyphPositionAdjustments; | |
29 | struct FeatureTable; | |
30 | struct FeatureListTable; | |
31 | struct GlyphDefinitionTableHeader; | |
32 | struct LookupSubtable; | |
33 | struct LookupTable; | |
34 | ||
35 | class LookupProcessor : public UMemory { | |
36 | public: | |
37 | le_int32 process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments, | |
38 | le_bool rightToLeft, const LEReferenceTo<GlyphDefinitionTableHeader> &glyphDefinitionTableHeader, const LEFontInstance *fontInstance, LEErrorCode& success) const; | |
39 | ||
40 | le_uint32 applyLookupTable(const LEReferenceTo<LookupTable> &lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; | |
41 | ||
42 | le_uint32 applySingleLookup(le_uint16 lookupTableIndex, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const; | |
43 | ||
44 | virtual le_uint32 applySubtable(const LEReferenceTo<LookupSubtable> &lookupSubtable, le_uint16 subtableType, | |
45 | GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const = 0; | |
46 | ||
47 | virtual ~LookupProcessor(); | |
48 | ||
49 | const LETableReference &getReference() const { return fReference; } | |
50 | ||
51 | protected: | |
52 | LookupProcessor(const LETableReference &baseAddress, | |
53 | Offset scriptListOffset, | |
54 | Offset featureListOffset, | |
55 | Offset lookupListOffset, | |
56 | LETag scriptTag, | |
57 | LETag languageTag, | |
58 | const FeatureMap *featureMap, | |
59 | le_int32 featureMapCount, | |
60 | le_bool orderFeatures, | |
61 | LEErrorCode& success); | |
62 | ||
63 | LookupProcessor(); | |
64 | ||
65 | le_int32 selectLookups(const LEReferenceTo<FeatureTable> &featureTable, FeatureMask featureMask, le_int32 order, LEErrorCode &success); | |
66 | ||
67 | LEReferenceTo<LookupListTable> lookupListTable; | |
68 | LEReferenceTo<FeatureListTable> featureListTable; | |
69 | ||
70 | FeatureMask *lookupSelectArray; | |
71 | le_uint32 lookupSelectCount; | |
72 | ||
73 | le_uint16 *lookupOrderArray; | |
74 | le_uint32 lookupOrderCount; | |
75 | ||
76 | LETableReference fReference; | |
77 | ||
78 | private: | |
79 | ||
80 | LookupProcessor(const LookupProcessor &other); // forbid copying of this class | |
81 | LookupProcessor &operator=(const LookupProcessor &other); // forbid copying of this class | |
82 | }; | |
83 | ||
84 | U_NAMESPACE_END | |
85 | #endif |