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: TextAreaWithWildcardBase
Protected Classes
class | BoundingArea |
Structure for the relationship between a bounding rectangle and the contained text. | |
Public Functions
virtual int16_t | calculateTextHeight(const Unicode::UnicodeChar * format, ... ) const |
Gets the total height needed by the text. | |
virtual void | draw(const Rect & invalidatedArea) const |
Draw this drawable. | |
virtual Alignment | getAlignment() const |
Gets the alignment of text inside the TextArea. | |
uint8_t | getAlpha() const |
Gets the current alpha value of the widget. | |
FORCE_INLINE_FUNCTION colortype | getColor() const |
Gets the color of the text. | |
FORCE_INLINE_FUNCTION uint8_t | getIndentation() |
Gets the indentation of text inside the TextArea. | |
FORCE_INLINE_FUNCTION int16_t | getLinespacing() const |
Gets the line spacing of the TextArea. | |
TextRotation | getRotation() const |
Gets rotation of the text in the TextArea. | |
virtual Rect | getSolidRect() const |
Get (the largest possible) rectangle that is guaranteed to be solid (opaque). | |
virtual int16_t | getTextHeight() const |
Gets the total height needed by the text, taking number of lines and line spacing into consideration. | |
virtual uint16_t | getTextWidth() const |
Gets the width in pixels of the current associated text in the current selected language. | |
TypedText | getTypedText() const |
Gets the TypedText of the text area. | |
WideTextAction | getWideTextAction() 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 void | invalidateContent() const |
Tell the framework that the contents of the Drawable needs to be redrawn. | |
void | resizeHeightToCurrentText() |
Sets the height of the TextArea to match the height of the current associated text for the current selected language. | |
void | resizeHeightToCurrentTextWithRotation() |
Sets the height of the TextArea to match the height of the current associated text for the current selected language. | |
void | resizeToCurrentText() |
Sets the dimensions of the TextArea to match the width and height of the current associated text for the current selected language. | |
void | 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. | |
virtual void | setAlpha(uint8_t newAlpha) |
Sets the opacity (alpha value). | |
virtual void | setBaselineY(int16_t baselineY) |
Adjusts the TextArea y coordinate so the text will have its baseline at the specified value. | |
FORCE_INLINE_FUNCTION void | setColor(colortype color) |
Sets the color of the text. | |
virtual void | setHeight(int16_t height) |
Sets the height of this drawable. | |
FORCE_INLINE_FUNCTION void | setIndentation(uint8_t indent) |
Sets the indentation for the text. | |
FORCE_INLINE_FUNCTION void | setLinespacing(int16_t space) |
Sets the line spacing of the TextArea. | |
FORCE_INLINE_FUNCTION void | setRotation(const TextRotation textRotation) |
Sets rotation of the text in the TextArea. | |
void | setTypedText(const TypedText & t) |
Sets the TypedText of the text area. | |
FORCE_INLINE_FUNCTION void | setWideTextAction(WideTextAction action) |
Defines what to do if a line of text is wider than the text area. | |
virtual void | setWidth(int16_t width) |
Sets the width of this drawable. | |
virtual void | setXBaselineY(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::BoundingArea | calculateBoundingArea() 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_t | alpha |
The alpha to use. | |
BoundingArea | boundingArea |
Bounding area of this text area. | |
colortype | color |
The color to use for the text. | |
uint8_t | indentation |
The indentation of the text inside the text area. | |
int16_t | linespace |
The extra space between lines of text, measured in pixels. | |
TextRotation | rotation |
The text rotation to use in steps of 90 degrees. | |
TypedText | typedText |
The TypedText to display. | |
WideTextAction | wideTextAction |
What to do if the lines of text are wider than the text area. | |
const uint16_t | newLine |
NewLine value. | |
Additional inherited members
Public Functions inherited from Widget
virtual void | getLastChild(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
void | center() |
Centers the Drawable inside its parent. | |
void | centerX() |
Center the Drawable horizontally inside its parent. | |
void | centerY() |
Center the Drawable vertically inside its parent. | |
virtual void | childGeometryChanged() |
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. | |
void | drawToDynamicBitmap(BitmapId id) |
Render the Drawable object into a dynamic bitmap. | |
void | expand(int margin =0) |
Expands the Drawable to have the same size as its parent with a given margin around the edge. | |
Rect | getAbsoluteRect() 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_t | getHeight() const |
Gets the height of this Drawable. | |
virtual void | getLastChild(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 Rect | getSolidRectAbsolute() |
Helper function for obtaining the largest solid rect (as implemented by getSolidRect()) expressed in absolute coordinates. | |
virtual void | getVisibleRect(Rect & rect) const |
Function for finding the visible part of this drawable. | |
int16_t | getWidth() const |
Gets the width of this Drawable. | |
int16_t | getX() const |
Gets the x coordinate of this Drawable, relative to its parent. | |
int16_t | getY() const |
Gets the y coordinate of this Drawable, relative to its parent. | |
virtual void | handleClickEvent(const ClickEvent & event) |
Defines the event handler interface for ClickEvents. | |
virtual void | handleDragEvent(const DragEvent & event) |
Defines the event handler interface for DragEvents. | |
virtual void | handleGestureEvent(const GestureEvent & event) |
Defines the event handler interface for GestureEvents. | |
virtual void | handleTickEvent() |
Called periodically by the framework if the Drawable instance has subscribed to timer ticks. | |
virtual void | invalidate() const |
Tell the framework that this entire Drawable needs to be redrawn. | |
virtual void | invalidateRect(Rect & invalidatedArea) const |
Request that a region of this drawable is redrawn. | |
bool | isTouchable() const |
Gets whether this Drawable receives touch events or not. | |
bool | isVisible() const |
Gets whether this Drawable is visible. | |
virtual void | moveRelative(int16_t x, int16_t y) |
Moves the drawable. | |
virtual void | moveTo(int16_t x, int16_t y) |
Moves the drawable. | |
void | setPosition(const Drawable & drawable) |
Sets the position of the Drawable to the same as the given Drawable. | |
void | setPosition(int16_t x, int16_t y, int16_t width, int16_t height) |
Sets the size and position of this Drawable, relative to its parent. | |
void | setTouchable(bool touch) |
Controls whether this Drawable receives touch events or not. | |
void | setVisible(bool vis) |
Controls whether this Drawable should be visible. | |
void | setWidthHeight(const Bitmap & bitmap) |
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates). | |
void | setWidthHeight(const Drawable & drawable) |
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates). | |
void | setWidthHeight(const Rect & rect) |
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates). | |
void | setWidthHeight(int16_t width, int16_t height) |
Sets the dimensions (width and height) of the Drawable without changing the x and y coordinates). | |
virtual void | setX(int16_t x) |
Sets the x coordinate of this Drawable, relative to its parent. | |
void | setXY(const Drawable & drawable) |
Sets the x and y coordinates of this Drawable. | |
void | setXY(int16_t x, int16_t y) |
Sets the x and y coordinates of this Drawable, relative to its parent. | |
virtual void | setY(int16_t y) |
Sets the y coordinate of this Drawable, relative to its parent. | |
virtual void | translateRectToAbsolute(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. | |
Rect | rect |
The coordinates of this Drawable, relative to its parent. | |
bool | touchable |
True if this drawable should receive touch events. | |
bool | visible |
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.
format | The text containing <placeholder> wildcards. |
... | Variable arguments providing additional information. |
the total height needed by the text.
draw
Draw this drawable.
It is a requirement that the draw implementation does not draw outside the region specified by invalidatedArea.
invalidatedArea | The 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 |
getAlpha
uint8_t getAlpha | ( | ) | const |
Gets the current alpha value of the widget.
The alpha value is in range 255 (solid) to 0 (invisible).
The current alpha value.
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.
The color to used for drawing the text.
getIndentation
FORCE_INLINE_FUNCTION uint8_t getIndentation | ( | ) |
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.
The line spacing.
getRotation
TextRotation getRotation | ( | ) | const |
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.
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.
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.
The width in pixels of the current text.
getTypedText
TypedText getTypedText | ( | ) | const |
getWideTextAction
WideTextAction getWideTextAction | ( | ) | const |
Gets wide text action previously set using setWideTextAction.
current WideTextAction setting.
getWildcard1
virtual const Unicode::UnicodeChar * getWildcard1 | ( | ) | const |
Gets the first wildcard used in the TypedText.
A pointer to the first wildcard, if this text area has a wildcard, otherwise 0.
Reimplemented by: touchgfx::TextAreaWithOneWildcard::getWildcard1, touchgfx::TextAreaWithTwoWildcards::getWildcard1
getWildcard2
virtual const Unicode::UnicodeChar * getWildcard2 | ( | ) | const |
Gets the second wildcard used in the TypedText.
A pointer to the second wildcard, if this text area has two wildcards, otherwise 0.
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
void 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.
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.
resizeToCurrentText
void 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.
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.
setAlpha
virtual void setAlpha | ( | uint8_t | newAlpha | ) | |
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).
newAlpha | The new alpha value. 255=solid, 0=invisible. |
Note
The user code must call invalidate() in order to update the display.
setBaselineY
virtual void setBaselineY | ( | int16_t | baselineY | ) | |
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.
baselineY | The y coordinate of the baseline of the text. |
Note
setTypedText() must be called prior to setting the baseline.
setColor
Sets the color of the text.
If no color is set, the default color (black) is used.
color | The color to use. |
setHeight
virtual void setHeight | ( | int16_t | height | ) | |
Sets the height of this drawable.
height | The 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_t | indent | ) | |
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.
indent | The indentation from left (when left aligned text) and right (when right aligned text). |
setLinespacing
FORCE_INLINE_FUNCTION void setLinespacing | ( | int16_t | space | ) | |
setRotation
FORCE_INLINE_FUNCTION void setRotation | ( | const TextRotation | textRotation | ) | |
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.
textRotation | The rotation of the text. |
setTypedText
void setTypedText | ( | const TypedText & | t | ) | |
setWideTextAction
FORCE_INLINE_FUNCTION void setWideTextAction | ( | WideTextAction | action | ) | |
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.
action | The action to perform for wide lines of text. |
setWidth
virtual void setWidth | ( | int16_t | width | ) | |
Sets the width of this drawable.
width | The 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_t | x , | ||
int16_t | baselineY | ||||
) |
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.
x | The x coordinate of the TextArea. |
baselineY | The y coordinate of the baseline of the text. |
Note
setTypedText() must be called prior to setting the baseline.
TextArea
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.
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.