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 getReference()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 86