1/*
2 * (C) Copyright IBM Corp. 1998-2010 - All Rights Reserved
3 *
4 */
5
6#ifndef __GLYPHSUBSTITUTIONLOOKUPPROCESSOR_H
7#define __GLYPHSUBSTITUTIONLOOKUPPROCESSOR_H
8
9/**
10 * \file
11 * \internal
12 */
13
14#include "LETypes.h"
15#include "LEGlyphFilter.h"
16#include "LEFontInstance.h"
17#include "OpenTypeTables.h"
18#include "Lookups.h"
19#include "ICUFeatures.h"
20#include "GlyphDefinitionTables.h"
21#include "GlyphSubstitutionTables.h"
22#include "GlyphIterator.h"
23#include "LookupProcessor.h"
24
25U_NAMESPACE_BEGIN
26
27class GlyphSubstitutionLookupProcessor : public LookupProcessor
28{
29public:
30    GlyphSubstitutionLookupProcessor(const GlyphSubstitutionTableHeader *glyphSubstitutionTableHeader,
31        LETag scriptTag,
32        LETag languageTag,
33        const LEGlyphFilter *filter,
34        const FeatureMap *featureMap,
35        le_int32 featureMapCount,
36        le_bool featureOrder,
37        LEErrorCode& success);
38
39    virtual ~GlyphSubstitutionLookupProcessor();
40
41    virtual le_uint32 applySubtable(const LookupSubtable *lookupSubtable, le_uint16 lookupType, GlyphIterator *glyphIterator,
42        const LEFontInstance *fontInstance, LEErrorCode& success) const;
43
44protected:
45    GlyphSubstitutionLookupProcessor();
46
47private:
48    const LEGlyphFilter *fFilter;
49
50    GlyphSubstitutionLookupProcessor(const GlyphSubstitutionLookupProcessor &other); // forbid copying of this class
51    GlyphSubstitutionLookupProcessor &operator=(const GlyphSubstitutionLookupProcessor &other); // forbid copying of this class
52};
53
54U_NAMESPACE_END
55#endif
56