]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/layout/LookupProcessor.h
ICU-511.25.tar.gz
[apple/icu.git] / icuSources / layout / LookupProcessor.h
index e8257e9e7685fd377581f36544e6f295a7d0a3cb..43ade08c8cece91e3e97da2c1b233f484fe6af94 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * %W% %E%
  *
- * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
+ * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
  *
  */
 
 #include "LETypes.h"
 #include "LEFontInstance.h"
 #include "OpenTypeTables.h"
-#include "Lookups.h"
-#include "Features.h"
-#include "GlyphDefinitionTables.h"
-#include "GlyphPositionAdjustments.h"
-#include "GlyphIterator.h"
+//#include "Lookups.h"
+//#include "Features.h"
 
 U_NAMESPACE_BEGIN
 
-class LEGlyphStorage;
+class  LEFontInstance;
+class  LEGlyphStorage;
+class  GlyphIterator;
+class  GlyphPositionAdjustments;
+struct FeatureTable;
+struct FeatureListTable;
+struct GlyphDefinitionTableHeader;
+struct LookupSubtable;
+struct LookupTable;
 
 class LookupProcessor : public UMemory {
 public:
-    static const LETag notSelected;
-    static const LETag defaultFeature;
+    le_int32 process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustments *glyphPositionAdjustments,
+                 le_bool rightToLeft, const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, const LEFontInstance *fontInstance, LEErrorCode& success) const;
 
-    le_int32 process(LEGlyphStorage &glyphStorage, GlyphPositionAdjustment *glyphPositionAdjustments,
-                 le_bool rightToLeft, const GlyphDefinitionTableHeader *glyphDefinitionTableHeader, const LEFontInstance *fontInstance) const;
+    le_uint32 applyLookupTable(const LookupTable *lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
 
-    le_uint32 applyLookupTable(const LookupTable *lookupTable, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const;
-
-    le_uint32 applySingleLookup(le_uint16 lookupTableIndex, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const;
+    le_uint32 applySingleLookup(le_uint16 lookupTableIndex, GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const;
 
     virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 subtableType,
-        GlyphIterator *glyphIterator, const LEFontInstance *fontInstance) const = 0;
+        GlyphIterator *glyphIterator, const LEFontInstance *fontInstance, LEErrorCode& success) const = 0;
 
     virtual ~LookupProcessor();
 
 protected:
     LookupProcessor(const char *baseAddress,
-        Offset scriptListOffset, Offset featureListOffset, Offset lookupListOffset,
-        LETag scriptTag, LETag languageTag, const LETag *featureOrder);
+        Offset scriptListOffset, 
+        Offset featureListOffset, 
+        Offset lookupListOffset,
+        LETag scriptTag, 
+        LETag languageTag, 
+        const FeatureMap *featureMap, 
+        le_int32 featureMapCount, 
+        le_bool orderFeatures, 
+        LEErrorCode& success);
 
     LookupProcessor();
 
-    le_int32 selectLookups(const FeatureTable *featureTable, LETag featureTag, le_int32 order);
+    le_int32 selectLookups(const FeatureTable *featureTable, FeatureMask featureMask, le_int32 order);
 
     const LookupListTable   *lookupListTable;
     const FeatureListTable  *featureListTable;
 
-    LETag                   *lookupSelectArray;
-    LETag                   requiredFeatureTag;
+    FeatureMask            *lookupSelectArray;
+    le_uint32              lookupSelectCount;
 
     le_uint16               *lookupOrderArray;
     le_uint32               lookupOrderCount;