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[]);
232 inline le_int32 getGlyphCount()
const;
244 inline const LEGlyphID *getGlyphs()
const;
259 inline const float *getPositions()
const;
271 inline const le_int32 *getGlyphToCharMap()
const;
323 static const char fgClassID;
331 const float *fPositions;
341 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[]);
390 const FontRuns *fontRuns,
391 const ValueRuns *levelRuns,
392 const ValueRuns *scriptRuns,
393 const LocaleRuns *localeRuns,
482 virtual le_int32 getDescent()
const;
492 virtual le_int32 getLeading()
const;
500 inline void reflow();
502 #ifndef U_HIDE_INTERNAL_API
532 Line *nextLine(
float width);
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;
651 inline void ParagraphLayout::reflow()
656 inline ParagraphLayout::Line::Line()
657 :
UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(
NULL)
662 inline 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();
718 inline ParagraphLayout::VisualRun::VisualRun()
724 inline ParagraphLayout::VisualRun::VisualRun(
const VisualRun &)
730 inline 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)
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.
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.
const le_int32 * getGlyphToCharMap() const
Get the glyph-to-character map for this visual run.
UBiDiDirection getDirection() const
Get the direction of the visual run.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
UScriptCode
Constants for ISO 15924 script codes.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
uint8_t UBiDiLevel
UBiDiLevel is the type of the level values in this Bidi implementation.
C API: Basic definitions for the ICU LayoutEngine.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
int32_t le_int32
A type used for signed, 32-bit integers.
UBool le_bool
A type used for boolean values.
This object represents a single visual run in a line of text in a paragraph.
C API: Unicode Script Information.
UBiDiDirection
UBiDiDirection values indicate the text direction.
This class represents a single line of text in a ParagraphLayout.
const float * getPositions() const
Get the (x, y) positions of the glyphs in the visual run.
UBiDiDirection ubidi_getDirection(const UBiDi *pBiDi)
Get the directionality of the text.
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
#define NULL
Define NULL if necessary, to 0 for C++ and to ((void *)0) for C.
le_int32 getAscent() const
A convenience method which returns the ascent value for the font associated with this run...
This is a virtual base class used to do complex text layout.
UBiDiLevel ubidi_getParaLevel(const UBiDi *pBiDi)
Get the paragraph level of the text.
C++ API: Virtual base class for complex text layout.
LEErrorCode
Error codes returned by the LayoutEngine.
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
const LEGlyphID * getGlyphs() const
Get the glyphs in the visual run.
#define U_LAYOUTEX_API
Set to export library symbols from inside the layout extensions library, and to import them from outs...
const LEFontInstance * getFont() const
Get the LEFontInstance object which represents the font of the visual run.
C++ API: base class for building classes which represent data that is associated with runs of text...
UChar LEUnicode
Used to represent 16-bit Unicode code points.
This is a virtual base class that serves as the interface between a LayoutEngine and the platform fon...
le_uint32 LEGlyphID
Used for glyph indices.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
C++ API: Layout Engine Font Instance object.
le_int32 getDescent() const
A convenience method which returns the descent value for the font associated with this run...
le_int32 getGlyphCount() const
Get the number of glyphs in the visual run.
UObject is the common ICU "boilerplate" class.
le_int32 getLeading() const
A convenience method which returns the leading value for the font associated with this run...
A Locale object represents a specific geographical, political, or cultural region.