Skip to main content

TextArea

touchgfx/widgets/TextArea.hpp

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: TextAreaWithWildcardBase

Protected Classes

classBoundingArea
Structure for the relationship between a bounding rectangle and the contained text.

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.
virtual AlignmentgetAlignment() const
Gets the alignment of text inside the TextArea.
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() const
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.
const TypedText &getTypedText() const
Gets the TypedText of the text area.
WideTextActiongetWideTextAction() const
Gets wide text action previously set using setWideTextAction.
virtual const Unicode::UnicodeChar *getWildcard1() const
Gets the first wildcard used in the TypedText.
virtual const Unicode::UnicodeChar *getWildcard2() const
Gets the second wildcard used in the TypedText.
virtual voidinvalidateContent() const
Tell the framework that the contents of the Drawable needs to be redrawn.
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.
virtual 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 newColor)
Sets the color of the text.
virtual voidsetHeight(int16_t height)
Sets the height of this drawable.
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.
FORCE_INLINE_FUNCTION voidsetRotation(const TextRotation textRotation)
Sets rotation of the text in the TextArea.
voidsetTypedText(const TypedText & t)
Sets the TypedText of the text area.
FORCE_INLINE_FUNCTION voidsetWideTextAction(WideTextAction action)
Defines what to do if a line of text is wider than the text area.
virtual voidsetWidth(int16_t width)
Sets the width of this drawable.
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 Functions

virtual TextArea::BoundingAreacalculateBoundingArea() const
Calculates the minimum bounding rectangle of this text area and correlates it with the containing text, to get the bounding area.

Protected Attributes

uint8_talpha
The alpha to use.
BoundingAreaboundingArea
Bounding area of this text area.
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.
const uint16_tnewLine
NewLine value.

Additional inherited members

Public Functions inherited from Widget

virtual voidgetLastChild(int16_t , int16_t , 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

voidcenter()
Centers the Drawable inside its parent.
voidcenterX()
Center the Drawable horizontally inside its parent.
voidcenterY()
Center the Drawable vertically inside its parent.
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.
voidexpand(int margin =0)
Expands the Drawable to have the same size as its parent with a given margin around the edge.
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 & event)
Defines the event handler interface for ClickEvents.
virtual voidhandleDragEvent(const DragEvent & event)
Defines the event handler interface for DragEvents.
virtual voidhandleGestureEvent(const GestureEvent & event)
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.
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.
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 & other)
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::TextAreaWithWildcardBase::draw

getAlignment

virtual Alignment getAlignment()const

Gets the alignment of text inside the TextArea.

Returns:

The alignment.

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 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()const

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.

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.

getTypedText

const 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:

getWildcard1

virtual const Unicode::UnicodeChar * getWildcard1()const

Gets the first wildcard used in the TypedText.

Returns:

A pointer to the first wildcard, if this text area has a wildcard, otherwise 0.

See also:

Reimplemented by: touchgfx::TextAreaWithOneWildcard::getWildcard1, touchgfx::TextAreaWithTwoWildcards::getWildcard1

getWildcard2

virtual const Unicode::UnicodeChar * getWildcard2()const

Gets the second wildcard used in the TypedText.

Returns:

A pointer to the second wildcard, if this text area has two wildcards, otherwise 0.

See also:

Reimplemented by: touchgfx::TextAreaWithTwoWildcards::getWildcard2

invalidateContent

virtual void invalidateContent()const

Tell the framework that the contents of the Drawable needs to be redrawn.

If the Drawable is invisible, nothing happens. Subclasses of Drawable are encouraged to implement this function and invalidate as little as possible, i.e. the smallest rectangle covering the visual element(s) drawn by the widget.

Reimplements: touchgfx::Drawable::invalidateContent

Reimplemented by: touchgfx::TextAreaWithWildcardBase::invalidateContent

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

virtual 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(colortypenewColor)

Sets the color of the text.

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

Parameters:
newColorThe color to use.

setHeight

virtual void setHeight(int16_theight)

Sets the height of this drawable.

Parameters:
heightThe new height.
Note

For most Drawable widgets, changing this does normally not automatically yield a redraw.

Reimplements: touchgfx::Drawable::setHeight

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

FORCE_INLINE_FUNCTION void setRotation(const TextRotationtextRotation)

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:
textRotationThe rotation of the text.

setTypedText

void setTypedText(const TypedText &t)

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

FORCE_INLINE_FUNCTION void setWideTextAction(WideTextActionaction)

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:

setWidth

virtual void setWidth(int16_twidth)

Sets the width of this drawable.

Parameters:
widthThe new width.
Note

For most Drawable widgets, changing this does normally not automatically yield a redraw.

Reimplements: touchgfx::Drawable::setWidth

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 Functions Documentation

calculateBoundingArea

virtual TextArea::BoundingArea calculateBoundingArea()const

Calculates the minimum bounding rectangle of this text area and correlates it with the containing text, to get the bounding area.

Note: The bounding rectangle is adjusted according to alignment and rotation.

Returns:

The bounding area.

Reimplemented by: touchgfx::TextAreaWithWildcardBase::calculateBoundingArea

Protected Attributes Documentation

alpha

uint8_t alpha

The alpha to use.

boundingArea

BoundingArea boundingArea

Bounding area of this text area.

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.

newLine

const uint16_t newLine = 10

NewLine value.