Container
touchgfx/containers/Container.hpp
A Container is a Drawable that can have child nodes. The z-order of children is determined by the order in which Drawables are added to the container - the Drawable added last will be front-most on the screen.
This class overrides a few functions in Drawable in order to traverse child nodes.
Note that containers act as view ports - that is, only the parts of children that intersect with the geometry of the container will be visible (e.g. setting a container's width to 0 will render all children invisible).
See: Drawable
Inherits from: Drawable
Inherited by: MoveAnimator< touchgfx::Container >, AbstractButtonContainer, AbstractClock, AbstractDataGraph, AbstractProgressIndicator, CacheableContainer, DrawableList, Keyboard, ListLayout, ModalWindow, ScrollableContainer, ScrollBase, SlideMenu, Slider, SwipeContainer, ZoomAnimationImage
Public Functions
virtual void | add(Drawable & d) |
Adds a Drawable instance as child to this Container. | |
Container() | |
virtual bool | contains(const Drawable & d) |
Query if a given Drawable has been added directly to this Container. | |
virtual void | draw(const Rect & invalidatedArea) const |
Draw this drawable. | |
virtual void | forEachChild(GenericCallback< Drawable & > * function) |
Executes the specified callback function for each child in the Container. | |
virtual Drawable * | getFirstChild() |
Obtain a pointer to the first child of this container. | |
virtual void | getLastChild(int16_t x, int16_t y, Drawable ** last) |
Gets the last child in the list of children in this Container. | |
virtual void | getLastChildNear(int16_t x, int16_t y, Drawable * last, int16_t fingerAdjustmentX, int16_t * fingerAdjustmentY) |
Works similar to getLastChild() but also considers the current set finger size in HAL. | |
virtual Rect | getSolidRect() const |
Get (the largest possible) rectangle that is guaranteed to be solid (opaque). | |
virtual void | insert(Drawable * previous, Drawable & d) |
Inserts a Drawable after a specific child node. | |
virtual void | remove(Drawable & d) |
Removes a Drawable from the container by removing it from the linked list of children. | |
virtual void | removeAll() |
Removes all children in the Container by resetting their parent and sibling pointers. | |
virtual void | unlink() |
Removes all children by unlinking the first child. | |
Protected Functions
virtual Rect | getContainedArea() const |
Gets a rectangle describing the total area covered by the children of this container. | |
virtual void | moveChildrenRelative(int16_t deltaX, int16_t deltaY) |
Calls moveRelative on all children. | |
Protected Attributes
Drawable * | firstChild |
Pointer to the first child of this container. Subsequent children can be found through firstChild's nextSibling. | |
Additional inherited members
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. | |
int16_t | getHeight() const |
Gets the height of this Drawable. | |
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 | invalidateContent() const |
Tell the framework that the contents of the 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 & other) |
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
add
Adds a Drawable instance as child to this Container.
The Drawable added will be placed as the element to be drawn last, and thus appear on top of all previously added drawables in the Container.
d | The Drawable to add. |
Note
Never add a drawable more than once!
Reimplemented by: touchgfx::ListLayout::add, touchgfx::ModalWindow::add, touchgfx::ScrollableContainer::add, touchgfx::SlideMenu::add, touchgfx::SwipeContainer::add
Container
contains
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::Keyboard::draw
forEachChild
virtual void forEachChild | ( | GenericCallback< Drawable & > * | function | ) | |
getFirstChild
virtual Drawable * getFirstChild | ( | ) |
Obtain a pointer to the first child of this container.
The first child is the Drawable drawn first, and therefore the Drawablebehind all other children of this Container. Useful if you want to manually iterate the children added to this container.
Pointer to the first drawable added to this container. If nothing has been added return zero.
Reimplements: touchgfx::Drawable::getFirstChild
getLastChild
virtual void getLastChild | ( | int16_t | x , | ||
int16_t | y , | ||||
Drawable ** | last | ||||
) |
Gets the last child in the list of children in this Container.
If this Container is touchable (isTouchable()), it will be passed back as the result. Otherwise all visible children are traversed recursively to find the Drawable that intersects with the given coordinate.
x | The x coordinate of the intersection. |
y | The y coordinate of the intersection. |
last | out parameter in which the result is placed. |
Reimplements: touchgfx::Drawable::getLastChild
Reimplemented by: touchgfx::ScrollableContainer::getLastChild
getLastChildNear
virtual void getLastChildNear | ( | int16_t | x , | ||
int16_t | y , | ||||
Drawable ** | last , | ||||
int16_t * | fingerAdjustmentX , | ||||
int16_t * | fingerAdjustmentY | ||||
) |
Works similar to getLastChild() but also considers the current set finger size in HAL.
x | The x coordinate of the intersection. |
y | The y coordinate of the intersection. |
last | out parameter in which the result is placed. |
fingerAdjustmentX | out parameter in which the finger adjustment x is placed. |
fingerAdjustmentY | out parameter in which the finger adjustment y is placed. |
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
insert
Inserts a Drawable after a specific child node.
If previous child node is 0, the drawable will be inserted as the first element in the list. The first element in the list of children is the element drawn first, so this makes it possible to insert a Drawablebehind all previously added children.
Note
As with add, do not add the same drawable twice.
Reimplemented by: touchgfx::ListLayout::insert
remove
Removes a Drawable from the container by removing it from the linked list of children.
If the Drawable is not in the list of children, nothing happens. It is possible to remove an element from whichever Container it is a member of using:
if (d.getParent()) d.getParent()->remove(d);
The Drawable will have the parent and next sibling cleared, but is otherwise left unaltered.
d | The Drawable to remove. |
Note
This is safe to call even if d is not a child of this Container (in which case nothing happens).
Reimplemented by: touchgfx::ListLayout::remove, touchgfx::ModalWindow::remove, touchgfx::SlideMenu::remove, touchgfx::SwipeContainer::remove
removeAll
virtual void removeAll | ( | ) |
Removes all children in the Container by resetting their parent and sibling pointers.
Please note that this is not done recursively, so any child which is itself a Container is not emptied.
Reimplemented by: touchgfx::ListLayout::removeAll
unlink
virtual void unlink | ( | ) |
Removes all children by unlinking the first child.
The parent and sibling pointers of the children are not reset.
Protected Functions Documentation
getContainedArea
virtual Rect getContainedArea | ( | ) | const |
Gets a rectangle describing the total area covered by the children of this container.
Rectangle covering all children.
Reimplemented by: touchgfx::ScrollableContainer::getContainedArea
moveChildrenRelative
virtual void moveChildrenRelative | ( | int16_t | deltaX , | ||
int16_t | deltaY | ||||
) |
Calls moveRelative on all children.
deltaX | Horizontal displacement. |
deltaY | Vertical displacement. |
Reimplemented by: touchgfx::ScrollableContainer::moveChildrenRelative
Protected Attributes Documentation
firstChild
Drawable * firstChild
Pointer to the first child of this container. Subsequent children can be found through firstChild's nextSibling.