From 16be6567b6dcd66dabf8b1e7f3a84ac358589c16 Mon Sep 17 00:00:00 2001 From: Nicolas Pennequin Date: Mon, 10 Dec 2007 21:07:06 +0000 Subject: [PATCH] PictureFlow improvements by Jonas Hurrelmann: * Scrolling and fading album titles * Better support for small displays git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15908 a1c6a512-1295-4272-9138-f99709370657 --- apps/plugins/bitmaps/native/SOURCES | 12 ++++- ... => pictureflow_emptyslide.100x100x16.bmp} | Bin .../pictureflow_emptyslide.50x50x16.bmp | Bin 0 -> 7654 bytes .../native/pictureflow_logo.100x18x16.bmp | Bin 0 -> 5454 bytes ...ogo.bmp => pictureflow_logo.193x34x16.bmp} | Bin apps/plugins/pictureflow.c | 50 ++++++++++++++---- 6 files changed, 50 insertions(+), 12 deletions(-) rename apps/plugins/bitmaps/native/{pictureflow_emptyslide.bmp => pictureflow_emptyslide.100x100x16.bmp} (100%) create mode 100644 apps/plugins/bitmaps/native/pictureflow_emptyslide.50x50x16.bmp create mode 100644 apps/plugins/bitmaps/native/pictureflow_logo.100x18x16.bmp rename apps/plugins/bitmaps/native/{pictureflow_logo.bmp => pictureflow_logo.193x34x16.bmp} (100%) diff --git a/apps/plugins/bitmaps/native/SOURCES b/apps/plugins/bitmaps/native/SOURCES index 5a36ec04a0..1acc903387 100644 --- a/apps/plugins/bitmaps/native/SOURCES +++ b/apps/plugins/bitmaps/native/SOURCES @@ -512,8 +512,16 @@ matrix_normal.bmp /* pictureflow */ #if defined(HAVE_LCD_COLOR) && defined(HAVE_ALBUMART) && defined(HAVE_TAGCACHE) -pictureflow_logo.bmp -pictureflow_emptyslide.bmp +#if (LCD_WIDTH < 200) + pictureflow_logo.100x18x16.bmp +#else + pictureflow_logo.193x34x16.bmp +#endif +#if (LCD_HEIGHT < 200 ) + pictureflow_emptyslide.50x50x16.bmp +#else + pictureflow_emptyslide.100x100x16.bmp +#endif #endif #endif /* HAVE_LCD_BITMAP */ diff --git a/apps/plugins/bitmaps/native/pictureflow_emptyslide.bmp b/apps/plugins/bitmaps/native/pictureflow_emptyslide.100x100x16.bmp similarity index 100% rename from apps/plugins/bitmaps/native/pictureflow_emptyslide.bmp rename to apps/plugins/bitmaps/native/pictureflow_emptyslide.100x100x16.bmp diff --git a/apps/plugins/bitmaps/native/pictureflow_emptyslide.50x50x16.bmp b/apps/plugins/bitmaps/native/pictureflow_emptyslide.50x50x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dc7cd55c7bc16bd56a9c8e72522b36af61dd549a GIT binary patch literal 7654 zcmeI0%}Z2K7>D21E!(td-?~MAK>K!rqmGWB(IO%uA~Z81A~I4lG&3_Ivxz1xA_PT2 zK@z{l4+L!-5kLNpo_o%{!;m4I`_AGl<_GuX&b{aT&BJ@oeb1S>a`pIv7+oe_mnLsLYIXshcy&Q_gP~YqI(=$c&`r(-jS4&IF zxMu=Mgz!zFv9Yo5MdG8vEKD_A&CShUby{3p{A0AVw3NwYbY?*|NFszUI<2j(9UE0&Ni6=q?o;c9AX`lQh4=x8w)&I+?I6(kYDM}FMd;Mx5xJ!feCU(9rN!r72rB!&P5j|5~Tzg;e}dk$`1|>EELF zX}Id@>Yl4bfhH#>4-XG58gBwvW;Yucx4@)h66k|&+qQ;7MiN%;^$;%XQ!igFdQVq zb=OfH9Ubf&Sfc*{DU^xp3kwT8Wk=(1c*J!lmYA|Ef;4#ctL(hCx3`I$($XlfwYRs^q#)&7XBK1|uBxi4Tb>Cd5yDN+WVjNE#0}2`k_h3tXNtJ^KhrCf Wx!fK{xn42qRZ&qv-MkV=B7XsXIEIV> literal 0 HcmV?d00001 diff --git a/apps/plugins/bitmaps/native/pictureflow_logo.100x18x16.bmp b/apps/plugins/bitmaps/native/pictureflow_logo.100x18x16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..815c5d68ca01c2d2cf297f3dcb295480c730f2d1 GIT binary patch literal 5454 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[0]; rb->lcd_set_background(LCD_RGBPACK(0,0,0)); @@ -485,10 +489,7 @@ void draw_splashscreen(void) rb->lcd_clear_display(); const struct picture* logo = &(logos[display->screen_type]); - picture_draw(display, logo, (LCD_WIDTH - logo->width) / 2, 20); - - rb->lcd_getstringsize("Preparing album artwork", &txt_w, &txt_h); - rb->lcd_putsxy((LCD_WIDTH - txt_w)/2, 100, "Preparing album artwork"); + picture_draw(display, logo, (LCD_WIDTH - logo->width) / 2, 10); rb->lcd_update(); } @@ -499,11 +500,18 @@ void draw_splashscreen(void) */ void draw_progressbar(int step) { + int txt_w, txt_h; const int bar_height = 22; const int w = LCD_WIDTH - 20; - const int y = 130; const int x = 10; + rb->lcd_getstringsize("Preparing album artwork", &txt_w, &txt_h); + + int y = (LCD_HEIGHT - txt_h)/2; + + rb->lcd_putsxy((LCD_WIDTH - txt_w)/2, y, "Preparing album artwork"); + y += (txt_h + 5); + rb->lcd_set_foreground(LCD_RGBPACK(100,100,100)); rb->lcd_drawrect(x, y, w+2, bar_height); rb->lcd_set_foreground(LCD_RGBPACK(165, 231, 82)); @@ -1576,7 +1584,10 @@ int main(void) long update_interval = 100; int fps = 0; int albumtxt_w, albumtxt_h; - int ret; + int albumtxt_x = 0, albumtxt_y = 0; + int albumtxt_dir = -1; + int ret, c; + int prev_center_index = -1; while (true) { current_update = *rb->current_tick; @@ -1597,14 +1608,33 @@ int main(void) } albumtxt = get_album_name(center_index); - rb->lcd_set_foreground(LCD_RGBPACK(255, 255, 255)); + if ( animation_is_active ) { + c = ((slide_frame & 0xffff )/ 256); + if (step > 0) c = 255-c; + } + else c= 255; + rb->lcd_set_foreground(LCD_RGBPACK(c,c,c)); rb->lcd_getstringsize(albumtxt, &albumtxt_w, &albumtxt_h); - rb->lcd_putsxy((LCD_WIDTH - albumtxt_w) /2, LCD_HEIGHT-albumtxt_h-10, albumtxt); + if (center_index != prev_center_index) { + albumtxt_x = 0; + albumtxt_dir = -1; + albumtxt_y = LCD_HEIGHT-albumtxt_h-10; + prev_center_index = center_index; + } + if (albumtxt_w > LCD_WIDTH && ! animation_is_active ) { + rb->lcd_putsxy(albumtxt_x, albumtxt_y , albumtxt); + if ( albumtxt_w + albumtxt_x <= LCD_WIDTH ) albumtxt_dir = 1; + else if ( albumtxt_x >= 0 ) albumtxt_dir = -1; + albumtxt_x += albumtxt_dir; + } + else { + rb->lcd_putsxy((LCD_WIDTH - albumtxt_w) /2, albumtxt_y , albumtxt); + } rb->lcd_update(); rb->yield(); - button = pluginlib_getaction(rb, animation_is_active ? 0 : HZ/10, + button = pluginlib_getaction(rb, animation_is_active ? 0 : HZ/16, plugin_contexts, NB_ACTION_CONTEXTS); switch (button) {