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
00024 U_NAMESPACE_BEGIN
00025
00035 class IndicOpenTypeLayoutEngine : public OpenTypeLayoutEngine
00036 {
00037 public:
00053 IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
00054 const GlyphSubstitutionTableHeader *gsubTable);
00055
00067 IndicOpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode);
00068
00072 virtual ~IndicOpenTypeLayoutEngine();
00073
00074 protected:
00075
00097 virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00098 LEUnicode *&outChars, le_int32 *&charIndices, const LETag **&featureTags, LEErrorCode &success);
00099
00127
00128
00129 virtual le_int32 glyphProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00130 const LETag **featureTags, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success);
00131 };
00132
00133 U_NAMESPACE_END
00134 #endif
00135