4 * (C) Copyright IBM Corp. 1998-2004 - All Rights Reserved
8 #ifndef __LOOKUPPROCESSOR_H
9 #define __LOOKUPPROCESSOR_H
17 #include "LEFontInstance.h"
18 #include "OpenTypeTables.h"
21 #include "GlyphDefinitionTables.h"
22 #include "GlyphPositionAdjustments.h"
23 #include "GlyphIterator.h"
29 class LookupProcessor
: public UMemory
{
31 static const LETag notSelected
;
32 static const LETag defaultFeature
;
34 le_int32
process(LEGlyphStorage
&glyphStorage
, GlyphPositionAdjustment
*glyphPositionAdjustments
,
35 le_bool rightToLeft
, const GlyphDefinitionTableHeader
*glyphDefinitionTableHeader
, const LEFontInstance
*fontInstance
) const;
37 le_uint32
applyLookupTable(const LookupTable
*lookupTable
, GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
) const;
39 le_uint32
applySingleLookup(le_uint16 lookupTableIndex
, GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
) const;
41 virtual le_uint32
applySubtable(const LookupSubtable
*lookupSubtable
, le_uint16 subtableType
,
42 GlyphIterator
*glyphIterator
, const LEFontInstance
*fontInstance
) const = 0;
44 virtual ~LookupProcessor();
47 LookupProcessor(const char *baseAddress
,
48 Offset scriptListOffset
, Offset featureListOffset
, Offset lookupListOffset
,
49 LETag scriptTag
, LETag languageTag
, const LETag
*featureOrder
);
53 le_int32
selectLookups(const FeatureTable
*featureTable
, LETag featureTag
, le_int32 order
);
55 const LookupListTable
*lookupListTable
;
56 const FeatureListTable
*featureListTable
;
58 LETag
*lookupSelectArray
;
59 LETag requiredFeatureTag
;
61 le_uint16
*lookupOrderArray
;
62 le_uint32 lookupOrderCount
;
66 LookupProcessor(const LookupProcessor
&other
); // forbid copying of this class
67 LookupProcessor
&operator=(const LookupProcessor
&other
); // forbid copying of this class