summaryrefslogtreecommitdiff
path: root/apps/plugins/lib
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-10-10 23:15:05 +0000
committerThomas Martitz <kugel@rockbox.org>2010-10-10 23:15:05 +0000
commit8a0152bd4ae638c1fe4917b855fcb9fc6a15202c (patch)
tree7a3a81bf30d49a3c072d89485f79207bc7d2c29e /apps/plugins/lib
parent752c91b50dcf36e4476cf89cceb6493e2fd4c586 (diff)
downloadrockbox-8a0152bd4ae638c1fe4917b855fcb9fc6a15202c.zip
rockbox-8a0152bd4ae638c1fe4917b855fcb9fc6a15202c.tar.gz
rockbox-8a0152bd4ae638c1fe4917b855fcb9fc6a15202c.tar.bz2
rockbox-8a0152bd4ae638c1fe4917b855fcb9fc6a15202c.tar.xz
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
Diffstat (limited to 'apps/plugins/lib')
-rw-r--r--apps/plugins/lib/pluginlib_touchscreen.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/apps/plugins/lib/pluginlib_touchscreen.c b/apps/plugins/lib/pluginlib_touchscreen.c
index 1e1bf8d..3920b8e 100644
--- a/apps/plugins/lib/pluginlib_touchscreen.c
+++ b/apps/plugins/lib/pluginlib_touchscreen.c
@@ -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 */
}
/*******************************************************************************