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

OpenTypeLayoutEngine.h

Go to the documentation of this file.
00001 
00002 /*
00003  * @(#)OpenTypeLayoutEngine.h   1.4 00/03/15
00004  *
00005  * (C) Copyright IBM Corp. 1998, 1999, 2000 - 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 
00044 class OpenTypeLayoutEngine : public LayoutEngine
00045 {
00046 public:
00061     OpenTypeLayoutEngine(LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode,
00062                             GlyphSubstitutionTableHeader *gsubTable);
00063 
00072     OpenTypeLayoutEngine(LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode);
00073 
00077     virtual ~OpenTypeLayoutEngine();
00078 
00087     static LETag getScriptTag(le_int32 scriptCode);
00088 
00097     static LETag getLangSysTag(le_int32 languageCode);
00098 
00099 private:
00100 
00105     void setScriptAndLanguageTags();
00106 
00107 protected:
00113     const LETag **fFeatureTags;
00114 
00118     GlyphSubstitutionTableHeader *fGSUBTable;
00119 
00123     GlyphDefinitionTableHeader   *fGDEFTable;
00124 
00128     GlyphPositioningTableHeader  *fGPOSTable;
00129 
00136     LEGlyphFilter *fSubstitutionFilter;
00137 
00141     LETag fScriptTag;
00142 
00146     LETag fLangSysTag;
00147 
00170     virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00171             LEUnicode *&outChars, le_int32 *&charIndices, const LETag **&featureTags) /*= 0;*/
00172         {
00173                 return count;
00174         };
00175 
00202     virtual le_int32 glyphProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
00203             const LETag **featureTags, LEGlyphID *&glyphs, le_int32 *&charIndices);
00204 
00227     virtual le_int32 glyphPostProcessing(LEGlyphID tempGlyphs[], le_int32 tempCharIndices[], le_int32 tempGlyphCount,
00228                     LEGlyphID *&glyphs, le_int32 *&charIndices)
00229     {
00230         glyphs = tempGlyphs;
00231         charIndices = tempCharIndices;
00232 
00233         return tempGlyphCount;
00234     };
00235 
00255     virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphID *&glyphs, le_int32 *&charIndices);
00256 
00269     virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphID glyphs[], le_int32 glyphCount, float positions[]);
00270 
00276     virtual void reset();
00277 };
00278 
00279 #endif
00280 

Generated at Tue Dec 5 18:13:02 2000 for ICU by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000