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. and others 1998-2013 - 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:
66 #ifndef U_HIDE_INTERNAL_API
67 
68  static const le_int32 kTypoFlagKern;
70  static const le_int32 kTypoFlagLiga;
71 #endif /* U_HIDE_INTERNAL_API */
72 
73 protected:
80 
89 
98 
107 
114 
122 
123 #ifndef U_HIDE_INTERNAL_API
124 
140  LayoutEngine(const LEFontInstance *fontInstance,
141  le_int32 scriptCode,
142  le_int32 languageCode,
143  le_int32 typoFlags,
144  LEErrorCode &success);
145 #endif /* U_HIDE_INTERNAL_API */
146 
147  // Do not enclose the protected default constructor with #ifndef U_HIDE_INTERNAL_API
148  // or else the compiler will create a public default constructor.
156  LayoutEngine();
157 
180  virtual le_int32 characterProcessing(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft,
181  LEUnicode *&outChars, LEGlyphStorage &glyphStorage, LEErrorCode &success);
182 
209  virtual le_int32 computeGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_int32 max, le_bool rightToLeft, LEGlyphStorage &glyphStorage, LEErrorCode &success);
210 
224  virtual void positionGlyphs(LEGlyphStorage &glyphStorage, float x, float y, LEErrorCode &success);
225 
246  virtual void adjustGlyphPositions(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, LEGlyphStorage &glyphStorage, LEErrorCode &success);
247 
260  virtual const void *getFontTable(LETag tableTag) const;
261 
287  virtual void mapCharsToGlyphs(const LEUnicode chars[], le_int32 offset, le_int32 count, le_bool reverse, le_bool mirror, LEGlyphStorage &glyphStorage, LEErrorCode &success);
288 
289 #ifndef U_HIDE_INTERNAL_API
290 
302  static void adjustMarkGlyphs(LEGlyphStorage &glyphStorage, LEGlyphFilter *markFilter, LEErrorCode &success);
303 
304 
323  static void adjustMarkGlyphs(const LEUnicode chars[], le_int32 charCount, le_bool reverse, LEGlyphStorage &glyphStorage, LEGlyphFilter *markFilter, LEErrorCode &success);
324 #endif /* U_HIDE_INTERNAL_API */
325 
326 public:
335  virtual ~LayoutEngine();
336 
362  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);
363 
373  le_int32 getGlyphCount() const;
374 
385  void getGlyphs(LEGlyphID glyphs[], LEErrorCode &success) const;
386 
399  virtual void getGlyphs(le_uint32 glyphs[], le_uint32 extraBits, LEErrorCode &success) const;
400 
411  void getCharIndices(le_int32 charIndices[], LEErrorCode &success) const;
412 
424  void getCharIndices(le_int32 charIndices[], le_int32 indexBase, LEErrorCode &success) const;
425 
437  void getGlyphPositions(float positions[], LEErrorCode &success) const;
438 
453  void getGlyphPosition(le_int32 glyphIndex, float &x, float &y, LEErrorCode &success) const;
454 
462  virtual void reset();
463 
480  static LayoutEngine *layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, LEErrorCode &success);
481 
486  static LayoutEngine *layoutEngineFactory(const LEFontInstance *fontInstance, le_int32 scriptCode, le_int32 languageCode, le_int32 typo_flags, LEErrorCode &success);
487 
493  virtual UClassID getDynamicClassID() const;
494 
500  static UClassID getStaticClassID();
501 
502 };
503 
505 #endif