mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-10-13 18:17:39 -04:00
Two new lcd/multi screen api convinience functions: draw_viewport(), fill_viewport().
They work as the drawrect/fillrect pendants but work on a viewport basis; pass NULL to draw the current viewport (the one set with set_viewport()). In conjunction with action_get_touchscreen_press_in_vp() it should be less of a pain to draw buttons and get presses on them. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@28239 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
752c91b50d
commit
8a0152bd4a
9 changed files with 47 additions and 14 deletions
|
@ -88,7 +88,8 @@ void touchbutton_draw(struct touchbutton *data, int num_buttons) {
|
|||
int i;
|
||||
/* These store the width and height of the title offset */
|
||||
int title_width, title_height;
|
||||
|
||||
struct screen *lcd = rb->screens[SCREEN_MAIN];
|
||||
|
||||
/* Loop over all the elements in data */
|
||||
for(i=0; i<num_buttons; i++) {
|
||||
/* Is this a visible button? */
|
||||
|
@ -96,10 +97,10 @@ void touchbutton_draw(struct touchbutton *data, int num_buttons) {
|
|||
/* Set the current viewport to the button so that all drawing
|
||||
* operations are within the button location.
|
||||
*/
|
||||
rb->screens[SCREEN_MAIN]->set_viewport(&data[i].vp);
|
||||
lcd->set_viewport(&data[i].vp);
|
||||
|
||||
/* Get the string size so that the title can be centered. */
|
||||
rb->lcd_getstringsize(data[i].title, &title_width, &title_height);
|
||||
lcd->getstringsize(data[i].title, &title_width, &title_height);
|
||||
|
||||
/* Center the title vertically */
|
||||
title_height=(data[i].vp.height-title_height)/2;
|
||||
|
@ -121,16 +122,17 @@ void touchbutton_draw(struct touchbutton *data, int num_buttons) {
|
|||
* print the title.
|
||||
*/
|
||||
if(title_width==0) {
|
||||
rb->lcd_puts_scroll(0, 0, data[i].title);
|
||||
lcd->puts_scroll_style_xyoffset(0, 0, data[i].title,
|
||||
STYLE_DEFAULT, 0, title_height);
|
||||
} else {
|
||||
rb->lcd_putsxy(title_width, title_height, data[i].title);
|
||||
lcd->putsxy(title_width, title_height, data[i].title);
|
||||
}
|
||||
|
||||
/* Draw bounding box around the button location. */
|
||||
rb->lcd_drawrect( 0, 0, data[i].vp.width, data[i].vp.height);
|
||||
lcd->draw_viewport(NULL);
|
||||
}
|
||||
}
|
||||
rb->screens[SCREEN_MAIN]->set_viewport(NULL); /* Go back to the default viewport */
|
||||
lcd->set_viewport(NULL); /* Go back to the default viewport */
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue