00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __GXLAYOUTENGINE_H
00010 #define __GXLAYOUTENGINE_H
00011
00012 #include "LETypes.h"
00013 #include "LEFontInstance.h"
00014 #include "LEGlyphFilter.h"
00015 #include "LayoutEngine.h"
00016
00017 #include "MorphTables.h"
00018
00019 U_NAMESPACE_BEGIN
00020
00029 class GXLayoutEngine : public LayoutEngine
00030 {
00031 public:
00051 GXLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, const MorphTableHeader *morphTable);
00052
00058 virtual ~GXLayoutEngine();
00059
00065 virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
00066
00072 static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
00073
00074 protected:
00075
00081 const MorphTableHeader *fMorphTable;
00082
00104 virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00105 LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success);
00106
00123 virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphID glyphs[],
00124 le_int32 glyphCount, float positions[], LEErrorCode &success);
00125
00126 private:
00127
00132 static const char fgClassID;
00133 };
00134
00135 U_NAMESPACE_END
00136 #endif
00137