From 57e2fb1f3769a8be74c25217a360fb27d48822bb Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Thu, 1 Aug 2002 13:29:30 +0000 Subject: Markus Braun's progressbar and slidebar code git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1510 a1c6a512-1295-4272-9138-f99709370657 --- firmware/drivers/lcd.c | 138 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) (limited to 'firmware/drivers/lcd.c') diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index 5a08b55930..5e86647280 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -1051,6 +1051,144 @@ void lcd_getfontsize(unsigned int font, int *width, int *height) } } +/* + * Print a progress bar + */ +void lcd_progressbar(int x, int y, int width, int height, int percent, int direction) +{ + int pos; + int i,j; + + /* draw horizontal lines */ + for(i=x+1;i<=x+width-2;i++) { + DRAW_PIXEL(i,y); + DRAW_PIXEL(i,(y+height-1)); + } + + /* draw vertical lines */ + for(i=1;i100) + pos=100; + + switch (direction) + { + case BAR_RIGHT: + pos=(width-2)*pos/100; + for(i=1;i<=pos;i++) + for(j=1;j100) + pos=100; + + switch (direction) + { + case BAR_RIGHT: + pos=(width-height-1)*pos/100; + break; + case BAR_LEFT: + pos=(width-height-1)*(100-pos)/100; + break; + case BAR_DOWN: + pos=(height-width-1)*pos/100; + break; + case BAR_UP: + pos=(height-width-1)*(100-pos)/100; + break; + } + + if(direction == BAR_LEFT || direction == BAR_RIGHT) + for(i=1;i