10 #ifndef __PARAGRAPHLAYOUT_H 12 #define __PARAGRAPHLAYOUT_H 24 #if ! UCONFIG_NO_BREAK_ITERATION 26 #include "layout/LETypes.h" 27 #include "layout/LEFontInstance.h" 28 #include "layout/LayoutEngine.h" 87 inline le_int32 countRuns()
const;
97 le_int32 getAscent()
const;
107 le_int32 getDescent()
const;
117 le_int32 getLeading()
const;
128 le_int32 getWidth()
const;
145 const VisualRun *getVisualRun(le_int32 runIndex)
const;
167 static const char fgClassID;
176 le_int32 fRunCapacity;
182 inline Line &operator=(
const Line & ) {
return *
this; };
184 void computeMetrics();
186 void append(
const LEFontInstance *font,
UBiDiDirection direction, le_int32 glyphCount,
187 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[]);
220 inline const LEFontInstance *getFont()
const;
239 inline le_int32 getGlyphCount()
const;
251 inline const LEGlyphID *getGlyphs()
const;
266 inline const float *getPositions()
const;
278 inline const le_int32 *getGlyphToCharMap()
const;
288 inline le_int32 getAscent()
const;
298 inline le_int32 getDescent()
const;
308 inline le_int32 getLeading()
const;
330 static const char fgClassID;
332 const LEFontInstance *fFont;
335 const le_int32 fGlyphCount;
337 const LEGlyphID *fGlyphs;
338 const float *fPositions;
339 const le_int32 *fGlyphToCharMap;
348 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[]);
402 LEErrorCode &status);
431 static le_bool isComplex(
const LEUnicode chars[], le_int32 count,
const FontRuns *fontRuns);
445 static le_bool isComplex(
const LEUnicode chars[], le_int32 count);
479 virtual le_int32 getAscent()
const;
489 virtual le_int32 getDescent()
const;
499 virtual le_int32 getLeading()
const;
507 inline void reflow();
509 #ifndef U_HIDE_INTERNAL_API 519 inline le_bool isDone()
const;
539 Line *nextLine(
float width);
562 static const char fgClassID;
566 LayoutEngine *engine;
567 const LEFontInstance *font;
583 void computeLevels(
UBiDiLevel paragraphLevel);
585 Line *computeVisualRuns();
586 void appendRun(
Line *line, le_int32 run, le_int32 firstChar, le_int32 lastChar);
588 void computeScripts();
590 void computeLocales();
592 void computeSubFonts(
const FontRuns *fontRuns, LEErrorCode &status);
594 void computeMetrics();
596 le_int32 getLanguageCode(
const Locale *locale);
598 le_int32 getCharRun(le_int32 charIndex);
602 le_int32 previousBreak(le_int32 charIndex);
605 const LEUnicode *fChars;
614 le_bool fClientLevels;
615 le_bool fClientScripts;
616 le_bool fClientLocales;
624 le_int32 *fGlyphToCharMap;
625 le_int32 *fCharToMinGlyphMap;
626 le_int32 *fCharToMaxGlyphMap;
628 le_int32 fGlyphCount;
633 le_int32 *fStyleRunLimits;
634 le_int32 *fStyleIndices;
635 StyleRunInfo *fStyleRunInfo;
636 le_int32 fStyleRunCount;
642 le_int32 fFirstVisualRun;
643 le_int32 fLastVisualRun;
644 float fVisualRunLastX;
645 float fVisualRunLastY;
658 inline void ParagraphLayout::reflow()
663 inline ParagraphLayout::Line::Line()
664 :
UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(
NULL)
669 inline ParagraphLayout::Line::Line(
const Line & )
670 :
UObject(), fAscent(0), fDescent(0), fLeading(0), fRunCount(0), fRunCapacity(0), fRuns(
NULL)
675 inline le_int32 ParagraphLayout::Line::countRuns()
const 680 inline const LEFontInstance *ParagraphLayout::VisualRun::getFont()
const 690 inline le_int32 ParagraphLayout::VisualRun::getGlyphCount()
const 695 inline const LEGlyphID *ParagraphLayout::VisualRun::getGlyphs()
const 700 inline const float *ParagraphLayout::VisualRun::getPositions()
const 705 inline const le_int32 *ParagraphLayout::VisualRun::getGlyphToCharMap()
const 707 return fGlyphToCharMap;
710 inline le_int32 ParagraphLayout::VisualRun::getAscent()
const 712 return fFont->getAscent();
715 inline le_int32 ParagraphLayout::VisualRun::getDescent()
const 717 return fFont->getDescent();
720 inline le_int32 ParagraphLayout::VisualRun::getLeading()
const 722 return fFont->getLeading();
725 inline ParagraphLayout::VisualRun::VisualRun()
731 inline ParagraphLayout::VisualRun::VisualRun(
const VisualRun &)
737 inline ParagraphLayout::VisualRun::VisualRun(
const LEFontInstance *font,
UBiDiDirection direction, le_int32 glyphCount,
738 const LEGlyphID glyphs[],
const float positions[],
const le_int32 glyphToCharMap[])
739 : fFont(font), fDirection(direction), fGlyphCount(glyphCount),
740 fGlyphs(glyphs), fPositions(positions), fGlyphToCharMap(glyphToCharMap)
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.
virtual UClassID getDynamicClassID() const
ICU "poor man's RTTI", returns a UClassID for the actual class.
void * UClassID
UClassID is used to identify classes without using the compiler's RTTI.
UScriptCode
Constants for ISO 15924 script codes.
uint8_t UBiDiLevel
UBiDiLevel is the type of the level values in this Bidi implementation.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
The FontRuns class associates pointers to LEFontInstance objects with runs of text.
The LocaleRuns class associates pointers to Locale objects with runs of text.
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.
UBiDiDirection ubidi_getDirection(const UBiDi *pBiDi)
Get the directionality of the text.
The BreakIterator class implements methods for finding the location of boundaries in text...
#define NULL
Define NULL if necessary, to nullptr for C++ and to ((void *)0) for C.
UBiDiLevel ubidi_getParaLevel(const UBiDi *pBiDi)
Get the paragraph level of the text.
#define U_LAYOUTEX_API
Set to export library symbols from inside the layout extensions library, and to import them from outs...
C++ API: base class for building classes which represent data that is associated with runs of text...
The ValueRuns class associates integer values with runs of text.
static UClassID getStaticClassID()
ICU "poor man's RTTI", returns a UClassID for this class.
UObject is the common ICU "boilerplate" class.
A Locale object represents a specific geographical, political, or cultural region.