diff options
author | Markus Braun <markus.braun@krawel.de> | 2002-08-07 10:35:26 +0000 |
---|---|---|
committer | Markus Braun <markus.braun@krawel.de> | 2002-08-07 10:35:26 +0000 |
commit | de8fbf00a8a4a2c85fc9ee4b2758881f4ec435d9 (patch) | |
tree | 5cc60884b43b291f3878527413c4d7f21f210624 /firmware | |
parent | 999e2127af292ffac2d36dcb54b78a2f1abce6bf (diff) |
Added status bar to file browser and wps
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1582 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/lcd.c | 149 | ||||
-rw-r--r-- | firmware/drivers/lcd.h | 17 |
2 files changed, 11 insertions, 155 deletions
diff --git a/firmware/drivers/lcd.c b/firmware/drivers/lcd.c index 5e86647280..fe1e13a522 100644 --- a/firmware/drivers/lcd.c +++ b/firmware/drivers/lcd.c @@ -529,7 +529,7 @@ void lcd_init (void) * * Memory copy of display bitmap */ -unsigned char display[LCD_WIDTH][LCD_HEIGHT/8] __attribute__ ((section (".idata"))); +unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8] __attribute__ ((section (".idata"))); static int font=0; static int xmargin=0; @@ -590,7 +590,7 @@ void lcd_update (void) lcd_write (true, LCD_CNTL_LOWCOL); for (x = 0; x < LCD_WIDTH; x++) - lcd_write (false, display[x][y]); + lcd_write (false, lcd_framebuffer[x][y]); } } @@ -601,7 +601,7 @@ void lcd_update (void) */ void lcd_clear_display (void) { - memset (display, 0, sizeof display); + memset (lcd_framebuffer, 0, sizeof lcd_framebuffer); #if defined(SIMULATOR) && defined(HAVE_LCD_CHARCELLS) /* this function is being used when simulating a charcell LCD and then we update immediately */ @@ -791,7 +791,7 @@ void lcd_bitmap (unsigned char *src, int x, int y, int nx, int ny, ny = LCD_HEIGHT - y; shift = y & 7; - dst2 = &display[x][y/8]; + dst2 = &lcd_framebuffer[x][y/8]; ny += shift; /* Calculate bit masks */ @@ -881,9 +881,6 @@ void lcd_invertrect (int x, int y, int nx, int ny) lcd_bitmap (ones, x+i, y, 1, ny, false); } -#define DRAW_PIXEL(x,y) display[x][y/8] |= (1<<(y&7)) -#define CLEAR_PIXEL(x,y) display[x][y/8] &= ~(1<<(y&7)) - void lcd_drawline( int x1, int y1, int x2, int y2 ) { int numpixels; @@ -1051,144 +1048,6 @@ 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;i<height;i++) { - DRAW_PIXEL(x,(y+i)); - DRAW_PIXEL((x+width-1),(y+i)); - } - - /* clear edge pixels */ - CLEAR_PIXEL(x,y); - CLEAR_PIXEL((x+width-1),y); - CLEAR_PIXEL(x,(y+height-1)); - CLEAR_PIXEL((x+width-1),(y+height-1)); - - /* clear pixels in progress bar */ - for(i=1;i<=width-2;i++) { - for(j=1;j<=height-2;j++) { - CLEAR_PIXEL((x+i),(y+j)); - CLEAR_PIXEL((x+i),(y+j)); - } - } - - /* draw bar */ - pos=percent; - if(pos<0) - pos=0; - if(pos>100) - pos=100; - - switch (direction) - { - case BAR_RIGHT: - pos=(width-2)*pos/100; - for(i=1;i<=pos;i++) - for(j=1;j<height-1;j++) - DRAW_PIXEL((x+i),(y+j)); - break; - case BAR_LEFT: - pos=(width-2)*(100-pos)/100; - for(i=pos+1;i<=width-2;i++) - for(j=1;j<height-1;j++) - DRAW_PIXEL((x+i),(y+j)); - break; - case BAR_DOWN: - pos=(height-2)*pos/100; - for(i=1;i<=pos;i++) - for(j=1;j<width-1;j++) - DRAW_PIXEL((x+j),(y+i)); - break; - case BAR_UP: - pos=(height-2)*(100-pos)/100; - for(i=pos+1;i<=height-2;i++) - for(j=1;j<width-1;j++) - DRAW_PIXEL((x+j),(y+i)); - break; - } - -} - - -/* - * Print a slidebar bar - */ -void lcd_slidebar(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;i<height;i++) { - DRAW_PIXEL(x,(y+i)); - DRAW_PIXEL((x+width-1),(y+i)); - } - - /* clear edge pixels */ - CLEAR_PIXEL(x,y); - CLEAR_PIXEL((x+width-1),y); - CLEAR_PIXEL(x,(y+height-1)); - CLEAR_PIXEL((x+width-1),(y+height-1)); - - /* clear pixels in progress bar */ - for(i=1;i<=width-2;i++) - for(j=1;j<=height-2;j++) { - CLEAR_PIXEL((x+i),(y+j)); - CLEAR_PIXEL((x+i),(y+j)); - } - - /* draw point */ - pos=percent; - if(pos<0) - pos=0; - if(pos>100) - 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<height;i++) - for(j=1;j<height;j++) - DRAW_PIXEL((x+pos+i),(y+j)); - else - for(i=1;i<width;i++) - for(j=1;j<width;j++) - DRAW_PIXEL((x+i),(y+pos+j)); -} - #else /* no LCD defined, no code to use */ #endif diff --git a/firmware/drivers/lcd.h b/firmware/drivers/lcd.h index c985cb067d..23e333287b 100644 --- a/firmware/drivers/lcd.h +++ b/firmware/drivers/lcd.h @@ -74,14 +74,13 @@ extern void lcd_double_height (bool on); #define LCD_WIDTH 112 /* Display width in pixels */ #define LCD_HEIGHT 64 /* Display height in pixels */ -/* Directions for progressbar and scrollbar */ -enum -{ - BAR_RIGHT = 0, - BAR_LEFT, - BAR_DOWN, - BAR_UP -}; +#define DRAW_PIXEL(x,y) lcd_framebuffer[x][y/8] |= (1<<(y&7)) +#define CLEAR_PIXEL(x,y) lcd_framebuffer[x][y/8] &= ~(1<<(y&7)) + +/* + * Memory copy of display bitmap + */ +extern unsigned char lcd_framebuffer[LCD_WIDTH][LCD_HEIGHT/8] __attribute__ ((section (".idata"))); extern void lcd_putsxy(int x, int y, unsigned char *string, int font); extern void lcd_setfont(int font); @@ -97,8 +96,6 @@ extern void lcd_drawline( int x1, int y1, int x2, int y2 ); extern void lcd_clearline( int x1, int y1, int x2, int y2 ); extern void lcd_drawpixel(int x, int y); extern void lcd_clearpixel(int x, int y); -extern void lcd_progressbar(int x, int y, int width, int height, int percent, int direction); -extern void lcd_slidebar(int x, int y, int width, int height, int percent, int direction); #endif /* CHARCELLS / BITMAP */ |