Load PictureFlow logo from disk, discarding it after splash screen is done and freeing the used space for the slide cache.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21051 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
9be554cb6a
commit
802ea462d0
3 changed files with 51 additions and 27 deletions
|
@ -692,15 +692,6 @@ matrix_bold.bmp
|
||||||
matrix_normal.bmp
|
matrix_normal.bmp
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* pictureflow */
|
|
||||||
#if defined(HAVE_LCD_BITMAP) && defined(HAVE_TAGCACHE)
|
|
||||||
#if (LCD_WIDTH < 200)
|
|
||||||
pictureflow_logo.100x18x16.bmp
|
|
||||||
#else
|
|
||||||
pictureflow_logo.193x34x16.bmp
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Sliding puzzle */
|
/* Sliding puzzle */
|
||||||
#if (LCD_WIDTH != LCD_HEIGHT)
|
#if (LCD_WIDTH != LCD_HEIGHT)
|
||||||
#define SMALLER_DIMENSION ((LCD_WIDTH < LCD_HEIGHT) ? LCD_WIDTH : LCD_HEIGHT)
|
#define SMALLER_DIMENSION ((LCD_WIDTH < LCD_HEIGHT) ? LCD_WIDTH : LCD_HEIGHT)
|
||||||
|
|
|
@ -29,8 +29,6 @@
|
||||||
#include "lib/pluginlib_actions.h"
|
#include "lib/pluginlib_actions.h"
|
||||||
#include "lib/helper.h"
|
#include "lib/helper.h"
|
||||||
#include "lib/configfile.h"
|
#include "lib/configfile.h"
|
||||||
#include "lib/picture.h"
|
|
||||||
#include "pluginbitmaps/pictureflow_logo.h"
|
|
||||||
#include "lib/grey.h"
|
#include "lib/grey.h"
|
||||||
#include "lib/feature_wrappers.h"
|
#include "lib/feature_wrappers.h"
|
||||||
#include "lib/buflib.h"
|
#include "lib/buflib.h"
|
||||||
|
@ -222,6 +220,7 @@ typedef fb_data pix_t;
|
||||||
|
|
||||||
#define EMPTY_SLIDE CACHE_PREFIX "/emptyslide.pfraw"
|
#define EMPTY_SLIDE CACHE_PREFIX "/emptyslide.pfraw"
|
||||||
#define EMPTY_SLIDE_BMP PLUGIN_DEMOS_DIR "/pictureflow_emptyslide.bmp"
|
#define EMPTY_SLIDE_BMP PLUGIN_DEMOS_DIR "/pictureflow_emptyslide.bmp"
|
||||||
|
#define SPLASH_BMP PLUGIN_DEMOS_DIR "/pictureflow_splash.bmp"
|
||||||
|
|
||||||
/* Error return values */
|
/* Error return values */
|
||||||
#define ERROR_NO_ALBUMS -1
|
#define ERROR_NO_ALBUMS -1
|
||||||
|
@ -278,10 +277,6 @@ struct pfraw_header {
|
||||||
int32_t height; /* bmap height in pixels */
|
int32_t height; /* bmap height in pixels */
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct picture logos[]={
|
|
||||||
{pictureflow_logo, BMPWIDTH_pictureflow_logo, BMPHEIGHT_pictureflow_logo},
|
|
||||||
};
|
|
||||||
|
|
||||||
enum show_album_name_values { album_name_hide = 0, album_name_bottom,
|
enum show_album_name_values { album_name_hide = 0, album_name_bottom,
|
||||||
album_name_top };
|
album_name_top };
|
||||||
static char* show_album_name_conf[] =
|
static char* show_album_name_conf[] =
|
||||||
|
@ -927,9 +922,24 @@ bool get_albumart_for_index_from_db(const int slide_index, char *buf,
|
||||||
*/
|
*/
|
||||||
void draw_splashscreen(void)
|
void draw_splashscreen(void)
|
||||||
{
|
{
|
||||||
|
unsigned char * buf_tmp = buf;
|
||||||
|
size_t buf_tmp_size = buf_size;
|
||||||
struct screen* display = rb->screens[0];
|
struct screen* display = rb->screens[0];
|
||||||
const struct picture* logo = &(logos[display->screen_type]);
|
#if FB_DATA_SZ > 1
|
||||||
|
ALIGN_BUFFER(buf_tmp, buf_tmp_size, sizeof(fb_data));
|
||||||
|
#endif
|
||||||
|
struct bitmap logo = {
|
||||||
|
#if LCD_WIDTH < 200
|
||||||
|
.width = 100,
|
||||||
|
.height = 18,
|
||||||
|
#else
|
||||||
|
.width = 193,
|
||||||
|
.height = 34,
|
||||||
|
#endif
|
||||||
|
.data = buf_tmp
|
||||||
|
};
|
||||||
|
int ret = rb->read_bmp_file(SPLASH_BMP, &logo, buf_tmp_size, FORMAT_NATIVE,
|
||||||
|
NULL);
|
||||||
#if LCD_DEPTH > 1
|
#if LCD_DEPTH > 1
|
||||||
rb->lcd_set_background(N_BRIGHT(0));
|
rb->lcd_set_background(N_BRIGHT(0));
|
||||||
rb->lcd_set_foreground(N_BRIGHT(255));
|
rb->lcd_set_foreground(N_BRIGHT(255));
|
||||||
|
@ -938,13 +948,17 @@ void draw_splashscreen(void)
|
||||||
#endif
|
#endif
|
||||||
rb->lcd_clear_display();
|
rb->lcd_clear_display();
|
||||||
|
|
||||||
|
if (ret > 0)
|
||||||
|
{
|
||||||
#if LCD_DEPTH == 1 /* Mono LCDs need the logo inverted */
|
#if LCD_DEPTH == 1 /* Mono LCDs need the logo inverted */
|
||||||
rb->lcd_set_drawmode(PICTUREFLOW_DRMODE ^ DRMODE_INVERSEVID);
|
rb->lcd_set_drawmode(PICTUREFLOW_DRMODE ^ DRMODE_INVERSEVID);
|
||||||
picture_draw(display, logo, (LCD_WIDTH - logo->width) / 2, 10);
|
|
||||||
rb->lcd_set_drawmode(PICTUREFLOW_DRMODE);
|
|
||||||
#else
|
|
||||||
picture_draw(display, logo, (LCD_WIDTH - logo->width) / 2, 10);
|
|
||||||
#endif
|
#endif
|
||||||
|
display->bitmap(logo.data, (LCD_WIDTH - logo.width) / 2, 10,
|
||||||
|
logo.width, logo.height);
|
||||||
|
#if LCD_DEPTH == 1 /* Mono LCDs need the logo inverted */
|
||||||
|
rb->lcd_set_drawmode(PICTUREFLOW_DRMODE);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
rb->lcd_update();
|
rb->lcd_update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,6 +95,8 @@ sub gettargetinfo {
|
||||||
#ifdef HAVE_LCD_BITMAP
|
#ifdef HAVE_LCD_BITMAP
|
||||||
Bitmap: yes
|
Bitmap: yes
|
||||||
Depth: LCD_DEPTH
|
Depth: LCD_DEPTH
|
||||||
|
LCD Width: LCD_WIDTH
|
||||||
|
LCD Height: LCD_HEIGHT
|
||||||
Icon Width: CONFIG_DEFAULT_ICON_WIDTH
|
Icon Width: CONFIG_DEFAULT_ICON_WIDTH
|
||||||
Icon Height: CONFIG_DEFAULT_ICON_HEIGHT
|
Icon Height: CONFIG_DEFAULT_ICON_HEIGHT
|
||||||
#endif
|
#endif
|
||||||
|
@ -119,7 +121,7 @@ STOP
|
||||||
|
|
||||||
open(TARGET, "$c|");
|
open(TARGET, "$c|");
|
||||||
|
|
||||||
my ($bitmap, $depth, $swcodec, $icon_h, $icon_w);
|
my ($bitmap, $width, $height, $depth, $swcodec, $icon_h, $icon_w);
|
||||||
my ($remote_depth, $remote_icon_h, $remote_icon_w);
|
my ($remote_depth, $remote_icon_h, $remote_icon_w);
|
||||||
my ($recording);
|
my ($recording);
|
||||||
my $icon_count = 1;
|
my $icon_count = 1;
|
||||||
|
@ -131,6 +133,12 @@ STOP
|
||||||
elsif($_ =~ /^Depth: (\d*)/) {
|
elsif($_ =~ /^Depth: (\d*)/) {
|
||||||
$depth = $1;
|
$depth = $1;
|
||||||
}
|
}
|
||||||
|
elsif($_ =~ /^LCD Width: (\d*)/) {
|
||||||
|
$width = $1;
|
||||||
|
}
|
||||||
|
elsif($_ =~ /^LCD Height: (\d*)/) {
|
||||||
|
$height = $1;
|
||||||
|
}
|
||||||
elsif($_ =~ /^Icon Width: (\d*)/) {
|
elsif($_ =~ /^Icon Width: (\d*)/) {
|
||||||
$icon_w = $1;
|
$icon_w = $1;
|
||||||
}
|
}
|
||||||
|
@ -157,7 +165,7 @@ STOP
|
||||||
close(TARGET);
|
close(TARGET);
|
||||||
unlink("gcctemp");
|
unlink("gcctemp");
|
||||||
|
|
||||||
return ($bitmap, $depth, $icon_w, $icon_h, $recording,
|
return ($bitmap, $depth, $width, $height, $icon_w, $icon_h, $recording,
|
||||||
$swcodec, $remote_depth, $remote_icon_w, $remote_icon_h);
|
$swcodec, $remote_depth, $remote_icon_w, $remote_icon_h);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,8 +182,9 @@ sub buildzip {
|
||||||
|
|
||||||
print "buildzip: image=$image fonts=$fonts\n" if $verbose;
|
print "buildzip: image=$image fonts=$fonts\n" if $verbose;
|
||||||
|
|
||||||
my ($bitmap, $depth, $icon_w, $icon_h, $recording, $swcodec,
|
my ($bitmap, $depth, $width, $height, $icon_w, $icon_h, $recording,
|
||||||
$remote_depth, $remote_icon_w, $remote_icon_h) = &gettargetinfo();
|
$swcodec, $remote_depth, $remote_icon_w, $remote_icon_h) =
|
||||||
|
&gettargetinfo();
|
||||||
|
|
||||||
# print "Bitmap: $bitmap\nDepth: $depth\nSwcodec: $swcodec\n";
|
# print "Bitmap: $bitmap\nDepth: $depth\nSwcodec: $swcodec\n";
|
||||||
|
|
||||||
|
@ -351,7 +360,17 @@ STOP
|
||||||
}
|
}
|
||||||
|
|
||||||
if(-e "$rbdir/rocks/demos/pictureflow.rock") {
|
if(-e "$rbdir/rocks/demos/pictureflow.rock") {
|
||||||
copy("$ROOT/apps/plugins/bitmaps/native/pictureflow_emptyslide.100x100x16.bmp", "$rbdir/rocks/demos/pictureflow_emptyslide.bmp");
|
copy("$ROOT/apps/plugins/bitmaps/native/pictureflow_emptyslide.100x100x16.bmp",
|
||||||
|
"$rbdir/rocks/demos/pictureflow_emptyslide.bmp");
|
||||||
|
my ($pf_logo);
|
||||||
|
if ($width < 200) {
|
||||||
|
$pf_logo = "pictureflow_logo.100x18x16.bmp";
|
||||||
|
} else {
|
||||||
|
$pf_logo = "pictureflow_logo.193x34x16.bmp";
|
||||||
|
}
|
||||||
|
copy("$ROOT/apps/plugins/bitmaps/native/$pf_logo",
|
||||||
|
"$rbdir/rocks/demos/pictureflow_splash.bmp");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if($image) {
|
if($image) {
|
||||||
|
|
Loading…
Reference in a new issue