166 lines
4.5 KiB
C
166 lines
4.5 KiB
C
/*
|
|
* This file is subject to the terms of the GFX License. If a copy of
|
|
* the license was not distributed with this file, you can obtain one at:
|
|
*
|
|
* http://chibios-gfx.com/license.html
|
|
*/
|
|
|
|
/**
|
|
* @file include/gwin/checkbox.h
|
|
* @brief GWIN Graphic window subsystem header file.
|
|
*
|
|
* @defgroup Checkbox Checkbox
|
|
* @ingroup GWIN
|
|
*
|
|
* @details GWIN allows it to easily create checkboxes.
|
|
*
|
|
* @pre GFX_USE_GWIN must be set to TRUE in your gfxconf.h
|
|
* @pre GWIN_NEED_CHECKBOX must be set to TRUE in your gfxconf.h
|
|
* @{
|
|
*/
|
|
|
|
#ifndef _GWIN_CHECKBOX_H
|
|
#define _GWIN_CHECKBOX_H
|
|
|
|
#if GWIN_NEED_CHECKBOX || defined(__DOXYGEN__)
|
|
|
|
/*===========================================================================*/
|
|
/* Driver constants. */
|
|
/*===========================================================================*/
|
|
|
|
#define GW_CHECKBOX 0x0005
|
|
#define GEVENT_GWIN_CHECKBOX (GEVENT_GWIN_FIRST+2)
|
|
|
|
/*===========================================================================*/
|
|
/* Type definitions */
|
|
/*===========================================================================*/
|
|
|
|
typedef struct GEventGWinCheckbox_t {
|
|
GEventType type; // The type of this event (GEVENT_GWIN_CHECKBOX)
|
|
GHandle checkbox; // The checkbox that has been depressed (actually triggered on release)
|
|
bool_t isChecked; // Is the checkbox currently checked or unchecked?
|
|
} GEventGWinCheckbox;
|
|
|
|
typedef enum GCheckboxState_e {
|
|
GCHBX_UNCHECKED, GCHBX_CHECKED
|
|
} GCheckboxState;
|
|
|
|
typedef struct GCheckboxColor_t {
|
|
color_t border;
|
|
color_t checked;
|
|
color_t bg;
|
|
} GCheckboxColor;
|
|
|
|
/* custom rendering interface */
|
|
typedef void (*GCheckboxDrawFunction)(GHandle gh, bool_t enabled, bool_t state, void* param);
|
|
|
|
/* A Checkbox window */
|
|
typedef struct GCheckboxObject_t {
|
|
GWindowObject gwin;
|
|
GListener listener;
|
|
|
|
GCheckboxDrawFunction fn;
|
|
GCheckboxColor *colors;
|
|
bool_t isChecked;
|
|
void *param;
|
|
} GCheckboxObject;
|
|
|
|
/**
|
|
* @brief Create a checkbox window.
|
|
*
|
|
* @param[in] gb The GCheckboxObject structure to initialise. If this is NULL, the structure is dynamically allocated.
|
|
* @param[in] x,y The screen co-ordinates for the bottom left corner of the window
|
|
* @param[in] width The width of the window
|
|
* @param[in] height The height of the window
|
|
*
|
|
* @note The checkbox is not automatically drawn. Call gwinCheckboxDraw() after changing the checkbox style.
|
|
*
|
|
* @return NULL if there is no resultant drawing area, otherwise a window handle.
|
|
*
|
|
* @api
|
|
*/
|
|
GHandle gwinCheckboxCreate(GCheckboxObject *gb, coord_t x, coord_t y, coord_t width, coord_t height);
|
|
|
|
/**
|
|
* @brief Redraw a checkbox
|
|
*
|
|
* @param[in] gh The window handle (must be a checkbox window)
|
|
*
|
|
* @api
|
|
*/
|
|
void gwinCheckboxDraw(GHandle gh);
|
|
|
|
/**
|
|
* @brief Enable or disable a button
|
|
*
|
|
* @param[in] gh The window handle (must be a checkbox window)
|
|
* @param[in] enabled Enable or disable the button
|
|
*
|
|
* @api
|
|
*/
|
|
void gwinCheckboxSetEnabled(GHandle gh, bool_t enabled);
|
|
|
|
/**
|
|
* @brief Set the callback routine to perform a custom drawing.
|
|
*
|
|
* @param[in] gh The window handle (must be a checkbox window)
|
|
* @param[in] fn The function to use to draw the checkbox
|
|
* @param[in] param A parameter to pass to the checkbox drawing function
|
|
*
|
|
* @api
|
|
*/
|
|
void gwinCheckboxSetCustom(GHandle gh, GCheckboxDrawFunction fn, void *param);
|
|
|
|
/**
|
|
* @brief Enable a checkbox
|
|
*
|
|
* @api
|
|
*/
|
|
#define gwinCheckboxEnable(gh) gwinCheckboxSetEnabled( ((GCheckboxObject *)(gh)), TRUE)
|
|
|
|
/**
|
|
* @brief Disable a checkbox
|
|
*
|
|
* @api
|
|
*/
|
|
#define gwinCheckboxDisable(gh) gwinCheckboxSetEnabled( ((GCheckboxObject *)(gh)), FALSE)
|
|
|
|
/**
|
|
* @brief Get the state of a checkbox
|
|
*
|
|
* @param[in] gh The window handle (must be a checkbox window)
|
|
*
|
|
* @return The state of the checkbox (GCHBX_CHECKED or GCHBX_UNCHECKED)
|
|
*
|
|
* @api
|
|
*/
|
|
#define gwinCheckboxGetState(gh) (((GCheckboxObject *)(gh))->isChecked)
|
|
|
|
/**
|
|
* @brief Get the source handle of a checkbox
|
|
* @details Get the source handle of a checkbox so the application can listen for events
|
|
*
|
|
* @param[in] gh The window handle (must be a checkbox window)
|
|
*
|
|
* @api
|
|
*/
|
|
#define gwinCheckboxGetSource(gh) ((GSourceHandle)(gh))
|
|
|
|
#if GFX_USE_GINPUT && GINPUT_NEED_MOUSE
|
|
/**
|
|
* @brief Attach a mouse to a checkbox
|
|
*
|
|
* @param[in] gh The checkbox handle
|
|
* @param[in] instance The mouse instance
|
|
*
|
|
* @api
|
|
*/
|
|
bool_t gwinCheckboxAttachMouse(GHandle gh, uint16_t instance);
|
|
#endif /* GFX_USE_GINPUT && GINPUT_NEED_MOUSE */
|
|
|
|
#endif /* _GWIN_NEED_CHECKBOX */
|
|
|
|
#endif /* _GWIN_CHECKBOX_H */
|
|
/** @} */
|
|
|