Doxygen (documenting each built-in rendering function for widgets)

ugfx_release_2.6
Joel Bodenmann 2015-11-03 20:39:16 +01:00
parent de149299ae
commit 86aef5990a
15 changed files with 555 additions and 208 deletions

View File

@ -86,43 +86,129 @@ GHandle gwinGButtonCreate(GDisplay *g, GButtonObject *gb, const GWidgetInit *pIn
bool_t gwinButtonIsPressed(GHandle gh);
/**
* @brief Some custom button drawing routines
* @details These function may be passed to @p gwinSetCustomDraw() to get different button drawing styles
* @defgroup Renderings_Button Button rendering functions
*
* @param[in] gw The widget object (in this case a button)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the button widget.
*
* @details These function may be passed to @p gwinSetCustomDraw() to get different button drawing styles.
*
* @note In your custom button drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The standard functions below ignore the param parameter except for @p gwinButtonDraw_Image().
* @note The image custom draw function @p gwinButtonDraw_Image() uses param to pass in the gdispImage pointer.
* The image must be already opened before calling @p gwinSetCustomDraw(). The image should be 3
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @{
*/
/**
* @brief The default rendering function for the button widget
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinButtonDraw_Normal(GWidgetObject *gw, void *param);
#if GDISP_NEED_ARC || defined(__DOXYGEN__)
/**
* @brief Renders a rectangular button with rounded corners
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_ARC must be set to TRUE
*
* @api
*/
void gwinButtonDraw_Rounded(GWidgetObject *gw, void *param);
#endif
#if GDISP_NEED_ELLIPSE || defined(__DOXYGEN__)
/**
* @brief Renders a button with an elliptical shape
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_ELLIPSE must be set to TRUE
*
* @api
*/
void gwinButtonDraw_Ellipse(GWidgetObject *gw, void *param);
#endif
#if GDISP_NEED_CONVEX_POLYGON || defined(__DOXYGEN__)
/**
* @brief Renders a button in a shape of an arrow pointing up.
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_CONVEX_POLYGON must be set to TRUE
*
* @api
*/
void gwinButtonDraw_ArrowUp(GWidgetObject *gw, void *param);
/**
* @brief Renders a button in a shape of an arrow pointing down.
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_CONVEX_POLYGON must be set to TRUE
*
* @api
*/
void gwinButtonDraw_ArrowDown(GWidgetObject *gw, void *param);
/**
* @brief Renders a button in a shape of an arrow pointing left.
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_CONVEX_POLYGON must be set to TRUE
*
* @api
*/
void gwinButtonDraw_ArrowLeft(GWidgetObject *gw, void *param);
/**
* @brief Renders a button in a shape of an arrow pointing right.
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @pre GDISP_NEED_CONVEX_POLYGON must be set to TRUE
*
* @api
*/
void gwinButtonDraw_ArrowRight(GWidgetObject *gw, void *param);
#endif
#if GDISP_NEED_IMAGE || defined(__DOXYGEN__)
/**
* @brief Renders a button using individual images for each button state.
*
* @param[in] gw The widget object (must be a button object)
* @param[in] param A parameter passed in from the user. Must be an image handle. See note below.
*
* @note The image must be already opened before calling @p gwinSetCustomDraw(). The image should be 3
* times the height of the button. The button image is repeated 3 times vertically, the first (top) for
* the "up" image, the 2nd for the "down" image, and the third (bottom) image for the disabled state. If
* the disabled state is never going to be used then the image can be just 2 times the button height.
* No checking is done to compare the size of the button to the size of the image.
* Note text is drawn on top of the image.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @pre GDISP_NEED_IMAGE must be set to TRUE
*
* @api
* @{
*/
void gwinButtonDraw_Normal(GWidgetObject *gw, void *param); // @< A standard button
#if GDISP_NEED_ARC || defined(__DOXYGEN__)
void gwinButtonDraw_Rounded(GWidgetObject *gw, void *param); // @< A rounded rectangle button
#endif
#if GDISP_NEED_ELLIPSE || defined(__DOXYGEN__)
void gwinButtonDraw_Ellipse(GWidgetObject *gw, void *param); // @< A circular button
#endif
#if GDISP_NEED_CONVEX_POLYGON || defined(__DOXYGEN__)
void gwinButtonDraw_ArrowUp(GWidgetObject *gw, void *param); // @< An up arrow button
void gwinButtonDraw_ArrowDown(GWidgetObject *gw, void *param); // @< A down arrow button
void gwinButtonDraw_ArrowLeft(GWidgetObject *gw, void *param); // @< A left arrow button
void gwinButtonDraw_ArrowRight(GWidgetObject *gw, void *param); // @< A right arrow button
#endif
#if GDISP_NEED_IMAGE || defined(__DOXYGEN__)
void gwinButtonDraw_Image(GWidgetObject *gw, void *param); // @< An image button - see the notes above on the param.
void gwinButtonDraw_Image(GWidgetObject *gw, void *param);
#endif
/** @} */

View File

@ -99,23 +99,50 @@ void gwinCheckboxCheck(GHandle gh, bool_t isChecked);
bool_t gwinCheckboxIsChecked(GHandle gh);
/**
* @brief Some custom checkbox drawing routines
* @details These function may be passed to @p gwinSetCustomDraw() to get different checkbox drawing styles
* @defgroup Renderings_Checkbox Checkbox rendering functions
*
* @param[in] gw The widget (which must be a checkbox)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the checkbox widget.
*
* @note In your custom checkbox drawing function you may optionally call this
* @details These function may be passed to @p gwinSetCustomDraw() to get different checkbox drawing styles.
*
* @note In your custom checkbox drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The standard functions below ignore the param parameter.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @api
* @{
*/
/**
* @brief Renders a square checkbox where the text is on the right side of the checkbox.
*
* @param[in] gw The widget (must be a checkbox)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinCheckboxDraw_CheckOnLeft(GWidgetObject *gw, void *param);
/**
* @brief Renders a square checkbox where the text is on the left side of the checkbox.
*
* @param[in] gw The widget (must be a checkbox)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinCheckboxDraw_CheckOnRight(GWidgetObject *gw, void *param);
/**
* @brief Renders a checkbox in form of a rectangular button with the text inside of it.
*
* @details This behaves like a button that can be toggled.
*
* @param[in] gw The widget (must be a checkbox)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinCheckboxDraw_Button(GWidgetObject *gw, void *param);
/** @} */

View File

@ -48,7 +48,7 @@ typedef GWidgetObject GContainerObject;
extern "C" {
#endif
/**
/**
* @brief Get the first child window
*
* @return The first child or NULL if are no children windows
@ -57,9 +57,9 @@ extern "C" {
*
* @api
*/
GHandle gwinGetFirstChild(GHandle gh);
GHandle gwinGetFirstChild(GHandle gh);
/**
/**
* @brief Get the next child window in the z-order
*
* @return The next window or NULL if no more children
@ -72,9 +72,9 @@ extern "C" {
*
* @api
*/
GHandle gwinGetSibling(GHandle gh);
GHandle gwinGetSibling(GHandle gh);
/**
/**
* @brief Get the inner width of a container window
*
* @return The inner width of a container window or zero if this is not a container
@ -83,9 +83,9 @@ extern "C" {
*
* @api
*/
coord_t gwinGetInnerWidth(GHandle gh);
coord_t gwinGetInnerWidth(GHandle gh);
/**
/**
* @brief Get the inner height of a container window
*
* @return The inner height of a container window or zero if this is not a container
@ -94,17 +94,17 @@ extern "C" {
*
* @api
*/
coord_t gwinGetInnerHeight(GHandle gh);
coord_t gwinGetInnerHeight(GHandle gh);
/**
/**
* @brief Flags for gwinContainerCreate()
* @{
*/
#define GWIN_CONTAINER_BORDER 0x00000001
/** @} */
#define GWIN_CONTAINER_BORDER 0x00000001
/** @} */
/**
/**
* @brief Create a simple container.
* @return NULL if there is no resultant drawing area, otherwise a window handle.
*
@ -115,35 +115,65 @@ extern "C" {
*
* @api
*/
GHandle gwinGContainerCreate(GDisplay *g, GContainerObject *gw, const GWidgetInit *pInit, uint32_t flags);
#define gwinContainerCreate(gc, pInit, flags) gwinGContainerCreate(GDISP, gc, pInit, flags)
GHandle gwinGContainerCreate(GDisplay *g, GContainerObject *gw, const GWidgetInit *pInit, uint32_t flags);
#define gwinContainerCreate(gc, pInit, flags) gwinGContainerCreate(GDISP, gc, pInit, flags)
/**
* @brief The custom draw routines for a simple container
* @details These function may be passed to @p gwinSetCustomDraw() to get different frame drawing styles
/**
* @defgroup Renderings_Container Container rendering functions
*
* @param[in] gw The widget object (in this case a frame)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the container widget.
*
* @note In your own custom drawing function you may optionally call these
* @details These function may be passed to @p gwinSetCustomDraw() to get different container drawing styles.
*
* @note In your custom container drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @note gwinContainerDraw_Std() will fill the client area with the background color.<br/>
* gwinContainerDraw_Transparent() will not fill the client area at all.<br/>
* gwinContainerDraw_Image() will tile the image throughout the client area.<br/>
* All these drawing functions draw the frame itself the same way.
*
* @note The standard functions below ignore the param parameter except for @p gwinContainerDraw_Image().
* @note The image custom draw function @p gwinContainerDraw_Image() uses param to pass in the gdispImage pointer.
* The image must be already opened before calling @p gwinSetCustomDraw().
*
* @api
* @{
*/
void gwinContainerDraw_Std(GWidgetObject *gw, void *param);
void gwinContainerDraw_Transparent(GWidgetObject *gw, void *param);
void gwinContainerDraw_Image(GWidgetObject *gw, void *param);
/** @} */
/**
* @brief The default rendering function for the container widget.
*
* @details Fills the client area with the background color.
*
* @param[in] gw The widget object (must be a container object).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinContainerDraw_Std(GWidgetObject *gw, void *param);
/**
* @brief Renders the container but leaves the client area transparent.
*
* @details Will not fill the client area at all.
*
* @param[in] gw The widget object (must be a container object).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinContainerDraw_Transparent(GWidgetObject *gw, void *param);
/**
* @brief Renders the container and uses the specified image for the client area.
*
* @details The image will be tiled throghout the client area. Therefore, to archive the best looking result the
* supplied image needs to be of the same size as the client area size of the container widget (inner size).
*
* @param[in] gw The widget object (must be a container object).
* @param[in] param A parameter passed in from the user. Must be an image handle. See note below.
*
* @note The image must be already opened before calling @p gwinSetCustomDraw(). The handle is passed as the parameter
* to this function.
*
* @api
*/
void gwinContainerDraw_Image(GWidgetObject *gw, void *param);
/** @} */
#ifdef __cplusplus
}

View File

@ -40,7 +40,7 @@ typedef GContainerObject GFrameObject;
extern "C" {
#endif
/**
/**
* @brief Create a frame widget
*
* @details This widget provides a window like we know it from desktop systems.
@ -58,35 +58,67 @@ extern "C" {
*
* @api
*/
GHandle gwinGFrameCreate(GDisplay *g, GFrameObject *fo, GWidgetInit *pInit, uint32_t flags);
#define gwinFrameCreate(fo, pInit, flags) gwinGFrameCreate(GDISP, fo, pInit, flags);
GHandle gwinGFrameCreate(GDisplay *g, GFrameObject *fo, GWidgetInit *pInit, uint32_t flags);
#define gwinFrameCreate(fo, pInit, flags) gwinGFrameCreate(GDISP, fo, pInit, flags);
/**
* @brief The custom draw routines for a frame window
* @details These function may be passed to @p gwinSetCustomDraw() to get different frame drawing styles
/**
* @defgroup Renderings_Frame Frame rendering functions
*
* @param[in] gw The widget object (in this case a frame)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the frame widget.
*
* @note In your own custom drawing function you may optionally call these
* @details These function may be passed to @p gwinSetCustomDraw() to get different frame drawing styles.
*
* @note In your custom frame drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @note gwinFrameDraw_Std() will fill the client area with the background color.<br/>
* gwinFrameDraw_Transparent() will not fill the client area at all.<br/>
* gwinFrameDraw_Image() will tile the image throughout the client area.<br/>
* All these drawing functions draw the frame itself the same way.
* @{
*/
/**
* @brief The default rendering function for the frame widget.
*
* @details Fills the client area with the background color.
*
* @param[in] gw The widget object (must be a frame widget).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinFrameDraw_Std(GWidgetObject *gw, void *param);
/**
* @brief Renders the frame widget with a transparent client area.
*
* @details Will not fill the client area at all.
*
* @param[in] gw The widget object (must be a frame object).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @note The standard functions below ignore the param parameter except for @p gwinFrameDraw_Image().
* @note The image custom draw function @p gwinFrameDraw_Image() uses param to pass in the gdispImage pointer.
* The image must be already opened before calling @p gwinSetCustomDraw().
*
* @api
* @{
*/
void gwinFrameDraw_Std(GWidgetObject *gw, void *param);
void gwinFrameDraw_Transparent(GWidgetObject *gw, void *param);
void gwinFrameDraw_Image(GWidgetObject *gw, void *param);
/** @} */
void gwinFrameDraw_Transparent(GWidgetObject *gw, void *param);
/**
* @brief Renders the frame widget and uses the specified image for the client area.
*
* @details The image will be tiled throghout the client area. Therefore, to archive the best looking result the
* supplied image needs to be of the same size as the client area size of the frame widget (inner size).
*
* @param[in] gw The widget object (must be a frame object).
* @param[in] param A parameter passed in from the user. Must be an image handle. See note below.
*
* @note The image must be already opened before calling @p gwinSetCustomDraw(). The handle is passed as the parameter
* to this function.
*
* @api
*/
void gwinFrameDraw_Image(GWidgetObject *gw, void *param);
/** @} */
#ifdef __cplusplus
}

View File

@ -301,7 +301,6 @@ static void SendKeyboardEvent(GKeyboardObject *gk) {
#endif
extern GVKeyTable GWIN_KEYBOARD_DEFAULT_LAYOUT;
void gwinKeyboardDraw_Normal(GWidgetObject *gw, void *param);
// The button VMT table
static const gwidgetVMT keyboardVMT = {

View File

@ -101,6 +101,32 @@ GSourceHandle gwinKeyboardGetEventSource(GHandle gh);
*/
void gwinKeyboardSetLayout(GHandle gh, struct GVKeyTable *layout);
/**
* @defgroup Renderings_Keyboard Keyboard rendering functions
*
* @brief Built-in rendering functions for the keyboard widget.
*
* @details These function may be passed to @p gwinSetCustomDraw() to get different keyboard drawing styles.
*
* @note In your custom keyboard drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The built-in functions below ignore the param parameter.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @{
*/
/**
* @brief The default rendering function for the keyboard widget
*
* @param[in] gw The widget object (must be a keyboard object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinKeyboardDraw_Normal(GWidgetObject *gw, void *param);
/** @} */
#ifdef __cplusplus

View File

@ -40,8 +40,6 @@ static coord_t getheight(const char *text, font_t font, coord_t maxwidth) {
return gdispGetFontMetric(font, fontHeight);
}
static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param);
static const gwidgetVMT labelVMT = {
{
"Label", // The class name
@ -136,7 +134,7 @@ void gwinLabelSetBorder(GHandle gh, bool_t border) {
}
#endif // GWIN_LABEL_ATTRIBUTE
static void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) {
void gwinLabelDefaultDraw(GWidgetObject *gw, void *param) {
coord_t w, h;
color_t c;
(void) param;

View File

@ -100,6 +100,34 @@ void gwinLabelSetBorder(GHandle gh, bool_t border);
void gwinLabelSetAttribute(GHandle gh, coord_t tab, const char* attr);
#endif
/**
* @defgroup Renderings_Label Label rendering functions
*
* @brief Built-in rendering functions for the label widget.
*
* @details These function may be passed to @p gwinSetCustomDraw() to get different label drawing styles.
*
* @note In your custom label drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The built-in functions below ignore the param parameter.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @{
*/
/**
* @brief The default rendering function for the label widget
*
* @param[in] gw The widget object (must be a label object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinLabelDefaultDraw(GWidgetObject *gw, void *param)
/** @} */
#ifdef __cplusplus
}
#endif

View File

@ -74,8 +74,6 @@ static void sendListEvent(GWidgetObject *gw, int item) {
}
}
static void gwinListDefaultDraw(GWidgetObject* gw, void* param);
#if GINPUT_NEED_MOUSE
static void ListMouseSelect(GWidgetObject* gw, coord_t x, coord_t y) {
const gfxQueueASyncItem* qi;
@ -657,7 +655,7 @@ void gwinListViewItem(GHandle gh, int item) {
}
#endif
static void gwinListDefaultDraw(GWidgetObject* gw, void* param) {
void gwinListDefaultDraw(GWidgetObject* gw, void* param) {
(void)param;
#if GDISP_NEED_CONVEX_POLYGON

View File

@ -326,6 +326,33 @@ void gwinListViewItem(GHandle gh, int item);
void gwinListItemSetImage(GHandle gh, int item, gdispImage *pimg);
#endif
/**
* @defgroup Renderings_List List rendering functions
*
* @brief Built-in rendering functions for the list widget.
*
* @details These function may be passed to @p gwinSetCustomDraw() to get different list drawing styles.
*
* @note In your custom list drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @{
*/
/**
* @brief The default rendering function for the list widget
*
* @param[in] gw The widget object (must be a list object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinListDefaultDraw(GWidgetObject* gw, void* param);
/** @} */
#ifdef __cplusplus
}
#endif

View File

@ -176,29 +176,49 @@ void gwinProgressbarDecrement(GHandle gh);
#endif /* GWIN_PROGRESSBAR_AUTO */
/**
* @brief Some custom progressbar drawing routines
* @details These function may be passed to @p gwinSetCustomDraw() to get different progressbar drawing styles
* @defgroup Renderings_Progressbar Progressbar rendering functions
*
* @param[in] gw The widget (which must be a progressbar)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the progressbar widget.
*
* @note In your custom progressbar drawing function you may optionally call this
* @details These function may be passed to @p gwinSetCustomDraw() to get different progressbar drawing styles.
*
* @note In your custom progressbar drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The standard functions below ignore the param parameter except for @p gwinProgressbarDraw_Image().
* @note The image custom draw function @p gwinProgressbarDraw_Image() uses param to pass in the gdispImage pointer.
* The image must be already opened before calling @p gwinSetCustomDraw(). The image is tiled to fill
* the active area of the progressbar. The normal colors apply to the border and inactive area and the dividing line
* between the active and inactive areas.
* No checking is done to compare the dimensions of the progressbar to the size of the image.
* Note text is drawn on top of the image.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @api
* @{
*/
/**
* @brief The default rendering function for the progressbar widget
*
* @param[in] gw The widget object (must be a progressbar object)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinProgressbarDraw_Std(GWidgetObject *gw, void *param);
void gwinProgressbarDraw_Image(GWidgetObject *gw, void *param);
#if GDISP_NEED_IMAGE || defined(__DOXYGEN__)
/**
* @brief Renders a progressbar using an image.
*
* @param[in] gw The widget object (must be a progressbar handle)
* @param[in] param A parameter passed in from the user. Must be an image handle. See note below.
*
* @note The image must be already opened before calling @p gwinSetCustomDraw().
* @note The image is tiled to fill the active area of the progressbar. The normal colors
* apply to the border and inactive area and the dividing line between the active
* and inactive areas. No checking is done to compare the dimensions of the progressbar
* to the size of the image. Note text is drawn on top of the image.
*
* @pre GDISP_NEED_IMAGE must be set to TRUE
*
* @api
*/
void gwinProgressbarDraw_Image(GWidgetObject *gw, void *param);
#endif /* GDISP_NEED_IMAGE */
/** @} */
#ifdef __cplusplus

View File

@ -116,24 +116,54 @@ bool_t gwinRadioIsPressed(GHandle gh);
GHandle gwinRadioGetActive(uint16_t group);
/**
* @brief Some custom radio button drawing routines
* @details These function may be passed to @p gwinSetCustomDraw() to get different radio button drawing styles
* @defgroup Renderings_Radiobutton RadioButton rendering functions
*
* @param[in] gw The widget object (in this case a radio button)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the radiobutton widget.
*
* @note In your custom radio drawing function you may optionally call these
* @details These function may be passed to @p gwinSetCustomDraw() to get different radiobutton drawing styles.
*
* @note In your custom radiobutton drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The standard functions below ignore the param parameter.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @api
* @{
*/
void gwinRadioDraw_Radio(GWidgetObject *gw, void *param); // @< A standard radio button
void gwinRadioDraw_Button(GWidgetObject *gw, void *param); // @< Draw as a button
void gwinRadioDraw_Tab(GWidgetObject *gw, void *param); // @< Draw as a tab
/**
* @brief The default rendering function for the radiobutton widget
*
* @param[in] gw The widget object (must be a button radioobject)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinRadioDraw_Radio(GWidgetObject *gw, void *param);
/**
* @brief Renders the radiobutton in form of a regular rectangular button
*
* @param[in] gw The widget object (must be a button radioobject)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinRadioDraw_Button(GWidgetObject *gw, void *param);
/**
* @brief Used to render tabbed menus.
*
* @details Multiple radiobutton widgets can be placed right next to each other and be used to implement
* a tabbed menu using this rendering function.
*
* @note This exists for legacy reasons. Have a look at the @p Tabset widget instead.
*
* @param[in] gw The widget object (must be a button radioobject)
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinRadioDraw_Tab(GWidgetObject *gw, void *param);
/** @} */
#ifdef __cplusplus

View File

@ -143,29 +143,50 @@ void gwinSliderSetPosition(GHandle gh, int pos);
void gwinSliderSendExtendedEvents(GHandle gh, bool_t enabled);
/**
* @brief Some custom slider drawing routines
* @details These function may be passed to @p gwinSetCustomDraw() to get different slider drawing styles
* @defgroup Renderings_Slider Slider rendering functions
*
* @param[in] gw The widget (which must be a slider)
* @param[in] param A parameter passed in from the user
* @brief Built-in rendering functions for the slider widget.
*
* @note In your custom slider drawing function you may optionally call this
* @details These function may be passed to @p gwinSetCustomDraw() to get different slider drawing styles.
*
* @note In your custom slider drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note The standard functions below ignore the param parameter except for @p gwinSliderDraw_Image().
* @note The image custom draw function @p gwinSliderDraw_Image() uses param to pass in the gdispImage pointer.
* The image must be already opened before calling @p gwinSetCustomDraw(). The image is tiled to fill
* the active area of the slider. The normal colors apply to the border and inactive area and the dividing line
* between the active and inactive areas.
* No checking is done to compare the dimensions of the slider to the size of the image.
* Note text is drawn on top of the image.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @api
* @{
*/
/**
* @brief The default rendering function for the slider widget.
*
* @param[in] gw The widget object (must be a slider object).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinSliderDraw_Std(GWidgetObject *gw, void *param);
#if GDISP_NEED_IMAGE || defined(__DOXYGEN__)
/**
* @brief The default rendering function
*
* @param[in] gw The widget object (must be a slider object).
* @param[in] param A parameter passed in from the user. Must be an image handle. See note below.
*
* @note The image must be already opened before calling @p gwinSetCustomDraw(). The image should be 3
* times the height of the button. The button image is repeated 3 times vertically, the first (top) for
* the "up" image, the 2nd for the "down" image, and the third (bottom) image for the disabled state. If
* the disabled state is never going to be used then the image can be just 2 times the button height.
* No checking is done to compare the size of the button to the size of the image.
* No text is drawn on top of the image.
*
* @pre GDISP_NEED_IMAGE must be set to TRUE
*
* @api
*/
void gwinSliderDraw_Image(GWidgetObject *gw, void *param);
#endif /* GDISP_NEED_IMAGE */
/** @} */
#ifdef __cplusplus

View File

@ -127,8 +127,6 @@ static bool_t resizeText(GWidgetObject* gw, size_t pos, int32_t diff) {
}
#endif
static void gwinTexteditDefaultDraw(GWidgetObject* gw, void* param);
static const gwidgetVMT texteditVMT = {
{
"TextEdit", // The class name
@ -196,7 +194,7 @@ GHandle gwinGTexteditCreate(GDisplay* g, GTexteditObject* wt, GWidgetInit* pInit
return (GHandle)wt;
}
static void gwinTexteditDefaultDraw(GWidgetObject* gw, void* param)
void gwinTexteditDefaultDraw(GWidgetObject* gw, void* param)
{
const char *p;
coord_t cpos, tpos;

View File

@ -60,6 +60,33 @@ extern "C" {
GHandle gwinGTexteditCreate(GDisplay* g, GTexteditObject* wt, GWidgetInit* pInit, size_t maxSize);
#define gwinTexteditCreate(wt, pInit, maxSize) gwinGTexteditCreate(GDISP, wt, pInit, maxSize)
/**
* @defgroup Renderings_Textedit Textedit rendering functions
*
* @brief Built-in rendering functions for the textedit widget.
*
* @details These function may be passed to @p gwinSetCustomDraw() to get different textedit drawing styles.
*
* @note In your custom textedit drawing function you may optionally call these
* standard functions and then draw your extra details on top.
* @note These custom drawing routines don't have to worry about setting clipping as the framework
* sets clipping to the object window prior to calling these routines.
*
* @{
*/
/**
* @brief The default rendering function for the textedit widget.
*
* @param[in] gw The widget object (must be a button textedit).
* @param[in] param A parameter passed in from the user. Ignored by this function.
*
* @api
*/
void gwinTexteditDefaultDraw(GWidgetObject* gw, void* param);
/** @} */
#ifdef __cplusplus
}
#endif