/************************************************************************************************************************************** * Project: discoverpixy * Website: https://github.com/t-moe/discoverpixy * Authors: Aaron Schmocker, Timo Lang * Institution: BFH Bern University of Applied Sciences * File: common/gui/checkbox.h * * Version History: * Date Autor Email SHA Changes * 2015-04-27 timolang@gmail.com b300ac5 Added Checkbox support * 2015-05-11 timolang@gmail.com 08d9fe0 More work on doxygen module structure * 2015-05-15 timolang@gmail.com 9a16865 Added doxgen comments to filesyste, checkbox, numupdown and screen module. And some minor changes to the other modules. * 2015-05-17 timolang@gmail.com 2d46336 Improved comments in implementation of button, checkbox, numupdown, tft, touch and screen modules/submodules. * **************************************************************************************************************************************/ #ifndef CHECKBOX_H #define CHECKBOX_H #include "touch.h" /** * @addtogroup gui */ /*@{*/ /** * @defgroup checkbox Checkbox * The Checkbox Gui-Element is a clickable, rectangular box with an optional tickmark inside of it. * When the checkbox is pressed and released it's tick state changes and you will be notified via the provided callback. */ /*@}*/ /** * @addtogroup checkbox */ /*@{*/ /** * Prototype for Event Listeners (called when the checkbox state has changed) * \note You should NOT execute long running things in this callback nor should you update the gui. But you can call gui_screen_navigate() for instance. * @param checkbox The pointer to the CHECKBOX_STRUCT where to corresponding Checkbox has changed the state * @param checked A boolean which indicates whether the checkbox is now checked or not. */ typedef void (*CHECKBOX_CALLBACK)(void* checkbox, bool checked); /** * Structure to configure the Checkbox */ typedef struct { TOUCH_AREA_STRUCT base; //!< Basic geometry of the Checkbox. You only need to set the x1, y1, x2, y2 members of this struct. uint16_t fgcolor; //!< The 16-bit color of the tickmark bool checked; //!< A boolean which indicates whether or not the checkbox is currently checked. CHECKBOX_CALLBACK callback; //!< Callback which is executed when the checkbox changes state } CHECKBOX_STRUCT; /** * Adds a checkbox. Your Callback will be called from now on, if the checkbox changes state * @param checkbox A Pointer to the preinitialized CHECKBOX_STRUCT * @return true on success */ bool gui_checkbox_add(CHECKBOX_STRUCT* checkbox); /** * Removes the checkbox. You will no longer receive events for this checkbox. This function will not overdraw the region where the checkbox was located. * @param checkbox A Pointer to the CHECKBOX_STRUCT */ void gui_checkbox_remove(CHECKBOX_STRUCT* checkbox); /** * Updates the checkbox. Call this function when you change the state of the checkbox through code. * @param checkbox A Pointer to the CHECKBOX_STRUCT */ void gui_checkbox_update(CHECKBOX_STRUCT* checkbox); /** * Redraws the checkbox. Call this method if you have to redraw the entire screen or if you want to draw a checkbox on top of an image. * @param checkbox A Pointer to the CHECKBOX_STRUCT */ void gui_checkbox_redraw(CHECKBOX_STRUCT* checkbox); #define CHECKBOX_WIN_FG_COLOR RGB(32,161,34) /*@}*/ #endif /* CHECKBOX_H */