Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

OpenTypeLayoutEngine.h

Go to the documentation of this file.
00001 
00002 /*
00003  * %W% %E%
00004  *
00005  * (C) Copyright IBM Corp. 1998-2003 - All Rights Reserved
00006  *
00007  */
00008 
00009 #ifndef __OPENTYPELAYOUTENGINE_H
00010 #define __OPENTYPELAYOUTENGINE_H
00011 
00012 #include "LETypes.h"
00013 #include "LEGlyphFilter.h"
00014 #include "LEFontInstance.h"
00015 #include "LayoutEngine.h"
00016 
00017 #include "GlyphSubstitutionTables.h"
00018 #include "GlyphDefinitionTables.h"
00019 #include "GlyphPositioningTables.h"
00020 
00021 U_NAMESPACE_BEGIN
00022 
00048 class OpenTypeLayoutEngine : public LayoutEngine
00049 {
00050 public:
00067     OpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
00068                             const GlyphSubstitutionTableHeader *gsubTable);
00069 
00080     OpenTypeLayoutEngine(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode);
00081 
00087     virtual ~OpenTypeLayoutEngine();
00088 
00099     static LETag getScriptTag(le_int32 scriptCode);
00100 
00111     static LETag getLangSysTag(le_int32 languageCode);
00112 
00118     virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
00119 
00125     static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
00126 
00127 private:
00128 
00133     void setScriptAndLanguageTags();
00134 
00138     static const LETag scriptTags[];
00139 
00143     static const LETag languageTags[];
00144 
00149     static const char fgClassID;
00150 
00151 protected:
00159     const LETag **fFeatureTags;
00160 
00168     const LETag *fFeatureOrder;
00169 
00175     const GlyphSubstitutionTableHeader *fGSUBTable;
00176 
00182     const GlyphDefinitionTableHeader   *fGDEFTable;
00183 
00189     const GlyphPositioningTableHeader  *fGPOSTable;
00190 
00199     LEGlyphFilter *fSubstitutionFilter;
00200 
00206     LETag fScriptTag;
00207 
00213     LETag fLangSysTag;
00214 
00240     virtual le_int32 characterProcessing(const LEUnicode /*chars*/[], le_int32 offset, le_int32 count, le_int32 max, le_bool /*rightToLeft*/,
00241             LEUnicode *&/*outChars*/, le_int32 *&/*charIndices*/, const LETag **&/*featureTags*/, LEErrorCode &success);
00242 
00272     virtual le_int32 glyphProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00273             const LETag **&featureTags, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success);
00274 
00300     virtual le_int32 glyphPostProcessing(LEGlyphID tempGlyphs[], le_int32 tempCharIndices[], le_int32 tempGlyphCount,
00301                     LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success);
00302 
00325     virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphID *&glyphs, le_int32 *&charIndices, LEErrorCode &success);
00326 
00342     virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphID glyphs[], le_int32 glyphCount, float positions[], LEErrorCode &success);
00343 
00351     virtual void reset();
00352 };
00353 
00354 U_NAMESPACE_END
00355 #endif
00356 

Generated on Mon Nov 24 14:35:34 2003 for ICU 2.8 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001