1
0
Fork 0
forked from len0rd/rockbox

A checkbox widget

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4559 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Linus Nielsen Feltzing 2004-04-28 22:20:27 +00:00
parent fc2fc47d01
commit bd3d297b31
4 changed files with 33 additions and 1 deletions

View file

@ -185,6 +185,9 @@ static struct plugin_api rockbox_api = {
#ifndef SIMULATOR #ifndef SIMULATOR
ata_sleep, ata_sleep,
#endif #endif
#ifdef HAVE_LCD_BITMAP
checkbox,
#endif
}; };
int plugin_load(char* plugin, void* parameter) int plugin_load(char* plugin, void* parameter)

View file

@ -50,7 +50,7 @@
/* update this to latest version if a change to the api struct breaks /* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any backwards compatibility (and please take the opportunity to sort in any
new function which are "waiting" at the end of the function table) */ new function which are "waiting" at the end of the function table) */
#define PLUGIN_MIN_API_VERSION 9 #define PLUGIN_MIN_API_VERSION 10
/* plugin return codes */ /* plugin return codes */
enum plugin_status { enum plugin_status {
@ -207,6 +207,9 @@ struct plugin_api {
#ifndef SIMULATOR #ifndef SIMULATOR
int (*ata_sleep)(void); int (*ata_sleep)(void);
#endif #endif
#ifdef HAVE_LCD_BITMAP
void (*checkbox)(int x, int y, int width, int height, bool checked);
#endif
}; };
/* defined by the plugin loader (plugin.c) */ /* defined by the plugin loader (plugin.c) */

View file

@ -210,4 +210,29 @@ void scrollbar(int x, int y, int width, int height, int items, int min_shown,
} }
} }
} }
/*
* Print a checkbox
*/
void checkbox(int x, int y, int width, int height, bool checked)
{
/* check position and dimensions */
if((x < 0) || (x + width > LCD_WIDTH) ||
(y < 0) || (y + height > LCD_HEIGHT) ||
(width < 4 ) || (height < 4 ))
{
return;
}
lcd_drawrect(x, y, width, height);
if (checked){
lcd_drawline(x + 2, y + 2, x + width - 2 - 1 , y + height - 2 - 1);
lcd_drawline(x + 2, y + height - 2 - 1, x + width - 2 - 1, y + 2);
} else {
/* be sure to clear box */
lcd_clearrect(x + 1, y + 1, width - 2, height - 2);
}
}
#endif #endif

View file

@ -38,5 +38,6 @@ enum {
extern void progressbar(int x, int y, int width, int height, int percent, int direction); extern void progressbar(int x, int y, int width, int height, int percent, int direction);
extern void slidebar(int x, int y, int width, int height, int percent, int direction); extern void slidebar(int x, int y, int width, int height, int percent, int direction);
extern void scrollbar(int x, int y, int width, int height, int items, int min_shown, int max_shown, int orientation); extern void scrollbar(int x, int y, int width, int height, int items, int min_shown, int max_shown, int orientation);
extern void checkbox(int x, int y, int width, int height, bool checked);
#endif /* HAVE_LCD_BITMAP */ #endif /* HAVE_LCD_BITMAP */
#endif /* __WIDGETS_H__ */ #endif /* __WIDGETS_H__ */