Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

ICULayoutEngine Class Reference

This is a wrapper class designed to allow ICU clients to use LayoutEngine in a way that is consistent with the rest of ICU. More...

#include <loengine.h>


Public Methods

virtual ~ICULayoutEngine ()
 The destructor. More...

int32_t layoutChars (const UChar chars[], UTextOffset startOffset, UTextOffset endOffset, UTextOffset maxOffset, UBool rightToLeft, float x, float y, UErrorCode &success)
 This method computes the glyph, character index and position arrays for the input characters. More...

int32_t layoutString (const UnicodeString &str, UTextOffset startOffset, UTextOffset endOffset, UBool rightToLeft, float x, float y, UErrorCode &success)
 This method computes the glyph, character index and position arrays for the input characters. More...

int32_t countGlyphs () const
 This method returns the number of glyphs in the glyph array. More...

void getGlyphs (uint16_t glyphs[], UErrorCode &success)
 This method copies the glyph array into a caller supplied array. More...

void getCharIndices (int32_t charIndices[], UErrorCode &success)
 This method copies the character index array into a caller supplied array. More...

void getCharIndices (int32_t charIndices[], int32_t indexBase, UErrorCode &success)
 This method copies the character index array into a caller supplied array. More...

void getGlyphPositions (float positions[], UErrorCode &success)
 This method copies the position array into a caller supplied array. More...

void getGlyphPosition (int32_t glyphIndex, float &x, float &y, UErrorCode &success)
 This method returns the X and Y position of the glyph at the given index. More...


Static Public Methods

ICULayoutEngine * createInstance (const LEFontInstance *fontInstance, UScriptCode script, Locale &locale, UErrorCode &success)
 This method returns an ICULayoutEngine capable of laying out text in the given font, script and langauge. More...


Detailed Description

This is a wrapper class designed to allow ICU clients to use LayoutEngine in a way that is consistent with the rest of ICU.

(LayoutEngine was developed seperately from ICU and the same source is used in non-ICU environments, so it cannot be changed to match ICU coding conventions).

This class is designed for clients who wish to use LayoutEngine to layout complex text. If you need to subclass LayoutEngine, you'll need to use the LayoutEngine interfaces directly.

Basically, it creates an instance of LayoutEngine, stashes it in fLayoutEngine, and uses it to implement the layout functionality.

Use the createInstance method to create an ICULayoutEngine. Use delete to destroy it. The layoutChars method computes the glyphs and positions, and saves them in the ICULayoutEngine object. Use getGlyphs, getPositions and getCharIndices to retreive this data.

You'll also need an implementation of LEFontInstance for your platform.

See also:
LayoutEngine.h , LEFontInstance.h


Constructor & Destructor Documentation

ICULayoutEngine::~ICULayoutEngine   [inline, virtual]
 

The destructor.

At least on Windows it needs to be virtual to ensure that it deletes the object from the same heap that createInstance will allocate it from. We don't know why this is...

See also:
createInstance


Member Function Documentation

int32_t ICULayoutEngine::countGlyphs   const [inline]
 

This method returns the number of glyphs in the glyph array.

Note that the number of glyphs will be greater than or equal to the number of characters used to create the LayoutEngine.

Returns:
the number of glyphs in the glyph array

ICULayoutEngine * ICULayoutEngine::createInstance const LEFontInstance *    fontInstance,
UScriptCode    script,
Locale &    locale,
UErrorCode   success
[inline, static]
 

This method returns an ICULayoutEngine capable of laying out text in the given font, script and langauge.

Parameters:
fontInstance  - the font of the text
scriptCode  - the script of the text
locale  - used to determine the language of the text
success  - output parameter set to an error code if the operation fails
Returns:
an ICULayoutEngine which can layout text in the given font.
NOTE: currently, locale is ignored...

See also:
LEFontInstance

void ICULayoutEngine::getCharIndices int32_t    charIndices[],
int32_t    indexBase,
UErrorCode   success
[inline]
 

This method copies the character index array into a caller supplied array.

The caller must ensure that the array is large enough to hold a character index for each glyph.

Parameters:
charIndices  - the destiniation character index array
indexBase  - an offset which will be added to each index
success  - output parameter set to an error code if the operation fails

void ICULayoutEngine::getCharIndices int32_t    charIndices[],
UErrorCode   success
[inline]
 

This method copies the character index array into a caller supplied array.

The caller must ensure that the array is large enough to hold a character index for each glyph.

Parameters:
charIndices  - the destiniation character index array
success  - output parameter set to an error code if the operation fails

void ICULayoutEngine::getGlyphPosition int32_t    glyphIndex,
float &    x,
float &    y,
UErrorCode   success
[inline]
 

This method returns the X and Y position of the glyph at the given index.

Input parameters:

Parameters:
glyphIndex  - the index of the glyph
Output parameters:
Parameters:
x  - the glyph's X position
y  - the glyph's Y position
success  - output parameter set to an error code if the operation fails

void ICULayoutEngine::getGlyphPositions float    positions[],
UErrorCode   success
[inline]
 

This method copies the position array into a caller supplied array.

The caller must ensure that the array is large enough to hold an X and Y position for each glyph, plus an extra X and Y for the advance of the last glyph.

Parameters:
glyphs  - the destiniation position array
success  - output parameter set to an error code if the operation fails

void ICULayoutEngine::getGlyphs uint16_t    glyphs[],
UErrorCode   success
[inline]
 

This method copies the glyph array into a caller supplied array.

The caller must ensure that the array is large enough to hold all the glyphs.

Parameters:
glyphs  - the destiniation glyph array
success  - output parameter set to an error code if the operation fails

int32_t ICULayoutEngine::layoutChars const UChar    chars[],
UTextOffset    startOffset,
UTextOffset    endOffset,
UTextOffset    maxOffset,
UBool    rightToLeft,
float    x,
float    y,
UErrorCode   success
[inline]
 

This method computes the glyph, character index and position arrays for the input characters.

Parameters:
chars  - the input character context
startOffset  - the starting offset of the characters to process
endOffset  - the ending offset of the characters to process
max  - the number of characters in the input context
rightToLeft  - true if the characers are in a right to left directional run
x  - the initial X position
y  - the initial Y position
success  - output parameter set to an error code if the operation fails
Returns:
the number of glyphs in the glyph array
Note; the glyph, character index and position array can be accessed using the getter method below.

int32_t ICULayoutEngine::layoutString const UnicodeString   str,
UTextOffset    startOffset,
UTextOffset    endOffset,
UBool    rightToLeft,
float    x,
float    y,
UErrorCode   success
[inline]
 

This method computes the glyph, character index and position arrays for the input characters.

Parameters:
str  - the input character context
startOffset  - the starting offset of the characters to process
endOffset  - the ending offset of the characters to process
rightToLeft  - true if the characers are in a right to left directional run
x  - the initial X position
y  - the initial Y position
success  - output parameter set to an error code if the operation fails
Returns:
the number of glyphs in the glyph array
Note; the glyph, character index and position array can be accessed using the getter method below.


The documentation for this class was generated from the following file:
Generated on Sun Mar 3 16:07:04 2002 for ICU 2.0 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002