MPLABĀ® Harmony Graphics Suite
legato_widget_checkbox.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) 2020 Microchip Technology Inc. and its subsidiaries.
3 *
4 * Subject to your compliance with these terms, you may use Microchip software
5 * and any derivatives exclusively with Microchip products. It is your
6 * responsibility to comply with third party license terms applicable to your
7 * use of third party software (including open source software) that may
8 * accompany Microchip software.
9 *
10 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
11 * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
12 * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
13 * PARTICULAR PURPOSE.
14 *
15 * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
16 * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
17 * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
18 * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
19 * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
20 * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
21 * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
22 *******************************************************************************/
23 
24 /*******************************************************************************
25  Module for Microchip Graphics Library - Legato User Interface Library
26 
27  Company:
28  Microchip Technology Inc.
29 
30  File Name:
31  legato_widget_button.h
32 
33  Summary:
34 
35 
36  Description:
37  This module implements button widget functions.
38 *******************************************************************************/
39 
46 #ifndef LEGATO_CHECKBOX_H
47 #define LEGATO_CHECKBOX_H
48 
50 
51 #if LE_CHECKBOX_WIDGET_ENABLED == 1
52 
56 
57 typedef struct leCheckBoxWidget leCheckBoxWidget;
58 
59 // *****************************************************************************
60 /* Function Pointer:
61  leCheckBoxWidget_CheckedEvent
62 
63  Summary:
64  Checkbox checked event function callback type
65 */
71 typedef void (*leCheckBoxWidget_CheckedEvent)(leCheckBoxWidget*);
72 
73 // *****************************************************************************
74 /* Function Pointer:
75  leCheckBoxWidget_UncheckedEvent
76 
77  Summary:
78  Checkbox unchecked event function callback type
79 */
85 typedef void (*leCheckBoxWidget_UncheckedEvent)(leCheckBoxWidget*);
86 
87 // *****************************************************************************
88 // *****************************************************************************
89 // Section: Data Types and Constants
90 // *****************************************************************************
91 // *****************************************************************************
92 
93 /* internal use only */
98 typedef struct leCheckBoxWidget leCheckBoxWidget;
99 
100 #define LE_CHECKBOXWIDGET_VTABLE(THIS_TYPE) \
101  LE_WIDGET_VTABLE(THIS_TYPE) \
102  \
103  leBool (*getChecked)(const THIS_TYPE* _this); \
104  leResult (*setChecked)(THIS_TYPE* _this, leBool toggleable); \
105  leImage* (*getCheckedImage)(const THIS_TYPE* _this); \
106  leResult (*setCheckedImage)(THIS_TYPE* _this, leImage* img); \
107  leImage* (*getUncheckedImage)(const THIS_TYPE* _this); \
108  leResult (*setUncheckedImage)(THIS_TYPE* _this, leImage* img); \
109  leRelativePosition (*getImagePosition)(const THIS_TYPE* _this); \
110  leResult (*setImagePosition)(THIS_TYPE* _this, leRelativePosition pos); \
111  uint32_t (*getImageMargin)(const THIS_TYPE* _this); \
112  leResult (*setImageMargin)(THIS_TYPE* _this, uint32_t mg); \
113  leString* (*getString)(const THIS_TYPE* _this); \
114  leResult (*setString)(THIS_TYPE* _this, const leString* str); \
115  leCheckBoxWidget_CheckedEvent (*getCheckedEventCallback)(const THIS_TYPE* _this); \
116  leResult (*setCheckedEventCallback)(THIS_TYPE* _this, leCheckBoxWidget_CheckedEvent cb); \
117  leCheckBoxWidget_UncheckedEvent (*getUncheckedEventCallback)(const THIS_TYPE* _this); \
118  leResult (*setUncheckedEventCallback)(THIS_TYPE* _this, leCheckBoxWidget_UncheckedEvent cb); \
119 
120 
121 typedef struct leCheckBoxWidgetVTable
122 {
123  LE_CHECKBOXWIDGET_VTABLE(leCheckBoxWidget)
124 } leCheckBoxWidgetVTable;
125 
132 // *****************************************************************************
133 /* Structure:
134  leCheckBoxWidget
135 
136  Summary:
137  Implementation of a checkbox widget.
138 
139  Description:
140  A check box widget contains an interactive two-state box indicating on or
141  off. The check box may also contain descriptive text. Custom images for
142  the check box may be used in place of the default box graphic.
143 
144  Remarks:
145  None.
146 */
147 typedef struct leCheckBoxWidget
148 {
149  leWidget widget; // base class properties
150 
151  const leCheckBoxWidgetVTable* fn;
152 
153  leBool checked; // the state of the box
154 
155  const leString* string; // the text of the box
156 
157  const leImage* checkedImage; // pointer to a custom image to use for the
158  // checked image
159  const leImage* uncheckedImage; // pointer to a custom image to use for the
160  // unchecked image
161 
162  leRelativePosition imagePosition; // postition of the image relative to the text
163  // of the box
164  uint32_t imageMargin; // the distance between the image and the text
165 
166  leCheckBoxWidget_CheckedEvent checkedEvent; // callback for checked events
167  leCheckBoxWidget_CheckedEvent uncheckedEvent; // callback for unchecked events
168 } leCheckBoxWidget;
169 
170 // *****************************************************************************
171 // *****************************************************************************
172 // Section: Routines
173 // *****************************************************************************
174 // *****************************************************************************
175 
187 LIB_EXPORT leCheckBoxWidget* leCheckBoxWidget_New();
188 
199 LIB_EXPORT void leCheckBoxWidget_Constructor(leCheckBoxWidget* _this);
200 
201 #ifdef _DOXYGEN_
202 #define THIS_TYPE struct leWidget
203 
204 // *****************************************************************************
215 virtual leBool getChecked(const leCheckBoxWidget* _this);
216 
217 
218 // *****************************************************************************
232 virtual leResult setChecked(leCheckBoxWidget* _this,
233  leBool toggleable);
234 
235 
236 // *****************************************************************************
247 virtual leImage* getCheckedImage(const leCheckBoxWidget* _this);
248 
249 // *****************************************************************************
263 virtual leResult setCheckedImage(leCheckBoxWidget* _this,
264  leImage* img);
265 
266 
267 // *****************************************************************************
278 virtual leImage* getUncheckedImage(const leCheckBoxWidget* _this);
279 
280 
281 // *****************************************************************************
295 virtual leResult setUncheckedImage(leCheckBoxWidget* _this,
296  leImage* img);
297 
298 
299 // *****************************************************************************
311 virtual leRelativePosition getImagePosition(const leCheckBoxWidget* _this);
312 
313 
314 // *****************************************************************************
329 virtual setImagePosition(leCheckBoxWidget* _this,
330  leRelativePosition pos);
331 
332 
333 // *****************************************************************************
344 virtual uint32_t getImageMargin(const leCheckBoxWidget* _this);
345 
346 
347 // *****************************************************************************
361 virtual leResult setImageMargin(leCheckBoxWidget* _this,
362  uint32_t mg));
363 
364 
375 virtual leString* getString(const leCheckBoxWidget* _this);
376 
377 
378 // *****************************************************************************
392 virtual setString(leCheckBoxWidget* _this,
393  const leString* str);
394 
395 
407 virtual leCheckBoxWidget_CheckedEvent getCheckedEventCallback(const leCheckBoxWidget* _this);
408 
409 
423 virtual leResult setCheckedEventCallback(leCheckBoxWidget* _this,
424  leCheckBoxWidget_CheckedEvent cb);
425 
426 
438 virtual leCheckBoxWidget_UncheckedEvent getUncheckedEventCallback
439  (const leCheckBoxWidget* _this);
440 
454 virtual leResult setUncheckedEventCallback(leCheckBoxWidget* _this,
455  leCheckBoxWidget_UncheckedEvent cb);
456 
457 #undef THIS_TYPE
458 #endif
459 
460 
461 #endif // LE_CHECKBOX_WIDGET_ENABLED
462 #endif /* LEGATO_BUTTON_H */
_leWidget_SetAlphaAmount
leResult _leWidget_SetAlphaAmount(leWidget *_this, uint32_t alpha)
Set alpha amount.
Definition: legato_widget.c:570
legato_widget_button.h
Button widget functions and definitions.
legato_error.h
Error functions, macros and definitions.
_leWidget_GetType
leWidgetType _leWidget_GetType(const leWidget *_this)
Get widget type.
Definition: legato_widget.c:176
_leWidget_GetScheme
leScheme * _leWidget_GetScheme(const leWidget *_this)
Get widget scheme.
Definition: legato_widget.c:938
leResult
leResult
This enum represents function call results.
Definition: legato_common.h:134
_leWidget_RectToScreenSpace
leRect _leWidget_RectToScreenSpace(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:701
leRect
This struct represents a rectangle.
Definition: legato_common.h:405
_leWidget_IsOpaque
leBool _leWidget_IsOpaque(const leWidget *_this)
Determine is widget is opaque.
Definition: legato_widget.c:594
_leWidget_SetBorderType
leResult _leWidget_SetBorderType(leWidget *_this, leBorderType type)
Set widget scheme.
Definition: legato_widget.c:967
_leWidget_RemoveAllChildren
void _leWidget_RemoveAllChildren(leWidget *_this)
Remove all children from widget.
Definition: legato_widget.c:823
_leWidget_SetParent
leResult _leWidget_SetParent(leWidget *_this, leWidget *parent)
Set parent widget.
Definition: legato_widget.c:862
leWidgetEvent_TouchUp
Used to define widget touch up event.
Definition: legato_widget.h:403
legato_image.h
Image functions and defintions.
_leWidget_InvalidateContents
void _leWidget_InvalidateContents(const leWidget *_this)
Invalidate widget contents.
Definition: legato_widget.c:1210
_leWidget_SetCornerRadius
leResult _leWidget_SetCornerRadius(leWidget *_this, uint32_t radius)
Set widget scheme.
Definition: legato_widget.c:1091
_leWidget_InstallEventFilter
leResult _leWidget_InstallEventFilter(leWidget *_this, leWidgetEventFilter fltr)
Install event filter.
Definition: legato_widget.c:1215
_leWidget_SetX
leResult _leWidget_SetX(leWidget *_this, int32_t x)
Set widget x position.
Definition: legato_widget.c:190
_leWidget_SetSize
leResult _leWidget_SetSize(leWidget *_this, uint32_t width, uint32_t height)
Set widget height.
Definition: legato_widget.c:381
_leWidget_HasFocus
leBool _leWidget_HasFocus(const leWidget *_this)
Determines the focus status.
Definition: legato_widget.c:1110
legato_memory.h
Memory functions and definitions.
_leWidget_Resize
leResult _leWidget_Resize(leWidget *_this, int32_t width, int32_t height)
Resize widget.
Definition: legato_widget.c:426
_leWidget_SetAlphaEnabled
leResult _leWidget_SetAlphaEnabled(leWidget *_this, leBool enable)
Set cumulative alpha enable status.
Definition: legato_widget.c:501
leWidgetEvent_TouchDown
Used to define widget touch down event.
Definition: legato_widget.h:377
_leWidget_ContainsDescendant
leBool _leWidget_ContainsDescendant(const leWidget *_this, const leWidget *wgt)
Determine widget exists.
Definition: legato_widget.c:910
_leWidget_SetBackgroundType
leResult _leWidget_SetBackgroundType(leWidget *_this, leBackgroundType type)
Set widget scheme.
Definition: legato_widget.c:989
_leWidget_GetWidth
uint32_t _leWidget_GetWidth(const leWidget *_this)
Get widget width.
Definition: legato_widget.c:317
leImage
Definition: legato_image.h:180
LE_VALIGN_MIDDLE
@ LE_VALIGN_MIDDLE
Definition: legato_common.h:183
_leWidget_GetCumulativeAlphaEnabled
leBool _leWidget_GetCumulativeAlphaEnabled(const leWidget *_this)
Get cumulative alpha enable status.
Definition: legato_widget.c:484
_leWidget_RectToParentSpace
leRect _leWidget_RectToParentSpace(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:684
_leWidget_Translate
leResult _leWidget_Translate(leWidget *_this, int32_t x, int32_t y)
Translate widget x and y position.
Definition: legato_widget.c:282
legato_renderer.h
_leWidget_SetHeight
leResult _leWidget_SetHeight(leWidget *_this, uint32_t height)
Set widget height.
Definition: legato_widget.c:356
_leWidget_SetWidth
leResult _leWidget_SetWidth(leWidget *_this, uint32_t width)
Set the widget width.
Definition: legato_widget.c:324
LE_WIDGET_BACKGROUND_FILL
@ LE_WIDGET_BACKGROUND_FILL
Definition: legato_widget.h:226
_leWidget_SetVisible
leResult _leWidget_SetVisible(leWidget *_this, leBool visible)
Set widget visible status.
Definition: legato_widget.c:649
_leWidget_GetRootWidget
leWidget * _leWidget_GetRootWidget(const leWidget *_this)
Get root widget.
Definition: legato_widget.c:843
_leWidget_Update
void _leWidget_Update(leWidget *_this, uint32_t dt)
Update widget.
Definition: legato_widget.c:1491
legato_widget.h
Legato widget definitions.
_leWidget_GetHAlignment
leHAlignment _leWidget_GetHAlignment(const leWidget *_this)
Get widget horizontal alignment.
Definition: legato_widget.c:1003
_leWidget_GetHeight
uint32_t _leWidget_GetHeight(const leWidget *_this)
Get widget height.
Definition: legato_widget.c:349
leString
This struct represents a string.
Definition: legato_string.h:108
_leWidget_LocalRect
leRect _leWidget_LocalRect(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:670
legato_widget_checkbox.h
Checkbox widget functions and definitions.
leBool
leBool
This enum represents booleans.
Definition: legato_common.h:157
_leWidget_GetBackgroundType
leBackgroundType _leWidget_GetBackgroundType(const leWidget *_this)
Get widget background type.
Definition: legato_widget.c:982
_leWidget_SetScheme
leResult _leWidget_SetScheme(leWidget *_this, const leScheme *scheme)
Set widget scheme.
Definition: legato_widget.c:945
_leWidget_SetHAlignment
leResult _leWidget_SetHAlignment(leWidget *_this, leHAlignment align)
Set widget scheme.
Definition: legato_widget.c:1010
_leWidget_GetEnabled
leBool _leWidget_GetEnabled(const leWidget *_this)
Get widget enabled flag.
Definition: legato_widget.c:615
leRectClipAdj
LIB_EXPORT leRect leRectClipAdj(const leRect *l_rect, const leRect *r_rect, leRect *adj)
Clips a rectangle to the space of another rectangle.
Definition: legato_rect.c:75
_leWidget_SetFocus
leResult _leWidget_SetFocus(leWidget *_this)
Set widget scheme.
Definition: legato_widget.c:1117
LE_FALSE
@ LE_FALSE
Definition: legato_common.h:158
_leWidget_GetAlphaEnabled
leBool _leWidget_GetAlphaEnabled(const leWidget *_this)
Get alpha enable status.
Definition: legato_widget.c:473
leRectContainsPoint
LIB_EXPORT leBool leRectContainsPoint(const leRect *rect, const lePoint *point)
Determines if a point is inside a rectangle.
Definition: legato_rect.c:31
_leWidget_GetChildAtIndex
leWidget * _leWidget_GetChildAtIndex(const leWidget *_this, uint32_t idx)
Get child at index.
Definition: legato_widget.c:888
leWidgetEvent
Used to define widget event.
Definition: legato_widget.h:352
_leWidget_GetCumulativeAlphaAmount
uint32_t _leWidget_GetCumulativeAlphaAmount(const leWidget *_this)
Get cumulative alpha amount.
Definition: legato_widget.c:538
_leWidget_SetY
leResult _leWidget_SetY(leWidget *_this, int32_t y)
Set widget y position.
Definition: legato_widget.c:222
_leWidget_GetBorderType
leBorderType _leWidget_GetBorderType(const leWidget *_this)
Get widget bordertype.
Definition: legato_widget.c:960
_leWidget_SetMargins
leResult _leWidget_SetMargins(leWidget *_this, uint32_t l, uint32_t t, uint32_t r, uint32_t b)
Set widget margins.
Definition: legato_widget.c:1058
legato_utils.h
General internal utilities for the library.
_leWidget_GetVAlignment
leVAlignment _leWidget_GetVAlignment(const leWidget *_this)
Get widget vertical alignment.
Definition: legato_widget.c:1027
leImage_Draw
LIB_EXPORT leResult leImage_Draw(const leImage *img, const leRect *sourceRect, int32_t x, int32_t y, uint32_t a)
Draw an Image.
Definition: legato_image.c:131
legato_string.h
Fixed string functions and definitions.
LE_HALIGN_LEFT
@ LE_HALIGN_LEFT
Definition: legato_common.h:207
LE_WIDGET_BACKGROUND_NONE
@ LE_WIDGET_BACKGROUND_NONE
Definition: legato_widget.h:225
leWidget
Used to define a widget.
Definition: legato_widget.h:623
leUtils_RectToScreenSpace
void leUtils_RectToScreenSpace(const leWidget *widget, leRect *rect)
Convert rectangle from widget local space to screen space.
Definition: legato_utils.c:151
legato.h
The header file joins all header files used in the graphics object library.
_leWidget_GetX
int32_t _leWidget_GetX(const leWidget *_this)
Get widget x position.
Definition: legato_widget.c:183
leRectClip
LIB_EXPORT void leRectClip(const leRect *l_rect, const leRect *r_rect, leRect *result)
Clips a rectangle to the space of another rectangle.
Definition: legato_rect.c:122
_leWidget_SetVAlignment
leResult _leWidget_SetVAlignment(leWidget *_this, leVAlignment align)
Set widget vertical alignment.
Definition: legato_widget.c:1034
_leWidget_GetVisible
leBool _leWidget_GetVisible(const leWidget *_this)
Get widget visible status.
Definition: legato_widget.c:642
leWidgetEvent_TouchMove
Used to define widget touch move event.
Definition: legato_widget.h:429
_leWidget_AddChild
leResult _leWidget_AddChild(leWidget *_this, leWidget *child)
Add child to widget.
Definition: legato_widget.c:734
_leWidget_GetIndexOfChild
uint32_t _leWidget_GetIndexOfChild(const leWidget *_this, const leWidget *child)
Get index of child.
Definition: legato_widget.c:899
_leWidget_GetChildCount
uint32_t _leWidget_GetChildCount(const leWidget *_this)
Get child count.
Definition: legato_widget.c:881
LE_RELATIVE_POSITION_LEFTOF
@ LE_RELATIVE_POSITION_LEFTOF
Definition: legato_common.h:314
_leWidget_GetMargins
leMargin _leWidget_GetMargins(const leWidget *_this)
Get widget margins.
Definition: legato_widget.c:1051
leWidget_Constructor
LIB_EXPORT void leWidget_Constructor(leWidget *wgt)
Initialize widget.
Definition: legato_widget.c:67
leScheme_GetRenderColor
leColor leScheme_GetRenderColor(const leScheme *schm, leSchemeColor clr)
Gets a scheme render color for the current layer color mode.
Definition: legato_scheme.c:68
leRelativePosition
leRelativePosition
This enum represents the relative position modes for objects.
Definition: legato_common.h:313
LE_TRUE
@ LE_TRUE
Definition: legato_common.h:159
_leWidget_GetAlphaAmount
uint32_t _leWidget_GetAlphaAmount(const leWidget *_this)
Get alpha amount.
Definition: legato_widget.c:527
_leWidget_GetCornerRadius
uint32_t _leWidget_GetCornerRadius(const leWidget *_this)
Get widget corner radius.
Definition: legato_widget.c:1084
legato_common.h
Common macros and definitions used by Legato.
_leWidget_RemoveEventFilter
leResult _leWidget_RemoveEventFilter(leWidget *_this, leWidgetEventFilter fltr)
Remove event filter.
Definition: legato_widget.c:1238
leString::fn
const leStringVTable * fn
Definition: legato_string.h:109
legato_state.h
leUtils_ArrangeRectangle
void leUtils_ArrangeRectangle(leRect *sub, leRect obj, leRect bounds, leHAlignment hAlignment, leVAlignment vAlignment, leRelativePosition position, uint8_t leftMargin, uint8_t topMargin, uint8_t rightMargin, uint8_t bottomMargin, uint16_t rectMargin)
Calculates the position of a rectangle within the given bound.
Definition: legato_utils.c:213
_leWidget_RemoveChild
leResult _leWidget_RemoveChild(leWidget *_this, leWidget *child)
Remove child from widget.
Definition: legato_widget.c:785
_leWidget_SetEnabled
leResult _leWidget_SetEnabled(leWidget *_this, leBool enable)
Set widget enabled flag.
Definition: legato_widget.c:620
_leWidget_SetPosition
leResult _leWidget_SetPosition(leWidget *_this, int32_t x, int32_t y)
Set widget x and y position.
Definition: legato_widget.c:247
leUtils_ArrangeRectangleRelative
void leUtils_ArrangeRectangleRelative(leRect *sub, leRect obj, leRect bounds, leHAlignment hAlignment, leVAlignment vAlignment, leRelativePosition position, uint8_t leftMargin, uint8_t topMargin, uint8_t rightMargin, uint8_t bottomMargin, uint16_t rectMargin)
Calculates the position of a rectangle within the given bounds.
Definition: legato_utils.c:286
_leWidget_Invalidate
void _leWidget_Invalidate(const leWidget *_this)
Invalidate widget.
Definition: legato_widget.c:1142
lePoint
This structure represents a integer Cartesian point.
Definition: legato_common.h:357
_leWidget_GetY
int32_t _leWidget_GetY(const leWidget *_this)
Get widget y position.
Definition: legato_widget.c:215