00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __INDICLAYOUTENGINE_H
00010 #define __INDICLAYOUTENGINE_H
00011
00012 #include "LETypes.h"
00013 #include "LEFontInstance.h"
00014 #include "LEGlyphFilter.h"
00015 #include "LayoutEngine.h"
00016 #include "OpenTypeLayoutEngine.h"
00017
00018 #include "GlyphSubstitutionTables.h"
00019 #include "GlyphDefinitionTables.h"
00020 #include "GlyphPositioningTables.h"
00021
00022 #include <string.h>
00023
00033 class IndicOpenTypeLayoutEngine : public OpenTypeLayoutEngine
00034 {
00035 public:
00051 IndicOpenTypeLayoutEngine(LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
00052 GlyphSubstitutionTableHeader *gsubTable);
00053
00065 IndicOpenTypeLayoutEngine(LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode);
00066
00070 virtual ~IndicOpenTypeLayoutEngine();
00071
00072 protected:
00073
00094 virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00095 LEUnicode *&outChars, le_int32 *&charIndices, const LETag **&featureTags);
00096
00123
00124
00125 virtual le_int32 glyphProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00126 const LETag **featureTags, LEGlyphID *&glyphs, le_int32 *&charIndices);
00127 };
00128
00129 #if 0
00130
00139 class CDACOpenTypeLayoutEngine : public IndicOpenTypeLayoutEngine
00140 {
00141 public:
00158 CDACOpenTypeLayoutEngine(LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
00159 const CDACLayout::ScriptInfo *scriptInfo);
00160
00164 virtual ~CDACOpenTypeLayoutEngine();
00165
00166 protected:
00167 const CDACLayout::ScriptInfo *fScriptInfo;
00168
00183 virtual le_int32 glyphPostProcessing(LEGlyphID tempGlyphs[], le_int32 tempCharIndices[], le_int32 tempGlyphCount,
00184 LEGlyphID *&glyphs, le_int32 *&charIndices);
00185
00200 virtual void mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror,
00201 LEGlyphID *&glyphs, le_int32 *&charIndices);
00202 };
00203 #endif
00204
00205 #endif
00206