Skip to main content

ScrollWheelWithSelectionStyle

touchgfx/containers/scrollers/ScrollWheelWithSelectionStyle.hpp

A scroll wheel is very much like the digit selector on a padlock with numbers. The digits always snap into place and exactly one number is always the "selected" number. Similar to an ordinary ScrollWheel, but with a different style for the selected item which can thus be bold, have a different color or similar effect to highlight it and help create a 3D effect using very few resources.

See: DrawableList, ScrollWheel

Inherits from: ScrollWheelBase, ScrollBase, Container, Drawable

Public Functions

virtual int16_tgetSelectedItemExtraSizeAfter() const
Gets selected item extra size after.
virtual int16_tgetSelectedItemExtraSizeBefore() const
Gets selected item extra size before.
virtual int16_tgetSelectedItemMarginAfter() const
Gets selected item margin after.
virtual int16_tgetSelectedItemMarginBefore() const
Gets selected item margin before.
virtual voidinitialize()
Removed all drawables and initializes the content of these items.
virtual voiditemChanged(int itemIndex)
Inform the scroll list that the contents of an item has changed and force all drawables with the given item index to be updated via the callback provided.
ScrollWheelWithSelectionStyle()
virtual voidsetCircular(bool circular)
Sets whether the list is circular (infinite) or not.
virtual voidsetDrawables(DrawableListItemsInterface & drawableListItems, GenericCallback< DrawableListItemsInterface , int16_t, int16_t > & updateDrawableCallback, DrawableListItemsInterface & centerDrawableListItems, GenericCallback< DrawableListItemsInterface , int16_t, int16_t > & updateCenterDrawableCallback)
Setups the widget.
virtual voidsetDrawableSize(int16_t drawableSize, int16_t drawableMargin)
Sets drawables size.
virtual voidsetHeight(int16_t height)
Sets the height of this drawable.
virtual voidsetHorizontal(bool horizontal)
Sets a horizontal or vertical layout.
virtual voidsetNumberOfItems(int16_t numberOfItems)
Sets number of items in the DrawableList.
virtual voidsetSelectedItemExtraSize(int16_t extraSizeBefore, int16_t extraSizeAfter)
Sets selected item extra size to make the size of the area for the center drawables larger.
virtual voidsetSelectedItemMargin(int16_t marginBefore, int16_t marginAfter)
Sets margin around selected item.
virtual voidsetSelectedItemOffset(int16_t offset)
Sets selected item offset, measured in pixels, from the edge of the widget.
virtual voidsetSelectedItemPosition(int16_t offset, int16_t extraSizeBefore, int16_t extraSizeAfter, int16_t marginBefore, int16_t marginAfter)
Sets the selected item offset.
virtual voidsetWidth(int16_t width)
Sets the width of this drawable.

Protected Functions

voidrefreshDrawableListsLayout()
Refresh drawable lists layout.
virtual voidsetOffset(int32_t offset)
Sets display offset of first item.

Protected Attributes

DrawableListItemsInterface *centerDrawables
The drawables at the center of the scroll wheel.
DrawableListItemsInterface *drawables
The drawables at the beginning and end of the scroll wheel.
int16_tdrawablesInFirstList
List of drawables in firsts.
int16_textraSizeAfterSelectedItem
The distance after selected item.
int16_textraSizeBeforeSelectedItem
The distance before selected item.
DrawableListlist1
The center list.
DrawableListlist2
The list for items not in the center.
int16_tmarginAfterSelectedItem
The distance after selected item.
int16_tmarginBeforeSelectedItem
The distance before selected item.
GenericCallback< DrawableListItemsInterface , int16_t, int16_t > originalUpdateCenterDrawableCallback
The original update center drawable callback.
GenericCallback< DrawableListItemsInterface , int16_t, int16_t > originalUpdateDrawableCallback
The original update drawable callback.

Additional inherited members

Public Functions inherited from ScrollWheelBase

intgetSelectedItem() const
Gets selected item.
virtual int16_tgetSelectedItemOffset() const
Gets offset of selected item measured in pixels relative to the start of the widget.
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 int32_tkeepOffsetInsideLimits(int32_t newOffset, int16_t overShoot) const
Keep offset inside limits.
ScrollWheelBase()
voidsetAnimateToCallback(GenericCallback< int16_t > & callback)
Sets Callback which will be called when the ScrollWheel animates to a new item.

Protected Functions inherited from ScrollWheelBase

virtual voidanimateToPosition(int32_t position, int16_t steps =-1)
Animate to a new position/offset using the given number of steps.
virtual int32_tgetPositionForItem(int16_t itemIndex)
Get the position for an item.

Protected Attributes inherited from ScrollWheelBase

GenericCallback< int16_t > *animateToCallback
The animate to callback.

Protected Types inherited from ScrollBase

enumAnimationState { NO_ANIMATION, ANIMATING_GESTURE, ANIMATING_DRAG }
Values that represent animation states.

Public Functions inherited from ScrollBase

voidallowHorizontalDrag(bool enable)
Enables horizontal scrolling to be passed to the children in the list (in case a child widget is able to handle drag events).
voidallowVerticalDrag(bool enable)
Enables the vertical scroll.
virtual voidanimateToItem(int16_t itemIndex, int16_t animationSteps =-1)
Go to a specific item, possibly with animation.
uint16_tgetAnimationSteps() const
Gets animation steps as set in setAnimationSteps.
virtual boolgetCircular() const
Gets the circular setting, previously set using setCircular().
uint16_tgetDragAcceleration() const
Gets drag acceleration (times 10).
virtual int16_tgetDrawableMargin() const
Gets drawable margin as set through the second parameter in most recent call to setDrawableSize().
virtual int16_tgetDrawableSize() const
Gets drawable size as set through the first parameter in most recent call to setDrawableSize().
virtual boolgetHorizontal() const
Gets the orientation of the drawables, previously set using setHorizontal().
uint16_tgetMaxSwipeItems() const
Gets maximum swipe items as set by setMaxSwipeItems.
virtual int16_tgetNumberOfItems() const
Gets number of items in the DrawableList, as previously set using setNumberOfItems().
uint8_tgetOvershootPercentage() const
Gets overshoot percentage, as previously set using setOvershootPercentage.
uint16_tgetSwipeAcceleration() const
Gets swipe acceleration (times 10).
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.
boolisAnimating() const
Query if an animation is ongoing.
ScrollBase()
voidsetAnimationEndedCallback(GenericCallback<> & callback)
Callback, called when the set animation ended.
voidsetAnimationSteps(int16_t steps)
Sets animation steps (in ticks) when moving to a new selected item.
voidsetDragAcceleration(uint16_t acceleration)
Sets drag acceleration times 10, so "10" means "1", "15" means "1.5".
voidsetEasingEquation(EasingEquation equation)
Sets easing equation when changing the selected item, for example via swipe or AnimateTo.
voidsetItemPressedCallback(GenericCallback< int16_t > & callback)
Set Callback which will be called when a item is pressed.
voidsetItemSelectedCallback(GenericCallback< int16_t > & callback)
Sets Callback which will be called when the selected item is clicked.
voidsetMaxSwipeItems(uint16_t maxItems)
Sets maximum swipe items.
voidsetOvershootPercentage(uint8_t percentage)
Sets overshoot percentage when dragging a non-circular list.
voidsetSwipeAcceleration(uint16_t acceleration)
Sets swipe acceleration (times 10).
voidstopAnimation()
Stops an animation if one is ongoing.

Protected Functions inherited from ScrollBase

virtual voidanimateToPosition(int32_t position, int16_t steps =-1)
Animate to a new position/offset using the given number of steps.
virtual int32_tgetNearestAlignedOffset(int32_t offset) const
Gets nearest offset aligned to a multiple of itemSize.
intgetNormalizedOffset(int offset) const
Gets normalized offset from a given offset from 0 down to -numItems*itemSize.
virtual int32_tgetOffset() const
Gets display offset of first item.
virtual int32_tgetPositionForItem(int16_t itemIndex) =0
Get the position for an item.
virtual int32_tkeepOffsetInsideLimits(int32_t newOffset, int16_t overShoot) const =0
Keep offset inside limits.

Protected Attributes inherited from ScrollBase

GenericCallback *animationEndedCallback
The animation ended callback.
AnimationStatecurrentAnimationState
The current animation state.
uint16_tdefaultAnimationSteps
The animation steps.
int16_tdistanceBeforeAlignedItem
The distance before aligned item.
uint16_tdragAcceleration
The drag acceleration x10.
booldraggableX
Is the container draggable in the horizontal direction.
booldraggableY
Is the container draggable in the vertical direction.
EasingEquationeasingEquation
The easing equation used for animation.
intgestureEnd
The gesture end.
intgestureStart
The gesture start.
intgestureStep
The current gesture step.
intgestureStepsTotal
The total gesture steps.
int32_tinitialSwipeOffset
The initial swipe offset.
GenericCallback *itemLockedInCallback
The item locked in callback.
GenericCallback< int16_t > *itemPressedCallback
The item pressed callback.
GenericCallback< int16_t > *itemSelectedCallback
The item selected callback.
int16_titemSize
Size of the item (including margin)
DrawableListlist
The list.
uint16_tmaxSwipeItems
The maximum swipe items.
int16_tnumberOfDrawables
Number of drawables.
uint8_tovershootPercentage
The overshoot percentage when dragging.
uint16_tswipeAcceleration
The swipe acceleration x10.
int16_txClick
The x coordinate of a click.
int16_tyClick
The y coordinate of a click.

Public Functions inherited from Container

virtual voidadd(Drawable & d)
Adds a Drawable instance as child to this Container.
Container()
virtual boolcontains(const Drawable & d)
Query if a given Drawable has been added directly to this Container.
virtual voiddraw(const Rect & invalidatedArea) const
Draw this drawable.
virtual voidforEachChild(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 voidgetLastChild(int16_t x, int16_t y, Drawable ** last)
Gets the last child in the list of children in this Container.
virtual voidgetLastChildNear(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 RectgetSolidRect() const
Get (the largest possible) rectangle that is guaranteed to be solid (opaque).
virtual voidinsert(Drawable * previous, Drawable & d)
Inserts a Drawable after a specific child node.
virtual voidremove(Drawable & d)
Removes a Drawable from the container by removing it from the linked list of children.
virtual voidremoveAll()
Removes all children in the Container by resetting their parent and sibling pointers.
virtual voidunlink()
Removes all children by unlinking the first child.

Protected Functions inherited from Container

virtual RectgetContainedArea() const
Gets a rectangle describing the total area covered by the children of this container.
virtual voidmoveChildrenRelative(int16_t deltaX, int16_t deltaY)
Calls moveRelative on all children.

Protected Attributes inherited from Container

Drawable *firstChild
Pointer to the first child of this container. Subsequent children can be found through firstChild's nextSibling.

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.
virtual voiddraw(const Rect & invalidatedArea) const =0
Draw this drawable.
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 RectgetSolidRect() const =0
Get (the largest possible) rectangle that is guaranteed to be solid (opaque).
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 voidinvalidateContent() const
Tell the framework that the contents of the 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

getSelectedItemExtraSizeAfter

virtual int16_t getSelectedItemExtraSizeAfter()const

Gets selected item extra size after.

Returns:

The selected item extra size after.

See also:

getSelectedItemExtraSizeBefore

virtual int16_t getSelectedItemExtraSizeBefore()const

Gets selected item extra size before.

Returns:

The selected item extra size before.

See also:

getSelectedItemMarginAfter

virtual int16_t getSelectedItemMarginAfter()const

Gets selected item margin after.

Returns:

The selected item margin after.

See also:

getSelectedItemMarginBefore

virtual int16_t getSelectedItemMarginBefore()const

Gets selected item margin before.

Returns:

The selected item margin before.

See also:

initialize

virtual void initialize()

Removed all drawables and initializes the content of these items.

Reimplements: touchgfx::ScrollBase::initialize

itemChanged

virtual void itemChanged(intitemIndex)

Inform the scroll list that the contents of an item has changed and force all drawables with the given item index to be updated via the callback provided.

This is important as a circular list with very few items might display the same item more than once and all these items should be updated.

Parameters:
itemIndexZero-based index of the changed item.

Reimplements: touchgfx::ScrollBase::itemChanged

ScrollWheelWithSelectionStyle

setCircular

virtual void setCircular(boolcircular)

Sets whether the list is circular (infinite) or not.

A circular list is a list where the first drawable re-appears after the last item in the list - and the last item in the list appears before the first item in the list.

Parameters:
circularTrue if the list should be circular, false if the list should not be circular.
See also:

Reimplements: touchgfx::ScrollBase::setCircular

setDrawables

virtual void setDrawables(DrawableListItemsInterface &drawableListItems ,
GenericCallback< DrawableListItemsInterface *, int16_t, int16_t > &updateDrawableCallback ,
DrawableListItemsInterface &centerDrawableListItems ,
GenericCallback< DrawableListItemsInterface *, int16_t, int16_t > &updateCenterDrawableCallback
)

Setups the widget.

Numerous parameters control the position of the widget, the two scroll lists inside and the values in them.

Parameters:
drawableListItemsNumber of drawables in outer array.
updateDrawableCallbackThe callback to update a drawable.
centerDrawableListItemsNumber of drawables in center array.
updateCenterDrawableCallbackThe callback to update a center drawable.

setDrawableSize

virtual void setDrawableSize(int16_tdrawableSize ,
int16_tdrawableMargin
)

Sets drawables size.

The drawable is is the size of each drawable in the list in the set direction of the list (this is enforced by the DrawableList class). The specified margin is added above and below each item for spacing. The entire size of an item is thus size + 2 * spacing.

For a horizontal list each element will be drawableSize high and have the same width as set using setWidth(). For a vertical list each element will be drawableSize wide and have the same height as set using setHeight().

Parameters:
drawableSizeThe size of the drawable.
drawableMarginThe margin around drawables (margin before and margin after).
See also:

Reimplements: touchgfx::ScrollBase::setDrawableSize

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.Also sets the height of the children.

Reimplements: touchgfx::ScrollBase::setHeight

setHorizontal

virtual void setHorizontal(boolhorizontal)

Sets a horizontal or vertical layout.

If parameter horizontal is set true, all drawables are arranged side by side. If horizontal is set false, the drawables are arranged above and below each other (vertically).

Parameters:
horizontalTrue to align drawables horizontal, false to align drawables vertically.
Note

Default value is false, i.e. vertical layout.

See also:

Reimplements: touchgfx::ScrollBase::setHorizontal

setNumberOfItems

virtual void setNumberOfItems(int16_tnumberOfItems)

Sets number of items in the DrawableList.

This forces all drawables to be updated to ensure that the content is correct. For example a date selector might switch number of days between 28, 29, 30, and 31 depending on the month. A circular list might show 27-28-29-30-31 and might need to update this to show 27-28-1-2-3.

Parameters:
numberOfItemsNumber of items.
Note

The DrawableList is refreshed to reflect the change.

Reimplements: touchgfx::ScrollBase::setNumberOfItems

setSelectedItemExtraSize

virtual void setSelectedItemExtraSize(int16_textraSizeBefore ,
int16_textraSizeAfter
)

Sets selected item extra size to make the size of the area for the center drawables larger.

Parameters:
extraSizeBeforeThe extra size before.
extraSizeAfterThe extra size after.
See also:

setSelectedItemMargin

virtual void setSelectedItemMargin(int16_tmarginBefore ,
int16_tmarginAfter
)

Sets margin around selected item.

This like an invisible area added before and after the selected item (including extra size).

Parameters:
marginBeforeThe margin before.
marginAfterThe margin after.
See also:

setSelectedItemOffset

virtual void setSelectedItemOffset(int16_toffset)

Sets selected item offset, measured in pixels, from the edge of the widget.

The offset is the relative x coordinate if the ScrollWheel is horizontal, otherwise it is the relative y coordinate. If this value is zero, the selected item is placed at the very start of the widget.

Parameters:
offsetThe offset.
See also:

Reimplements: touchgfx::ScrollWheelBase::setSelectedItemOffset

setSelectedItemPosition

virtual void setSelectedItemPosition(int16_toffset ,
int16_textraSizeBefore ,
int16_textraSizeAfter ,
int16_tmarginBefore ,
int16_tmarginAfter
)

Sets the selected item offset.

This is the distance from the beginning of the ScrollWheel measured in pixels. The distance before and after that should also be drawn using the center drawables - for example to extend area of emphasized elements - can also be specified. Further, if a gap is needed between the "normal" drawables and the center drawables - for example to give the illusion that that items disappear under a graphical element, only to appear in the center.

This is a combination of setSelectedItemOffset, setSelectedItemExtraSize and setSelectedItemMargin.

Parameters:
offsetThe offset of the selected item.
extraSizeBeforeThe extra size before the selected item.
extraSizeAfterThe extra size after the selected item.
marginBeforeThe margin before the selected item.
marginAfterThe margin after the selected item.
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.Also sets the width of the children.

Reimplements: touchgfx::ScrollBase::setWidth

Protected Functions Documentation

refreshDrawableListsLayout

Refresh drawable lists layout.

Ensure that the three DrawableLists are places correctly and setup properly. This is typically done after the ScrollWheelWithSelectionStyle has been resized or the size of the selected item is changed.

setOffset

virtual void setOffset(int32_toffset)

Sets display offset of first item.

Parameters:
offsetThe offset.

Reimplements: touchgfx::ScrollBase::setOffset

Protected Attributes Documentation

centerDrawables

DrawableListItemsInterface * centerDrawables

The drawables at the center of the scroll wheel.

drawables

The drawables at the beginning and end of the scroll wheel.

drawablesInFirstList

int16_t drawablesInFirstList

List of drawables in firsts.

extraSizeAfterSelectedItem

int16_t extraSizeAfterSelectedItem

The distance after selected item.

extraSizeBeforeSelectedItem

int16_t extraSizeBeforeSelectedItem

The distance before selected item.

list1

The center list.

list2

The list for items not in the center.

marginAfterSelectedItem

int16_t marginAfterSelectedItem

The distance after selected item.

marginBeforeSelectedItem

int16_t marginBeforeSelectedItem

The distance before selected item.

originalUpdateCenterDrawableCallback

GenericCallback< DrawableListItemsInterface , int16_t, int16_t > originalUpdateCenterDrawableCallback

The original update center drawable callback.

originalUpdateDrawableCallback

GenericCallback< DrawableListItemsInterface , int16_t, int16_t > originalUpdateDrawableCallback

The original update drawable callback.