ICU 4.8.1.1  4.8.1.1
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
LayoutEngine.h
Go to the documentation of this file.
1 /*
2  * (C) Copyright IBM Corp. 1998-2011 - All Rights Reserved
3  */
4 
5 #ifndef __LAYOUTENGINE_H
6 #define __LAYOUTENGINE_H
7 
8 #include "LETypes.h"
9 
16 
17 class LEFontInstance;
18 class LEGlyphFilter;
19 class LEGlyphStorage;
20 
65 public:
67  static const le_int32 kTypoFlagKern;
69  static const le_int32 kTypoFlagLiga;
70 
71 protected:
78 
87 
96 
105 
112 
120 
137  LayoutEngine(const LEFontInstance *fontInstance,
138  le_int32 scriptCode,
139  le_int32 languageCode,
140  le_int32 typoFlags,
141  LEErrorCode &success);
142 
150  LayoutEngine();
151 
174  virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
175  LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
176 
203  virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphStorage &glyphStorage, LEErrorCode &success);
204 
218  virtual void positionGlyphs(LEGlyphStorage &glyphStorage, float x, float y, LEErrorCode &success);
219 
240  virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphStorage &glyphStorage, LEErrorCode &success);
241 
254  virtual const void *getFontTable(LETag tableTag) const;
255 
281  virtual void mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror, LEGlyphStorage &glyphStorage, LEErrorCode &success);
282 
295  static void adjustMarkGlyphs(LEGlyphStorage &glyphStorage, LEGlyphFilter *markFilter, LEErrorCode &success);
296 
297 
316  static void adjustMarkGlyphs(const LEUnicode chars[], le_int32 charCount, le_bool reverse, LEGlyphStorage &glyphStorage, LEGlyphFilter *markFilter, LEErrorCode &success);
317 
318 
319 public:
328  virtual ~LayoutEngine();
329 
355  virtual le_int32 layoutChars(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, float x, float y, LEErrorCode &success);
356 
366  le_int32 getGlyphCount() const;
367 
378  void getGlyphs(LEGlyphID glyphs[], LEErrorCode &success) const;
379 
392  virtual void getGlyphs(le_uint32 glyphs[], le_uint32 extraBits, LEErrorCode &success) const;
393 
404  void getCharIndices(le_int32 charIndices[], LEErrorCode &success) const;
405 
417  void getCharIndices(le_int32 charIndices[], le_int32 indexBase, LEErrorCode &success) const;
418 
430  void getGlyphPositions(float positions[], LEErrorCode &success) const;
431 
446  void getGlyphPosition(le_int32 glyphIndex, float &x, float &y, LEErrorCode &success) const;
447 
455  virtual void reset();
456 
473  static LayoutEngine *layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, LEErrorCode &success);
474 
479  static LayoutEngine *layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typo_flags, LEErrorCode &success);
480 
486  virtual UClassID getDynamicClassID() const;
487 
493  static UClassID getStaticClassID();
494 
495 };
496 
498 #endif