• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * %W% %E%
3  *
4  * (C) Copyright IBM Corp. 1998-2008 - 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 
69     le_uint16               *lookupOrderArray;
70     le_uint32               lookupOrderCount;
71 
72 private:
73 
74     LookupProcessor(const LookupProcessor &other); // forbid copying of this class
75     LookupProcessor &operator=(const LookupProcessor &other); // forbid copying of this class
76 };
77 
78 U_NAMESPACE_END
79 #endif
80