Open CASCADE Technology Reference Manual 8.0.0
Loading...
Searching...
No Matches
Data Structures | Public Types | Public Member Functions | Static Public Member Functions
Font_TextFormatter Class Reference

This class is intended to prepare formatted text by using: More...

#include <Font_TextFormatter.hxx>

Inheritance diagram for Font_TextFormatter:
Inheritance graph
[legend]

Data Structures

class  Iterator
 Iterator through formatted symbols. It's possible to filter returned symbols to have only significant ones. More...
 

Public Types

enum  IterationFilter { IterationFilter_None = 0x0000 , IterationFilter_ExcludeInvisible = 0x0002 }
 Iteration filter flags. Command symbols are skipped with any filter. More...
 
- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 

Public Member Functions

 Font_TextFormatter ()
 Default constructor.
 
void SetupAlignment (const Graphic3d_HorizontalTextAlignment theAlignX, const Graphic3d_VerticalTextAlignment theAlignY)
 Setup alignment style.
 
void Reset ()
 Reset current progress.
 
void Append (const NCollection_String &theString, Font_FTFont &theFont)
 Render specified text to inner buffer.
 
void Format ()
 Perform formatting on the buffered text. Should not be called more than once after initialization!
 
const NCollection_Vec2< float > & TopLeft (const int theIndex) const
 
const NCollection_Vec2< float > & BottomLeft (const int theIndex) const
 Returns specific glyph rectangle.
 
const NCollection_StringString () const
 Returns current rendering string.
 
bool GlyphBoundingBox (const int theIndex, Font_Rect &theBndBox) const
 Returns symbol bounding box.
 
float LineHeight (const int theIndex) const
 Returns the line height.
 
float LineWidth (const int theIndex) const
 Returns width of a line.
 
bool IsLFSymbol (const int theIndex) const
 Returns true if the symbol by the index is '
'. The width of the symbol is zero.
 
float FirstPosition () const
 Returns position of the first symbol in a line using alignment.
 
int LinePositionIndex (const int theIndex) const
 Returns column index of the corner index in the current line.
 
int LineIndex (const int theIndex) const
 Returns row index of the corner index among text lines.
 
int TabSize () const
 Returns tab size.
 
Graphic3d_HorizontalTextAlignment HorizontalTextAlignment () const
 Returns horizontal alignment style.
 
Graphic3d_VerticalTextAlignment VerticalTextAlignment () const
 Returns vertical alignment style.
 
void SetWrapping (const float theWidth)
 Sets text wrapping width, zero means that the text is not bounded by width.
 
bool HasWrapping () const
 Returns text maximum width, zero means that the text is not bounded by width.
 
float Wrapping () const
 Returns text maximum width, zero means that the text is not bounded by width.
 
bool WordWrapping () const
 returns TRUE when trying not to break words when wrapping text
 
void SetWordWrapping (const bool theIsWordWrapping)
 returns TRUE when trying not to break words when wrapping text
 
float ResultWidth () const
 
float ResultHeight () const
 
float MaximumSymbolWidth () const
 
void BndBox (Font_Rect &theBndBox) const
 
const NCollection_DynamicArray< NCollection_Vec2< float > > & Corners () const
 Returns internal container of the top left corners of a formatted rectangles.
 
const NCollection_DynamicArray< float > & NewLines () const
 Returns container of each line position at LF in formatted text.
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()=default
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
bool IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
bool IsInstance (const char *const theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
bool IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
bool IsKind (const char *const theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism.
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero.
 
int GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object. Uses relaxed memory ordering since incrementing only requires atomicity, not synchronization with other memory operations.
 
int DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value. Uses release ordering for the decrement to ensure all writes to the object are visible before the count reaches zero. An acquire fence is added only when the count reaches zero, ensuring proper synchronization before deletion. This is more efficient than using acq_rel for every decrement.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Static Public Member Functions

static bool IsCommandSymbol (const char32_t &theSymbol)
 Returns true if the symbol is CR, BEL, FF, NP, BS or VT.
 
static bool IsSeparatorSymbol (const char32_t &theSymbol)
 Returns true if the symbol separates words when wrapping is enabled.
 
- Static Public Member Functions inherited from Standard_Transient
static constexpr const charget_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 

Protected Member Functions

class auxiliary methods

Move glyphs on the current line to correct position.

void newLine (const int theLastRect, const float theMaxLineWidth)
 

Protected Attributes

configuration
Graphic3d_HorizontalTextAlignment myAlignX
 horizontal alignment style
 
Graphic3d_VerticalTextAlignment myAlignY
 vertical alignment style
 
int myTabSize
 horizontal tabulation width (number of space symbols)
 
float myWrappingWidth
 text is wrapped by the width if defined (more 0)
 
bool myIsWordWrapping
 if TRUE try not to break words when wrapping text (true by default)
 
float myLastSymbolWidth
 width of the last symbol
 
float myMaxSymbolWidth
 maximum symbol width of the formatter string
 
input data
NCollection_String myString
 currently rendered text
 
NCollection_Vec2< floatmyPen
 current pen position
 
NCollection_DynamicArray< NCollection_Vec2< float > > myCorners
 The bottom left corners of a formatted rectangles.
 
NCollection_DynamicArray< floatmyNewLines
 position at LF
 
float myLineSpacing
 line spacing (computed as maximum of all fonts involved in text formatting)
 
float myAscender
 line spacing for the first line
 
bool myIsFormatted
 formatting state
 
temporary variables for formatting routines
int myLinesNb
 overall (new)lines number (including splitting by width limit)
 
int myRectLineStart
 id of first rectangle on the current line
 
int myNewLineNb
 overall (new)lines number (including splitting by width limit)
 
float myPenCurrLine
 current baseline position
 
float myBndTop
 overall (new)lines number (including splitting by width limit)
 
float myBndWidth
 overall (new)lines number (including splitting by width limit)
 
NCollection_Vec2< floatmyMoveVec
 local variable
 

Detailed Description

This class is intended to prepare formatted text by using:

After text formatting, each symbol of formatted text is placed in some position. Further work with the formatter is using an iterator. The iterator gives an access to each symbol inside the initial row. Also it's possible to get only significant/writable symbols of the text. Formatter gives an access to geometrical position of a symbol by the symbol index in the text. Example of correspondence of some text symbol to an index in "row_1\n\nrow_2\n": "row_1\n" - 0-5 indices; "\n" - 6 index; "\n" - 7 index; "row_2\n" - 8-13 indices. Pay attention that fonts should have the same LineSpacing value for correct formatting. Example of the formatter using:

// setting of additional properties such as wrapping or alignment
aFormatter->Format();
Font_TextFormatter()
Default constructor.
STL input iterator that wraps an OCCT More()/Next() iterator.
Definition NCollection_ForwardRange.hxx:142
Intrusive smart pointer for use with Standard_Transient class and its descendants.
Definition Standard_Handle.hxx:54

Member Enumeration Documentation

◆ IterationFilter

Iteration filter flags. Command symbols are skipped with any filter.

Enumerator
IterationFilter_None 

no filter

IterationFilter_ExcludeInvisible 

exclude ' ', '\t', '
'

Constructor & Destructor Documentation

◆ Font_TextFormatter()

Font_TextFormatter::Font_TextFormatter ( )

Default constructor.

Member Function Documentation

◆ Append()

void Font_TextFormatter::Append ( const NCollection_String & theString,
Font_FTFont & theFont )

Render specified text to inner buffer.

◆ BndBox()

void Font_TextFormatter::BndBox ( Font_Rect & theBndBox) const
inline
Parameters
boundingbox.

◆ BottomLeft()

const NCollection_Vec2< float > & Font_TextFormatter::BottomLeft ( const int theIndex) const
inline

Returns specific glyph rectangle.

◆ Corners()

const NCollection_DynamicArray< NCollection_Vec2< float > > & Font_TextFormatter::Corners ( ) const
inline

Returns internal container of the top left corners of a formatted rectangles.

◆ FirstPosition()

float Font_TextFormatter::FirstPosition ( ) const

Returns position of the first symbol in a line using alignment.

◆ Format()

void Font_TextFormatter::Format ( )

Perform formatting on the buffered text. Should not be called more than once after initialization!

◆ GlyphBoundingBox()

bool Font_TextFormatter::GlyphBoundingBox ( const int theIndex,
Font_Rect & theBndBox ) const

Returns symbol bounding box.

Parameters
boundingbox.

◆ HasWrapping()

bool Font_TextFormatter::HasWrapping ( ) const
inline

Returns text maximum width, zero means that the text is not bounded by width.

◆ HorizontalTextAlignment()

Graphic3d_HorizontalTextAlignment Font_TextFormatter::HorizontalTextAlignment ( ) const
inline

Returns horizontal alignment style.

◆ IsCommandSymbol()

static bool Font_TextFormatter::IsCommandSymbol ( const char32_t & theSymbol)
inlinestatic

Returns true if the symbol is CR, BEL, FF, NP, BS or VT.

◆ IsLFSymbol()

bool Font_TextFormatter::IsLFSymbol ( const int theIndex) const

Returns true if the symbol by the index is '
'. The width of the symbol is zero.

◆ IsSeparatorSymbol()

static bool Font_TextFormatter::IsSeparatorSymbol ( const char32_t & theSymbol)
inlinestatic

Returns true if the symbol separates words when wrapping is enabled.

◆ LineHeight()

float Font_TextFormatter::LineHeight ( const int theIndex) const
inline

Returns the line height.

Parameters
theIndexa line index, obtained by LineIndex()

◆ LineIndex()

int Font_TextFormatter::LineIndex ( const int theIndex) const

Returns row index of the corner index among text lines.

◆ LinePositionIndex()

int Font_TextFormatter::LinePositionIndex ( const int theIndex) const

Returns column index of the corner index in the current line.

◆ LineWidth()

float Font_TextFormatter::LineWidth ( const int theIndex) const

Returns width of a line.

◆ MaximumSymbolWidth()

float Font_TextFormatter::MaximumSymbolWidth ( ) const
inline
Returns
maximum width of the text symbol

◆ newLine()

void Font_TextFormatter::newLine ( const int theLastRect,
const float theMaxLineWidth )
protected

◆ NewLines()

const NCollection_DynamicArray< float > & Font_TextFormatter::NewLines ( ) const
inline

Returns container of each line position at LF in formatted text.

◆ Reset()

void Font_TextFormatter::Reset ( )

Reset current progress.

◆ ResultHeight()

float Font_TextFormatter::ResultHeight ( ) const
inline
Returns
height of formatted text.

◆ ResultWidth()

float Font_TextFormatter::ResultWidth ( ) const
inline
Returns
width of formatted text.

◆ SetupAlignment()

void Font_TextFormatter::SetupAlignment ( const Graphic3d_HorizontalTextAlignment theAlignX,
const Graphic3d_VerticalTextAlignment theAlignY )

Setup alignment style.

◆ SetWordWrapping()

void Font_TextFormatter::SetWordWrapping ( const bool theIsWordWrapping)
inline

returns TRUE when trying not to break words when wrapping text

◆ SetWrapping()

void Font_TextFormatter::SetWrapping ( const float theWidth)
inline

Sets text wrapping width, zero means that the text is not bounded by width.

◆ String()

const NCollection_String & Font_TextFormatter::String ( ) const
inline

Returns current rendering string.

◆ TabSize()

int Font_TextFormatter::TabSize ( ) const
inline

Returns tab size.

◆ TopLeft()

const NCollection_Vec2< float > & Font_TextFormatter::TopLeft ( const int theIndex) const
inline
Deprecated
("BottomLeft should be used instead")

◆ VerticalTextAlignment()

Graphic3d_VerticalTextAlignment Font_TextFormatter::VerticalTextAlignment ( ) const
inline

Returns vertical alignment style.

◆ WordWrapping()

bool Font_TextFormatter::WordWrapping ( ) const
inline

returns TRUE when trying not to break words when wrapping text

◆ Wrapping()

float Font_TextFormatter::Wrapping ( ) const
inline

Returns text maximum width, zero means that the text is not bounded by width.

Field Documentation

◆ myAlignX

Graphic3d_HorizontalTextAlignment Font_TextFormatter::myAlignX
protected

horizontal alignment style

◆ myAlignY

Graphic3d_VerticalTextAlignment Font_TextFormatter::myAlignY
protected

vertical alignment style

◆ myAscender

float Font_TextFormatter::myAscender
protected

line spacing for the first line

◆ myBndTop

float Font_TextFormatter::myBndTop
protected

overall (new)lines number (including splitting by width limit)

◆ myBndWidth

float Font_TextFormatter::myBndWidth
protected

overall (new)lines number (including splitting by width limit)

◆ myCorners

NCollection_DynamicArray<NCollection_Vec2<float> > Font_TextFormatter::myCorners
protected

The bottom left corners of a formatted rectangles.

◆ myIsFormatted

bool Font_TextFormatter::myIsFormatted
protected

formatting state

◆ myIsWordWrapping

bool Font_TextFormatter::myIsWordWrapping
protected

if TRUE try not to break words when wrapping text (true by default)

◆ myLastSymbolWidth

float Font_TextFormatter::myLastSymbolWidth
protected

width of the last symbol

◆ myLinesNb

int Font_TextFormatter::myLinesNb
protected

overall (new)lines number (including splitting by width limit)

◆ myLineSpacing

float Font_TextFormatter::myLineSpacing
protected

line spacing (computed as maximum of all fonts involved in text formatting)

◆ myMaxSymbolWidth

float Font_TextFormatter::myMaxSymbolWidth
protected

maximum symbol width of the formatter string

◆ myMoveVec

NCollection_Vec2<float> Font_TextFormatter::myMoveVec
protected

local variable

◆ myNewLineNb

int Font_TextFormatter::myNewLineNb
protected

overall (new)lines number (including splitting by width limit)

◆ myNewLines

NCollection_DynamicArray<float> Font_TextFormatter::myNewLines
protected

position at LF

◆ myPen

NCollection_Vec2<float> Font_TextFormatter::myPen
protected

current pen position

◆ myPenCurrLine

float Font_TextFormatter::myPenCurrLine
protected

current baseline position

◆ myRectLineStart

int Font_TextFormatter::myRectLineStart
protected

id of first rectangle on the current line

◆ myString

NCollection_String Font_TextFormatter::myString
protected

currently rendered text

◆ myTabSize

int Font_TextFormatter::myTabSize
protected

horizontal tabulation width (number of space symbols)

◆ myWrappingWidth

float Font_TextFormatter::myWrappingWidth
protected

text is wrapped by the width if defined (more 0)


The documentation for this class was generated from the following file: