4 * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
8 #ifndef __LOOKUPPROCESSOR_H
9 #define __LOOKUPPROCESSOR_H
17 #include "LEFontInstance.h"
18 #include "OpenTypeTables.h"
19 //#include "Lookups.h"
20 //#include "Features.h"
27 class GlyphPositionAdjustments
;
29 struct FeatureListTable
;
30 struct GlyphDefinitionTableHeader
;
31 struct LookupSubtable
;
34 class LookupProcessor
: public UMemory
{
36 le_int32
process(LEGlyphStorage
&glyphStorage
, GlyphPositionAdjustments
*glyphPositionAdjustments
,
37 le_bool rightToLeft
, const GlyphDefinitionTableHeader
*glyphDefinitionTableHeader
, const LEFontInstance
*fontInstance
, LEErrorCode
& success
) const;
39 le_uint32
applyLookupTable(const LookupTable
*lookupTable
, GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
, LEErrorCode
& success
) const;
41 le_uint32
applySingleLookup(le_uint16 lookupTableIndex
, GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
, LEErrorCode
& success
) const;
43 virtual le_uint32
applySubtable(const LookupSubtable
*lookupSubtable
, le_uint16 subtableType
,
44 GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
, LEErrorCode
& success
) const = 0;
46 virtual ~LookupProcessor();
49 LookupProcessor(const char *baseAddress
,
50 Offset scriptListOffset
,
51 Offset featureListOffset
,
52 Offset lookupListOffset
,
55 const FeatureMap
*featureMap
,
56 le_int32 featureMapCount
,
57 le_bool orderFeatures
,
58 LEErrorCode
& success
);
62 le_int32
selectLookups(const FeatureTable
*featureTable
, FeatureMask featureMask
, le_int32 order
);
64 const LookupListTable
*lookupListTable
;
65 const FeatureListTable
*featureListTable
;
67 FeatureMask
*lookupSelectArray
;
68 le_uint32 lookupSelectCount
;
70 le_uint16
*lookupOrderArray
;
71 le_uint32 lookupOrderCount
;
75 LookupProcessor(const LookupProcessor
&other
); // forbid copying of this class
76 LookupProcessor
&operator=(const LookupProcessor
&other
); // forbid copying of this class