  | 
  
    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