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_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. | |
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() |
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. | |
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. | |
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. | |
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. | |
void | setRotation(const TextRotation rotation) |
Sets rotation of the text in the TextArea. | |
void | setTypedText(const TypedText & t) |
Sets the TypedText of the text area. | |
void | setWideTextAction(WideTextAction action) |
Defines what to do if a line of text is wider than the text area. | |
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 Attributes
uint8_t | alpha |
The alpha to use. | |
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. | |
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
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. | |
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. | |
virtual void | setHeight(int16_t height) |
Sets the height of this 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. | |
virtual void | setWidth(int16_t width) |
Sets the width of this drawable. | |
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::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).
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(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.
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.
The width in pixels of the current text.
Reimplemented by: touchgfx::TextAreaWithOneWildcard::getTextWidth, touchgfx::TextAreaWithTwoWildcards::getTextWidth
getTypedText
TypedText getTypedText | ( | ) | const |
getWideTextAction
WideTextAction getWideTextAction | ( | ) | const |
Gets wide text action previously set using setWideTextAction.
current WideTextAction setting.
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
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. |
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
void setRotation | ( | const TextRotation | rotation | ) | |
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.
rotation | The rotation of the text. |
setTypedText
void setTypedText | ( | const TypedText & | t | ) | |
setWideTextAction
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. |
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 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.