From c41dcb9ae9a37b4177ec789ac9c27462da5ccbe3 Mon Sep 17 00:00:00 2001 From: Markus Braun Date: Tue, 20 Aug 2002 19:39:55 +0000 Subject: Now using lcd margins instead of a line offset for displaying status bar. Needed to support fonts smaller than 8 pixels. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1823 a1c6a512-1295-4272-9138-f99709370657 --- apps/playlist.c | 25 ++++++++++++++---------- apps/tree.c | 59 ++++++++++++++++++++++++++++----------------------------- apps/wps.c | 41 ++++++++++++++++++++------------------- 3 files changed, 65 insertions(+), 60 deletions(-) diff --git a/apps/playlist.c b/apps/playlist.c index 9bd42941bc..27665981f7 100644 --- a/apps/playlist.c +++ b/apps/playlist.c @@ -30,12 +30,10 @@ #include "settings.h" #include "status.h" #include "applimits.h" - #ifdef HAVE_LCD_BITMAP -#define LINE_Y (global_settings.statusbar&&statusbar_enabled?1:0) /* Y position the entry-list starts at */ -#else /* HAVE_LCD_BITMAP */ -#define LINE_Y 0 /* Y position the entry-list starts at */ -#endif /* HAVE_LCD_BITMAP */ +#include "icons.h" +#include "widgets.h" +#endif playlist_info_t playlist; @@ -183,10 +181,17 @@ void play_list(char *dir, /* "current directory" */ playlist.index = start_index; +#ifdef HAVE_LCD_BITMAP + if(global_settings.statusbar) + lcd_setmargins(0, STATUSBAR_HEIGHT); + else + lcd_setmargins(0, 0); +#endif + /* If file is NULL, the list is in RAM */ if(file) { lcd_clear_display(); - lcd_puts(0,LINE_Y,"Loading..."); + lcd_puts(0,0,"Loading..."); status_draw(); lcd_update(); playlist.in_ram = false; @@ -216,7 +221,7 @@ void play_list(char *dir, /* "current directory" */ if(global_settings.playlist_shuffle) { if(!playlist.in_ram) { - lcd_puts(0,LINE_Y,"Shuffling..."); + lcd_puts(0,0,"Shuffling..."); status_draw(); lcd_update(); randomise_playlist( random_seed ); @@ -247,7 +252,7 @@ void play_list(char *dir, /* "current directory" */ } if(!playlist.in_ram) { - lcd_puts(0,LINE_Y,"Playing... "); + lcd_puts(0,0,"Playing... "); status_draw(); lcd_update(); } @@ -342,7 +347,7 @@ void add_indices_to_playlist(void) next_tick = current_tick + HZ; snprintf(line, sizeof line, "%d files", playlist.amount); - lcd_puts(0,LINE_Y+1,line); + lcd_puts(0,1,line); status_draw(); lcd_update(); } @@ -357,7 +362,7 @@ void add_indices_to_playlist(void) } if(!playlist.in_ram) { snprintf(line, sizeof line, "%d files", playlist.amount); - lcd_puts(0,LINE_Y+1,line); + lcd_puts(0,1,line); status_draw(); lcd_update(); close(fd); diff --git a/apps/tree.c b/apps/tree.c index 1f1c924ef6..a07a520955 100644 --- a/apps/tree.c +++ b/apps/tree.c @@ -69,10 +69,10 @@ void browse_root(void) #ifdef HAVE_LCD_BITMAP -#define TREE_MAX_ON_SCREEN ((LCD_HEIGHT-MARGIN_Y)/LINE_HEIGTH-LINE_Y) +#define TREE_MAX_ON_SCREEN ((LCD_HEIGHT-MARGIN_Y)/LINE_HEIGTH) #define TREE_MAX_LEN_DISPLAY 16 /* max length that fits on screen */ -#define MARGIN_Y 0 /* Y pixel margin */ +#define MARGIN_Y (global_settings.statusbar ? STATUSBAR_HEIGHT : 0) /* Y pixel margin */ #define MARGIN_X 10 /* X pixel margin */ #define LINE_Y (global_settings.statusbar ? 1 : 0) /* Y position the entry-list starts at */ #define LINE_X 0 /* X position the entry-list starts at */ @@ -167,7 +167,7 @@ static int showdir(char *path, int start) int fh; unsigned char *font = lcd_getcurrentldfont(); fh = ajf_get_fontheight(font); - tree_max_on_screen = ((LCD_HEIGHT-MARGIN_Y)/fh)-LINE_Y; + tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; line_height = fh; #else tree_max_on_screen = TREE_MAX_ON_SCREEN; @@ -273,7 +273,7 @@ static int showdir(char *path, int start) icon_type = File; } lcd_bitmap(bitmap_icons_6x8[icon_type], - 4, MARGIN_Y+(LINE_Y+i-start)*line_height, 6, 8, true); + 4, MARGIN_Y+(i-start)*line_height, 6, 8, true); #endif @@ -283,11 +283,11 @@ static int showdir(char *path, int start) { char temp = dircache[i].name[len-4]; dircache[i].name[len-4] = 0; - lcd_puts(LINE_X, LINE_Y+i-start, dircache[i].name); + lcd_puts(LINE_X, i-start, dircache[i].name); dircache[i].name[len-4] = temp; } else - lcd_puts(LINE_X, LINE_Y+i-start, dircache[i].name); + lcd_puts(LINE_X, i-start, dircache[i].name); } status_draw(); @@ -411,7 +411,7 @@ bool dirbrowse(char *root) int fh; unsigned char *font = lcd_getcurrentldfont(); fh = ajf_get_fontheight(font); - tree_max_on_screen = ((LCD_HEIGHT-MARGIN_Y)/fh)-LINE_Y; + tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; #else tree_max_on_screen = TREE_MAX_ON_SCREEN; #endif @@ -424,7 +424,7 @@ bool dirbrowse(char *root) if (numentries == -1) return -1; /* root is not a directory */ - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); while(1) { bool restore = false; @@ -545,29 +545,29 @@ bool dirbrowse(char *root) case BUTTON_VOL_UP: if(filesindir) { if(dircursor) { - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, false); + put_cursorxy(0, CURSOR_Y + dircursor, false); dircursor--; - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } else { if (start) { start--; numentries = showdir(currdir, start); - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } else { if (numentries < tree_max_on_screen) { - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, + put_cursorxy(0, CURSOR_Y + dircursor, false); dircursor = numentries - 1; - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, + put_cursorxy(0, CURSOR_Y + dircursor, true); } else { start = numentries - tree_max_on_screen; dircursor = tree_max_on_screen - 1; numentries = showdir(currdir, start); - put_cursorxy(0, CURSOR_Y + LINE_Y + + put_cursorxy(0, CURSOR_Y + tree_max_on_screen - 1, true); } } @@ -583,28 +583,28 @@ bool dirbrowse(char *root) { if (dircursor + start + 1 < numentries ) { if(dircursor+1 < tree_max_on_screen) { - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, + put_cursorxy(0, CURSOR_Y + dircursor, false); dircursor++; - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } else { start++; numentries = showdir(currdir, start); - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } } else { if(numentries < tree_max_on_screen) { - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, + put_cursorxy(0, CURSOR_Y + dircursor, false); start = dircursor = 0; - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } else { start = dircursor = 0; numentries = showdir(currdir, start); - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } } lcd_update(); @@ -614,14 +614,8 @@ bool dirbrowse(char *root) case TREE_MENU: { bool lastfilter = global_settings.mp3filter; bool lastsortcase = global_settings.sort_case; -#ifdef HAVE_LCD_BITMAP - bool laststate=statusbar(false); -#endif lcd_stop_scroll(); main_menu(); -#ifdef HAVE_LCD_BITMAP - statusbar(laststate); -#endif /* do we need to rescan dir? */ if ( lastfilter != global_settings.mp3filter || lastsortcase != global_settings.sort_case) @@ -650,13 +644,18 @@ bool dirbrowse(char *root) #ifdef HAVE_RECORDER_KEYPAD case BUTTON_F3: -#endif #ifdef HAVE_LCD_BITMAP global_settings.statusbar = !global_settings.statusbar; settings_save(); +#ifdef LOADABLE_FONTS + tree_max_on_screen = (LCD_HEIGHT - MARGIN_Y) / fh; +#else + tree_max_on_screen = TREE_MAX_ON_SCREEN; +#endif restore = true; #endif break; +#endif #ifndef SIMULATOR case SYS_USB_CONNECTED: { @@ -694,7 +693,7 @@ bool dirbrowse(char *root) dircursor--; } numentries = showdir(currdir, start); - put_cursorxy(0, CURSOR_Y + LINE_Y+dircursor, true); + put_cursorxy(0, CURSOR_Y + dircursor, true); } if ( numentries ) { @@ -711,12 +710,12 @@ bool dirbrowse(char *root) int len = strlen(dircache[i].name); char temp = dircache[i].name[len-4]; dircache[i].name[len-4] = 0; - lcd_puts_scroll(LINE_X, LINE_Y+dircursor, + lcd_puts_scroll(LINE_X, dircursor, dircache[i].name); dircache[i].name[len-4] = temp; } else - lcd_puts_scroll(LINE_X, LINE_Y+dircursor, + lcd_puts_scroll(LINE_X, dircursor, dircache[i].name); } } diff --git a/apps/wps.c b/apps/wps.c index 3af73d15ed..e134535bff 100644 --- a/apps/wps.c +++ b/apps/wps.c @@ -44,12 +44,6 @@ #include "ajf.h" #endif -#ifdef HAVE_LCD_BITMAP -#define LINE_Y (global_settings.statusbar ? 1 : 0) /* Y position the entry-list starts at */ -#else /* HAVE_LCD_BITMAP */ -#define LINE_Y 0 /* Y position the entry-list starts at */ -#endif /* HAVE_LCD_BITMAP */ - #ifdef HAVE_LCD_BITMAP #define PLAY_DISPLAY_2LINEID3 0 #define PLAY_DISPLAY_FILENAME_SCROLL 1 @@ -82,7 +76,6 @@ static void draw_screen(struct mp3entry* id3) font_height = 8; #endif - lcd_clear_display(); if(!id3) { @@ -117,14 +110,14 @@ static void draw_screen(struct mp3entry* id3) strncpy(szArtist,szTok,sizeof(szArtist)); szArtist[sizeof(szArtist)-1] = 0; szDelimit = strrchr(id3->path, ch); - lcd_puts(0,LINE_Y, szArtist?szArtist:""); + lcd_puts(0, 0, szArtist?szArtist:""); // removes the .mp3 from the end of the display buffer szPeriod = strrchr(szDelimit, '.'); if (szPeriod != NULL) *szPeriod = 0; - lcd_puts_scroll(0,LINE_Y+1,(++szDelimit)); + lcd_puts_scroll(0, 1, (++szDelimit)); break; } case PLAY_DISPLAY_FILENAME_SCROLL: @@ -147,12 +140,12 @@ static void draw_screen(struct mp3entry* id3) playlist.amount, id3->path); } - lcd_puts_scroll(0,LINE_Y, buffer); + lcd_puts_scroll(0, 0, buffer); break; } case PLAY_DISPLAY_2LINEID3: { - int l = LINE_Y; + int l = 0; #ifdef HAVE_LCD_BITMAP char buffer[64]; @@ -161,7 +154,7 @@ static void draw_screen(struct mp3entry* id3) lcd_puts(0, l++, id3->album?id3->album:""); lcd_puts(0, l++, id3->artist?id3->artist:""); - if(LINE_Y==0&&font_height<=8) { + if(!global_settings.statusbar && font_height <= 8) { if(id3->vbr) snprintf(buffer, sizeof(buffer), "%d kbit (avg)", id3->bitrate); @@ -345,6 +338,11 @@ static void display_file_time(unsigned int elapsed, unsigned int length) char buffer[32]; #ifdef HAVE_LCD_BITMAP + int line; + if(global_settings.statusbar) + line = 5; + else + line = 6; snprintf(buffer,sizeof(buffer), "Time:%3d:%02d/%d:%02d", elapsed / 60000, @@ -352,7 +350,7 @@ static void display_file_time(unsigned int elapsed, unsigned int length) length / 60000, length % 60000 / 1000 ); - lcd_puts(0, 6, buffer); + lcd_puts(0, line, buffer); slidebar(0, LCD_HEIGHT-6, LCD_WIDTH, 6, elapsed*100/length, Grow_Right); lcd_update(); #else @@ -410,6 +408,7 @@ void display_keylock_text(bool locked) { lcd_puts(2, 3, "Key lock is OFF"); } + status_draw(); lcd_update(); #endif @@ -435,6 +434,7 @@ void display_mute_text(bool muted) { lcd_puts(2, 3, "Mute is OFF"); } + status_draw(); lcd_update(); #endif @@ -464,7 +464,10 @@ int wps_show(void) lcd_icon(ICON_AUDIO, true); lcd_icon(ICON_PARAM, false); #else - lcd_setmargins(0,0); + if(global_settings.statusbar) + lcd_setmargins(0, STATUSBAR_HEIGHT); + else + lcd_setmargins(0, 0); #endif ff_rewind = false; @@ -876,15 +879,9 @@ int wps_show(void) #endif if(!keys_locked && !dont_go_to_menu && menu_button_is_down) { -#ifdef HAVE_LCD_BITMAP - bool laststate=statusbar(false); -#endif lcd_stop_scroll(); button_set_release(old_release_mask); main_menu(); -#ifdef HAVE_LCD_BITMAP - statusbar(laststate); -#endif old_release_mask = button_set_release(RELEASE_MASK); ignore_keyup = true; id3 = mpeg_current_track(); @@ -905,6 +902,10 @@ int wps_show(void) #ifdef HAVE_LCD_BITMAP global_settings.statusbar = !global_settings.statusbar; settings_save(); + if(global_settings.statusbar) + lcd_setmargins(0, STATUSBAR_HEIGHT); + else + lcd_setmargins(0, 0); draw_screen(id3); #endif break; -- cgit v1.2.3