8#ifndef __PARAGRAPHLAYOUT_H
10#define __PARAGRAPHLAYOUT_H
22#if ! UCONFIG_NO_BREAK_ITERATION
160 static const char fgClassID;
175 inline Line &operator=(
const Line & ) {
return *
this; };
177 void computeMetrics();
180 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[]);
323 static const char fgClassID;
331 const float *fPositions;
341 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[]);
502#ifndef U_HIDE_INTERNAL_API
555 static const char fgClassID;
572 ParagraphLayout() {};
573 ParagraphLayout(
const ParagraphLayout & ) : UObject( ){};
574 inline ParagraphLayout &operator=(
const ParagraphLayout & ) {
return *
this; };
576 void computeLevels(
UBiDiLevel paragraphLevel);
578 Line *computeVisualRuns();
581 void computeScripts();
583 void computeLocales();
585 void computeSubFonts(
const FontRuns *fontRuns,
LEErrorCode &status);
587 void computeMetrics();
589 le_int32 getLanguageCode(
const Locale *locale);
601 const FontRuns *fFontRuns;
602 const ValueRuns *fLevelRuns;
603 const ValueRuns *fScriptRuns;
604 const LocaleRuns *fLocaleRuns;
628 StyleRunInfo *fStyleRunInfo;
631 BreakIterator *fBreakIterator;
637 float fVisualRunLastX;
638 float fVisualRunLastY;
656inline ParagraphLayout::Line::Line()
657 :
UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(
NULL)
662inline ParagraphLayout::Line::Line(
const Line & )
663 :
UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(
NULL)
700 return fGlyphToCharMap;
705 return fFont->getAscent();
710 return fFont->getDescent();
715 return fFont->getLeading();
718inline ParagraphLayout::VisualRun::VisualRun()
724inline ParagraphLayout::VisualRun::VisualRun(
const VisualRun &)
730inline ParagraphLayout::VisualRun::VisualRun(
const LEFontInstance *font,
UBiDiDirection direction,
le_int32 glyphCount,
731 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[])
732 : fFont(font), fDirection(direction), fGlyphCount(glyphCount),
733 fGlyphs(glyphs), fPositions(positions), fGlyphToCharMap(glyphToCharMap)
C++ API: Layout Engine Font Instance object.
C API: Basic definitions for the ICU LayoutEngine.
LEErrorCode
Error codes returned by the LayoutEngine.
int32_t le_int32
A type used for signed, 32-bit integers.
UBool le_bool
A type used for boolean values.
UChar LEUnicode
Used to represent 16-bit Unicode code points.
le_uint32 LEGlyphID
Used for glyph indices.
C++ API: Virtual base class for complex text layout.
C++ API: base class for building classes which represent data that is associated with runs of text.
The FontRuns class associates pointers to LEFontInstance objects with runs of text.
This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...
This is a virtual base class used to do complex text layout.
The LocaleRuns class associates pointers to Locale objects with runs of text.
A Locale object represents a specific geographical, political, or cultural region.
This class represents a single line of text in a ParagraphLayout.
~Line()
The constructor is private since these objects can only be created by ParagraphLayout.
le_int32 countRuns() const
Count the number of visual runs in the line.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
const VisualRun * getVisualRun(le_int32 runIndex) const
Get a ParagraphLayout::VisualRun object for a given visual run in the line.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
le_int32 getLeading() const
Get the leading of the line.
le_int32 getDescent() const
Get the descent of the line.
le_int32 getAscent() const
Get the ascent of the line.
le_int32 getWidth() const
Get the width of the line.
This object represents a single visual run in a line of text in a paragraph.
le_int32 getDescent() const
A convenience method which returns the descent value for the font associated with this run.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
const le_int32 * getGlyphToCharMap() const
Get the glyph-to-character map for this visual run.
le_int32 getGlyphCount() const
Get the number of glyphs in the visual run.
const LEGlyphID * getGlyphs() const
Get the glyphs in the visual run.
le_int32 getAscent() const
A convenience method which returns the ascent value for the font associated with this run.
const LEFontInstance * getFont() const
Get the LEFontInstance object which represents the font of the visual run.
UBiDiDirection getDirection() const
Get the direction of the visual run.
le_int32 getLeading() const
A convenience method which returns the leading value for the font associated with this run.
const float * getPositions() const
Get the (x, y) positions of the glyphs in the visual run.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
UBiDiDirection getTextDirection()
Return the directionality of the text in the paragraph.
~ParagraphLayout()
The destructor.
void reflow()
Reset line breaking to start from the beginning of the paragraph.
le_bool isDone() const
Convenience method for determining if paragraph layout processing is complete ( i....
ParagraphLayout(const LEUnicode chars[], le_int32 count, const FontRuns *fontRuns, const ValueRuns *levelRuns, const ValueRuns *scriptRuns, const LocaleRuns *localeRuns, UBiDiLevel paragraphLevel, le_bool vertical, LEErrorCode &status)
Construct a ParagraphLayout object for a styled paragraph.
virtual le_int32 getLeading() const
Return the max leading value for all the fonts in the paragraph.
Line * nextLine(float width)
Return a ParagraphLayout::Line object which represents next line in the paragraph.
virtual le_int32 getDescent() const
Return the max descent value for all the fonts in the paragraph.
UBiDiLevel getParagraphLevel()
Return the resolved paragraph level.
virtual le_int32 getAscent() const
Return the max ascent value for all the fonts in the paragraph.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
static le_bool isComplex(const LEUnicode chars[], le_int32 count)
Examine the given text and determine if it contains characters in any script which requires complex p...
UObject is the common ICU "boilerplate" class.
The ValueRuns class associates integer values with runs of text.
UBiDiLevel ubidi_getParaLevel(const UBiDi *pBiDi)
Get the paragraph level of the text.
UBiDiDirection
UBiDiDirection values indicate the text direction.
@ UBIDI_LTR
Left-to-right text.
uint8_t UBiDiLevel
UBiDiLevel is the type of the level values in this Bidi implementation.
UBiDiDirection ubidi_getDirection(const UBiDi *pBiDi)
Get the directionality of the text.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
C API: Unicode Script Information.
UScriptCode
Constants for ISO 15924 script codes.
#define NULL
Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
#define U_LAYOUTEX_API
Set to export library symbols from inside the layout extensions library, and to import them from outs...
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.