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