Skip to main content
Version: 4.16

TextArea

This widget is capable of showing a text area on the screen. The text must be a predefined TypedText in the text sheet in the assets folder. In order to display a dynamic text, use TextAreaWithOneWildcard or TextAreaWithTwoWildcards.

See: TypedText, TextAreaWithOneWildcard, TextAreaWithTwoWildcards

Note: A TextArea just holds a pointer to the text displayed. The developer must ensure that the pointer remains valid when drawing.

Inherits from: Widget, Drawable

Inherited by: TextAreaWithOneWildcard, TextAreaWithTwoWildcards

Public Functions#

virtual int16_tcalculateTextHeight(const Unicode::UnicodeChar * format, ... ) const
Gets the total height needed by the text.
virtual voiddraw(const Rect & invalidatedArea) const
Draw this drawable.
uint8_tgetAlpha() const
Gets the current alpha value of the widget.
FORCE_INLINE_FUNCTION colortypegetColor() const
Gets the color of the text.
FORCE_INLINE_FUNCTION uint8_tgetIndentation()
Gets the indentation of text inside the TextArea.
FORCE_INLINE_FUNCTION int16_tgetLinespacing() const
Gets the line spacing of the TextArea.
TextRotationgetRotation() const
Gets rotation of the text in the TextArea.
virtual RectgetSolidRect() const
Get (the largest possible) rectangle that is guaranteed to be solid (opaque).
virtual int16_tgetTextHeight()
Gets the total height needed by the text, taking number of lines and line spacing into consideration.
virtual uint16_tgetTextWidth() const
Gets the width in pixels of the current associated text in the current selected language.
TypedTextgetTypedText() const
Gets the TypedText of the text area.
WideTextActiongetWideTextAction() const
Gets wide text action previously set using setWideTextAction.
voidresizeHeightToCurrentText()
Sets the height of the TextArea to match the height of the current associated text for the current selected language.
voidresizeHeightToCurrentTextWithRotation()
Sets the height of the TextArea to match the height of the current associated text for the current selected language.
voidresizeToCurrentText()
Sets the dimensions of the TextArea to match the width and height of the current associated text for the current selected language.
voidresizeToCurrentTextWithAlignment()
Sets the dimensions of the TextArea to match the width and height of the current associated text for the current selected language, and for centered and right aligned text, the position of the TextArea widget is also updated to keep the text in the same position on the display.
voidsetAlpha(uint8_t newAlpha)
Sets the opacity (alpha value).
virtual voidsetBaselineY(int16_t baselineY)
Adjusts the TextArea y coordinate so the text will have its baseline at the specified value.
FORCE_INLINE_FUNCTION voidsetColor(colortype color)
Sets the color of the text.
FORCE_INLINE_FUNCTION voidsetIndentation(uint8_t indent)
Sets the indentation for the text.
FORCE_INLINE_FUNCTION voidsetLinespacing(int16_t space)
Sets the line spacing of the TextArea.
voidsetRotation(const TextRotation rotation)
Sets rotation of the text in the TextArea.
voidsetTypedText(TypedText t)
Sets the TypedText of the text area.
voidsetWideTextAction(WideTextAction action)
Defines what to do if a line of text is wider than the text area.
virtual voidsetXBaselineY(int16_t x, int16_t baselineY)
Adjusts the TextArea x and y coordinates so the text will have its baseline at the specified y value.
TextArea()

Protected Attributes#

uint8_talpha
The alpha to use.
colortypecolor
The color to use for the text.
uint8_tindentation
The indentation of the text inside the text area.
int16_tlinespace
The extra space between lines of text, measured in pixels.
TextRotationrotation
The text rotation to use in steps of 90 degrees.
TypedTexttypedText
The TypedText to display.
WideTextActionwideTextAction
What to do if the lines of text are wider than the text area.

Additional inherited members#

Public Functions inherited from Widget#

virtual voidgetLastChild(int16_t x, int16_t y, Drawable ** last)
Since a Widget is only one Drawable, Widget::getLastChild simply yields itself as result, but only if the Widget isVisible and isTouchable.

Public Functions inherited from Drawable#

virtual voidchildGeometryChanged()
This function can be called on parent nodes to signal that the size or position of one or more of its children has changed.
Drawable()
Initializes a new instance of the Drawable class.
voiddrawToDynamicBitmap(BitmapId id)
Render the Drawable object into a dynamic bitmap.
RectgetAbsoluteRect() const
Helper function for obtaining the rectangle this Drawable covers, expressed in absolute coordinates.
virtual Drawable *getFirstChild()
Function for obtaining the first child of this drawable if any.
int16_tgetHeight() const
Gets the height of this Drawable.
virtual voidgetLastChild(int16_t x, int16_t y, Drawable ** last) =0
Function for obtaining the the last child of this drawable that intersects with the specified point.
Drawable *getNextSibling()
Gets the next sibling node.
Drawable *getParent() const
Returns the parent node.
const Rect &getRect() const
Gets the rectangle this Drawable covers, in coordinates relative to its parent.
virtual RectgetSolidRectAbsolute()
Helper function for obtaining the largest solid rect (as implemented by getSolidRect()) expressed in absolute coordinates.
virtual voidgetVisibleRect(Rect & rect) const
Function for finding the visible part of this drawable.
int16_tgetWidth() const
Gets the width of this Drawable.
int16_tgetX() const
Gets the x coordinate of this Drawable, relative to its parent.
int16_tgetY() const
Gets the y coordinate of this Drawable, relative to its parent.
virtual voidhandleClickEvent(const ClickEvent & evt)
Defines the event handler interface for ClickEvents.
virtual voidhandleDragEvent(const DragEvent & evt)
Defines the event handler interface for DragEvents.
virtual voidhandleGestureEvent(const GestureEvent & evt)
Defines the event handler interface for GestureEvents.
virtual voidhandleTickEvent()
Called periodically by the framework if the Drawable instance has subscribed to timer ticks.
virtual voidinvalidate() const
Tell the framework that this entire Drawable needs to be redrawn.
virtual voidinvalidateRect(Rect & invalidatedArea) const
Request that a region of this drawable is redrawn.
boolisTouchable() const
Gets whether this Drawable receives touch events or not.
boolisVisible() const
Gets whether this Drawable is visible.
virtual voidmoveRelative(int16_t x, int16_t y)
Moves the drawable.
virtual voidmoveTo(int16_t x, int16_t y)
Moves the drawable.
virtual voidsetHeight(int16_t height)
Sets the height of this drawable.
voidsetPosition(const Drawable & drawable)
Sets the position of the Drawable to the same as the given Drawable.
voidsetPosition(int16_t x, int16_t y, int16_t width, int16_t height)
Sets the size and position of this Drawable, relative to its parent.
voidsetTouchable(bool touch)
Controls whether this Drawable receives touch events or not.
voidsetVisible(bool vis)
Controls whether this Drawable should be visible.
virtual voidsetWidth(int16_t width)
Sets the width of this drawable.
voidsetWidthHeight(const Bitmap & bitmap)
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates).
voidsetWidthHeight(const Drawable & drawable)
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates).
voidsetWidthHeight(const Rect & rect)
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates).
voidsetWidthHeight(int16_t width, int16_t height)
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates).
virtual voidsetX(int16_t x)
Sets the x coordinate of this Drawable, relative to its parent.
voidsetXY(const Drawable & drawable)
Sets the x and y coordinates of this Drawable.
voidsetXY(int16_t x, int16_t y)
Sets the x and y coordinates of this Drawable, relative to its parent.
virtual voidsetY(int16_t y)
Sets the y coordinate of this Drawable, relative to its parent.
virtual voidtranslateRectToAbsolute(Rect & r) const
Helper function for converting a region of this Drawable to absolute coordinates.
virtual ~Drawable()
Finalizes an instance of the Drawable class.

Protected Attributes inherited from Drawable#

Drawable *nextSibling
Pointer to the next Drawable.
Drawable *parent
Pointer to this drawable's parent.
Rectrect
The coordinates of this Drawable, relative to its parent.
booltouchable
True if this drawable should receive touch events.
boolvisible
True if this drawable should be drawn.

Public Functions Documentation#

calculateTextHeight#

virtual int16_t calculateTextHeight(const Unicode::UnicodeChar *format ,const
...const
)const

Gets the total height needed by the text.

Determined by number of lines and linespace. The number of parameters passed after the format, must match the number of wildcards in the TypedText.

Parameters:
formatThe text containing <placeholder> wildcards.
...Variable arguments providing additional information.
Returns:

the total height needed by the text.

draw#

virtual void draw(const Rect &invalidatedArea)

Draw this drawable.

It is a requirement that the draw implementation does not draw outside the region specified by invalidatedArea.

Parameters:
invalidatedAreaThe sub-region of this drawable that needs to be redrawn, expressed in coordinates relative to its parent (e.g. for a complete redraw, invalidatedArea will be (0, 0, width, height).

Reimplements: touchgfx::Drawable::draw

Reimplemented by: touchgfx::TextAreaWithOneWildcard::draw, touchgfx::TextAreaWithTwoWildcards::draw

getAlpha#

uint8_t getAlpha()const

Gets the current alpha value of the widget.

The alpha value is in range 255 (solid) to 0 (invisible).

Returns:

The current alpha value.

See also:

getColor#

FORCE_INLINE_FUNCTION colortype getColor()const

Gets the color of the text.

If no color has been set, the default color, black, is returned.

Returns:

The color to used for drawing the text.

getIndentation#

FORCE_INLINE_FUNCTION uint8_t getIndentation()

Gets the indentation of text inside the TextArea.

Returns:

The indentation.

See also:

getLinespacing#

FORCE_INLINE_FUNCTION int16_t getLinespacing()const

Gets the line spacing of the TextArea.

If no line spacing has been set, the line spacing is 0.

Returns:

The line spacing.

See also:

getRotation#

TextRotation getRotation()const

Gets rotation of the text in the TextArea.

Returns:

The rotation of the text.

See also:

getSolidRect#

virtual Rect getSolidRect()const

Get (the largest possible) rectangle that is guaranteed to be solid (opaque).

This information is important, as any Drawable underneath the solid area does not need to be drawn.

Returns:

The solid rectangle part of the Drawable.

Note

The rectangle returned must be relative to upper left corner of the Drawable, meaning that a completely solid widget should return the full size Rect(0, 0, getWidth(), getHeight()). If no area can be guaranteed to be solid, an empty Rect(0, 0, 0, 0) must be returned. Failing to return the correct rectangle may result in errors on the display.

Reimplements: touchgfx::Drawable::getSolidRect

getTextHeight#

virtual int16_t getTextHeight()

Gets the total height needed by the text, taking number of lines and line spacing into consideration.

Returns:

the total height needed by the text.

Reimplemented by: touchgfx::TextAreaWithOneWildcard::getTextHeight, touchgfx::TextAreaWithTwoWildcards::getTextHeight

getTextWidth#

virtual uint16_t getTextWidth()const

Gets the width in pixels of the current associated text in the current selected language.

In case of multi-lined text the width of the widest line is returned.

Returns:

The width in pixels of the current text.

Reimplemented by: touchgfx::TextAreaWithOneWildcard::getTextWidth, touchgfx::TextAreaWithTwoWildcards::getTextWidth

getTypedText#

TypedText getTypedText()const

Gets the TypedText of the text area.

Returns:

The currently used TypedText.

getWideTextAction#

WideTextAction getWideTextAction()const

Gets wide text action previously set using setWideTextAction.

Returns:

current WideTextAction setting.

See also:

resizeHeightToCurrentText#

Sets the height of the TextArea to match the height of the current associated text for the current selected language.

This is especially useful for texts with WordWrap enabled.

Note

If the current text rotation is either 90 or 270 degrees, the width of the text area will be set and not the height, as the text is rotated. If the current text is rotated, the x/y coordinate is not updated, which means that the text will be repositioned on the display.

See also:

resizeHeightToCurrentTextWithRotation#

Sets the height of the TextArea to match the height of the current associated text for the current selected language.

This is especially useful for texts with WordWrap enabled.

Note

If the current text rotation is either 90 or 270 degrees, the width of the text area will be set and not the height, as the text is rotated. Also, the x or y coordinates will be updated.

See also:

resizeToCurrentText#

Sets the dimensions of the TextArea to match the width and height of the current associated text for the current selected language.

If WordWrap is turned on for the TextArea, the height might be set to an unexpected value, as only manually insert line breaks in the text will be respected - use resizeHeightToCurrentText() to keep the width of the TextArea and therefore retain word wrapping.

If the text is centered or right aligned, calling resizeToCurrentText() will actually move the text on the screen, as the x and y coordinates of the TextArea widget is not changed. To simply minimize the size of the TextArea but keep the TypedText in the same position on the screen, use resizeToCurrentTextWithAlignment(). This is also the case if the text is rotated, e.g. 180 degrees.

Note

If the current text rotation is either 90 or 270 degrees, the width of the text area will be set to the height of the text and vice versa, as the text is rotated.

See also:

resizeToCurrentTextWithAlignment#

Sets the dimensions of the TextArea to match the width and height of the current associated text for the current selected language, and for centered and right aligned text, the position of the TextArea widget is also updated to keep the text in the same position on the display.

Text that is rotated is also handled properly.

Note

If the current text rotation is either 90 or 270 degrees, the width of the text area will be set to the height of the text and vice versa, as the text is rotated.

See also:

setAlpha#

void setAlpha(uint8_tnewAlpha)

Sets the opacity (alpha value).

This can be used to fade it away by gradually decreasing the alpha value from 255 (solid) to 0 (invisible).

Parameters:
newAlphaThe new alpha value. 255=solid, 0=invisible.
Note

The user code must call invalidate() in order to update the display.

See also:

setBaselineY#

virtual void setBaselineY(int16_tbaselineY)

Adjusts the TextArea y coordinate so the text will have its baseline at the specified value.

The placements is relative to the specified TypedText so if the TypedText is changed, you have to set the baseline again.

Parameters:
baselineYThe y coordinate of the baseline of the text.
Note

setTypedText() must be called prior to setting the baseline.

setColor#

FORCE_INLINE_FUNCTION void setColor(colortypecolor)

Sets the color of the text.

If no color is set, the default color (black) is used.

Parameters:
colorThe color to use.

setIndentation#

FORCE_INLINE_FUNCTION void setIndentation(uint8_tindent)

Sets the indentation for the text.

This can be very useful when a font is an italic font where letters such as "j" and "g" extend a lot to the left under the previous character(s). if a line starts with a "j" or "g" this letter would either have to be pushed to the right to be able to see all of it, e.g. using spaces (which would ruin a multi line text which is left aligned) - or by clipping the first letter (which could ruin the nice graphics). The solution is to change

textarea.setPosition(50, 50, 100, 100);

to

textarea.setPosition(45, 50, 110, 100);
textarea.setIndentation(5);

Characters that do not extend to the left under the previous characters will be drawn in the same position in either case, but "j" and "g" will be aligned with other lines.

The function Font::getMaxPixelsLeft() will give you the maximum number of pixels any glyph in the font extends to the left.

Parameters:
indentThe indentation from left (when left aligned text) and right (when right aligned text).
See also:

setLinespacing#

FORCE_INLINE_FUNCTION void setLinespacing(int16_tspace)

Sets the line spacing of the TextArea.

Setting a larger value will increase the space between lines. It is possible to set a negative value to have lines (partially) overlap. Default line spacing, if not set, is 0.

Parameters:
spaceThe line spacing of use in the TextArea.
See also:

setRotation#

void setRotation(const TextRotationrotation)

Sets rotation of the text in the TextArea.

The value TEXT_ROTATE_0 is the default for normal text. The value TEXT_ROTATE_90 will rotate the text clockwise, thus writing from the top of the display and down. Similarly TEXT_ROTATE_180 and TEXT_ROTATE_270 will each rotate the text further 90 degrees clockwise.

Parameters:
rotationThe rotation of the text.

setTypedText#

Sets the TypedText of the text area.

If no prior size has been set, the TextArea will be resized to fit the new TypedText.

Parameters:
tThe TypedText for this widget to display.
See also:

setWideTextAction#

Defines what to do if a line of text is wider than the text area.

Default action is WIDE_TEXT_NONE which means that text lines are only broken if there is a manually inserted newline in the text.

If wrapping is enabled and the text would occupy more lines than the size of the TextArea, the end of the last line will get an ellipsis (often ) to signal that some text is missing. The character used for ellipsis is taken from the text spreadsheet.

Parameters:
actionThe action to perform for wide lines of text.
See also:

setXBaselineY#

virtual void setXBaselineY(int16_tx ,
int16_tbaselineY
)

Adjusts the TextArea x and y coordinates so the text will have its baseline at the specified y value.

The placements is relative to the specified TypedText so if the TypedText is changed you have to set the baseline again. The specified x coordinate will be used as the x coordinate of the TextArea.

Parameters:
xThe x coordinate of the TextArea.
baselineYThe y coordinate of the baseline of the text.
Note

setTypedText() must be called prior to setting the baseline.

TextArea#

Protected Attributes Documentation#

alpha#

uint8_t alpha

The alpha to use.

color#

colortype color

The color to use for the text.

indentation#

uint8_t indentation

The indentation of the text inside the text area.

linespace#

int16_t linespace

The extra space between lines of text, measured in pixels.

rotation#

TextRotation rotation

The text rotation to use in steps of 90 degrees.

typedText#

TypedText typedText

The TypedText to display.

wideTextAction#

WideTextAction wideTextAction

What to do if the lines of text are wider than the text area.