 |
MPLABĀ® Harmony Graphics Suite
|
Go to the documentation of this file.
46 #ifndef LEGATO_RADIALMENU_H
47 #define LEGATO_RADIALMENU_H
51 #if LE_RADIALMENU_WIDGET_ENABLED == 1
58 typedef struct leRadialMenuWidget leRadialMenuWidget;
60 typedef void (*leRadialMenuWidget_ItemProminenceChangedEvent)(leRadialMenuWidget*,
leWidget*, int32_t);
71 typedef enum leRadialMenuWidgetState
74 LE_RADIAL_MENU_INPUT_READY,
75 LE_RADIAL_MENU_HANDLE_USER_MOVE_REQUEST,
76 LE_RADIAL_MENU_RESET_TO_INPUT_POS
77 } leRadialMenuWidgetState;
83 typedef enum leRadialMenuWidgetInterpolationMode
85 LE_RADIAL_MENU_INTERPOLATE_OFF,
86 LE_RADIAL_MENU_INTERPOLATE_GRADUAL,
87 LE_RADIAL_MENU_INTERPOLATE_PROMINENT
88 } leRadialMenuWidgetInterpolationMode;
90 typedef struct leRadialMenuWidget leRadialMenuWidget;
96 #define LE_RADIALMENUWIDGET_VTABLE(THIS_TYPE) \
97 LE_WIDGET_VTABLE(THIS_TYPE) \
99 leBool (*isProminent)(const THIS_TYPE* _this, const leWidget* widget); \
100 leWidget* (*getProminent)(const THIS_TYPE* _this); \
101 leResult (*setProminent)(THIS_TYPE* _this, const leWidget* widget); \
102 int32_t (*getProminentIndex)(const THIS_TYPE* _this); \
103 leResult (*setProminentIndex)(THIS_TYPE* _this, int32_t index); \
104 leResult (*setNumberOfItemsShown)(THIS_TYPE* _this, uint32_t cnt); \
105 leResult (*setHighlightProminent)(THIS_TYPE* _this, leBool hl); \
106 int32_t (*getMajorAxis)(const THIS_TYPE* _this); \
107 leResult (*setMajorAxis)(THIS_TYPE* _this, int32_t a); \
108 int32_t (*getMinorAxis)(const THIS_TYPE* _this); \
109 leResult (*setMinorAxis)(THIS_TYPE* _this, int32_t b); \
110 int32_t (*getTheta)(const THIS_TYPE* _this); \
111 leResult (*setTheta)(THIS_TYPE* _this, int32_t tht); \
112 leResult (*setScaleMode)(THIS_TYPE* _this, leRadialMenuWidgetInterpolationMode mode); \
113 leResult (*setScaleRange)(THIS_TYPE* _this, int32_t min, int32_t max); \
114 leResult (*setBlendMode)(THIS_TYPE* _this, leRadialMenuWidgetInterpolationMode mode); \
115 leResult (*setBlendRange)(THIS_TYPE* _this, int32_t min, int32_t max); \
116 leResult (*setTouchArea)(THIS_TYPE* _this, int32_t x, int32_t y, int32_t width, int32_t height); \
117 leResult (*setDrawEllipse)(THIS_TYPE* _this, leBool b); \
118 leRadialMenuWidget_ItemProminenceChangedEvent (*getItemProminenceChangedEventCallback)(const THIS_TYPE* _this); \
119 leResult (*setItemProminenceChangedEventCallback)(THIS_TYPE* _this, leRadialMenuWidget_ItemProminenceChangedEvent cb);
121 typedef struct leRadialMenuWidgetVTable
123 LE_RADIALMENUWIDGET_VTABLE(leRadialMenuWidget)
124 } leRadialMenuWidgetVTable;
131 enum leRadialMenuItemState
134 LE_RMI_WAITING_FOR_SORT,
143 typedef struct leRadialMenuItemNode
149 int32_t adjustedAngle;
154 uint32_t origAlphaAmount;
156 enum leRadialMenuItemState state;
158 } leRadialMenuItemNode;
169 typedef struct leRadialMenuWidget
173 const leRadialMenuWidgetVTable* fn;
175 leRadialMenuWidgetState state;
177 int32_t prominentIndex;
180 leBool highlightProminent;
195 int32_t firstVisibleItem;
200 int32_t rotationDegrees;
203 leRadialMenuWidgetInterpolationMode scaleMode;
205 int32_t maxSizePercent;
206 int32_t minSizePercent;
211 uint32_t touchHeight;
215 int32_t minFlickDelta;
220 int32_t momentumFalloff;
222 int32_t rotationCounter;
223 int32_t rotationTick;
227 int32_t snapMagnitude;
229 leRadialMenuWidgetInterpolationMode blendMode;
231 int32_t maxAlphaAmount;
232 int32_t minAlphaAmount;
238 leRadialMenuWidget_ItemProminenceChangedEvent itemProminenceChangedEvent;
239 } leRadialMenuWidget;
259 LIB_EXPORT leRadialMenuWidget* leRadialMenuWidget_New();
271 LIB_EXPORT
void leRadialMenuWidget_Constructor(leRadialMenuWidget* wgt);
274 #define THIS_TYPE struct leWidget
351 virtual leResult setProminent(leRadialMenuWidget* _this,
384 virtual int32_t getProminentIndex(
const leRadialMenuWidget* _this);
419 virtual leResult setProminentIndex(leRadialMenuWidget* _this,
477 virtual leResult setHighlightProminent(leRadialMenuWidget* _this,
509 virtual int32_t getTheta(
const leRadialMenuWidget* _this);
544 virtual leResult setTheta(leRadialMenuWidget* _this,
580 virtual leResult setEllipseType(leRadialMenuWidget* _this,
581 leRadialMenuEllipseType type);
616 virtual leResult addWidget(leRadialMenuWidget* _this,
652 virtual leResult removeWidget(leRadialMenuWidget* _this,
687 virtual leWidget* getWidgetAtIndex(
const leRadialMenuWidget* _this,
726 virtual leResult setWidgetAtIndex(leRadialMenuWidget* _this,
760 virtual leResult removeAllWidgets(leRadialMenuWidget* _this);
795 virtual leResult setScaleMode(leRadialMenuWidget* _this,
796 leRadialMenuWidgetInterpolationMode mode);
834 virtual leResult setScaleRange(leRadialMenuWidget* _this,
872 virtual leResult setBlendMode(leRadialMenuWidget* _this,
873 leRadialMenuWidgetInterpolationMode mode);
912 virtual leResult setBlendRange(leRadialMenuWidget* _this,
957 virtual leResult setTouchArea(leRadialMenuWidget* _this,
996 virtual leResult setDrawEllipse(leRadialMenuWidget* _this,
1009 virtual leRadialMenuWidget_ItemSelectedEvent getItemSelectedEventCallback(
const leRadialMenuWidget* _this)
1024 virtual leResult setItemSelectedEventCallback(leRadialMenuWidget* _this,
1025 leRadialMenuWidget_ItemSelectedEvent cb);
1037 virtual leRadialMenuWidget_ItemProminenceChangedEvent getItemProminenceChangedEventCallback
1038 (
const leRadialMenuWidget* _this)
1053 virtual leResult setItemProminenceChangedEventCallback(leRadialMenuWidget* _this,
1054 leRadialMenuWidget_ItemProminenceChangedEvent cb)
1059 #endif // LE_RADIALMENU_WIDGET_ENABLED
Defines common math functions for general use.
Error functions, macros and definitions.
leResult
This enum represents function call results.
Definition: legato_common.h:134
This struct represents a rectangle.
Definition: legato_common.h:405
@ LE_EVENT_TOUCH_DOWN
Definition: legato_event.h:68
LIB_EXPORT void lePercentOfDec(uint32_t num, uint32_t percent, uint32_t *whl, uint32_t *dec)
Calculate percent of a decimal.
Definition: legato_math.c:231
This struct represents a list.
Definition: legato_list.h:91
Memory functions and definitions.
int32_t leList_PushBack(leList *list, void *val)
Push value on back.
Definition: legato_list.c:141
@ LE_EVENT_TOUCH_UP
Definition: legato_event.h:69
LIB_EXPORT uint32_t lePercentOf(uint32_t num, uint32_t percent)
Calculate percent of a number.
Definition: legato_math.c:218
@ LE_VALIGN_MIDDLE
Definition: legato_common.h:183
void leList_Clear(leList *list)
Clear array.
Definition: legato_list.c:421
@ LE_HALIGN_CENTER
Definition: legato_common.h:208
void leList_Destroy(leList *list)
Remove array.
Definition: legato_list.c:446
leBool
This enum represents booleans.
Definition: legato_common.h:157
int32_t leList_Remove(leList *list, void *val)
Remove item.
Definition: legato_list.c:285
virtual uint32_t length(const leString *_this)
Get length of the string.
A linked list implementation.
@ LE_FALSE
Definition: legato_common.h:158
LIB_EXPORT leBool leRectContainsPoint(const leRect *rect, const lePoint *point)
Determines if a point is inside a rectangle.
Definition: legato_rect.c:31
@ LE_EVENT_TOUCH_MOVE
Definition: legato_event.h:70
int32_t leList_RemoveAt(leList *list, uint32_t idx)
Remove item at index.
Definition: legato_list.c:331
General internal utilities for the library.
int32_t leList_InsertAt(leList *list, void *val, uint32_t idx)
Insert value at index.
Definition: legato_list.c:222
Fixed string functions and definitions.
int32_t leList_Find(const leList *list, void *val)
Find index of a value.
Definition: legato_list.c:200
LIB_EXPORT int32_t leClampi(int32_t min, int32_t max, int32_t i)
Calculates clamp of an integer.
Definition: legato_math.c:171
void leUtils_RectToScreenSpace(const leWidget *widget, leRect *rect)
Convert rectangle from widget local space to screen space.
Definition: legato_utils.c:151
The header file joins all header files used in the graphics object library.
int32_t leList_Create(leList *list)
Create a new list.
Definition: legato_list.c:31
LIB_EXPORT uint32_t leAbsoluteValue(int32_t val)
Calculates the absolute value of a signed integer.
Definition: legato_math.c:280
void * leArray_Get(const leArray *arr, uint32_t idx)
Get entry at index.
Definition: legato_array.c:224
leColor leScheme_GetRenderColor(const leScheme *schm, leSchemeColor clr)
Gets a scheme render color for the current layer color mode.
Definition: legato_scheme.c:68
@ LE_TRUE
Definition: legato_common.h:159
Common macros and definitions used by Legato.
virtual void destructor(leString *_this)
Destruct string.
This structure represents a integer Cartesian point.
Definition: legato_common.h:357
void * leList_Get(const leList *list, uint32_t idx)
Get a value from the list.
Definition: legato_list.c:181