1
0
Fork 0
forked from len0rd/rockbox

First attempt at generating and using .h files from bitmaps using bmp2rb. The .h files are generated for both the core bitmaps and the plugins, but are only currently being used in the core.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8759 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Dave Chapman 2006-02-21 01:23:30 +00:00
parent d04dbca00b
commit 95538f6949
13 changed files with 85 additions and 54 deletions

View file

@ -8,7 +8,7 @@
#
INCLUDES= -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I. -I$(BUILDDIR) \
-I$(OBJDIR)
-I$(BUILDDIR)/bitmaps -I$(OBJDIR)
DEPFILE = $(OBJDIR)/dep-apps
LDS := $(FIRMDIR)/app.lds
@ -85,6 +85,8 @@ endif
all: $(REALBIN) $(FLASHFILE) $(CODECS) $(ROCKS) $(ARCHOSROM)
endif
$(DEPFILE): $(BITMAPLIBS)
dep: $(DEPFILE)
build-codecs:
@ -212,6 +214,7 @@ clean:
@$(MAKE) -C plugins clean OBJDIR=$(OBJDIR)/plugins
@$(MAKE) -C codecs clean OBJDIR=$(OBJDIR)/codecs
@rm -rf $(OBJDIR)/recorder $(OBJDIR)/player
@rm -rf $(BUILDDIR)/bitmaps
ifdef SIMVER
@$(MAKE) -C $(SIMDIR) clean
endif

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-mono
BMP2RB = $(BMP2RB_MONO)
OUTPUT = $(BUILDDIR)/libbitmapsmono.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-native
BMP2RB = $(BMP2RB_NATIVE)
OUTPUT = $(BUILDDIR)/libbitmapsnative.a
BMPINCDIR = $(BUILDDIR)/bitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-remotemono
BMP2RB = $(BMP2RB_REMOTEMONO)
OUTPUT = $(BUILDDIR)/libbitmapsremotemono.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-remotenative
BMP2RB = $(BMP2RB_REMOTENATIVE)
OUTPUT = $(BUILDDIR)/libbitmapsremotenative.a
BMPINCDIR = $(BUILDDIR)/bitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -604,12 +604,12 @@ int show_logo( void )
int font_h, font_w;
lcd_clear_display();
lcd_bitmap(rockboxlogo, 0, 10, ROCKBOXLOGO_WIDTH, ROCKBOXLOGO_HEIGHT);
lcd_bitmap(rockboxlogo, 0, 10, BMPWIDTH_rockboxlogo, BMPHEIGHT_rockboxlogo);
#ifdef HAVE_REMOTE_LCD
lcd_remote_clear_display();
lcd_remote_bitmap(remote_rockboxlogo,10,14,REMOTE_ROCKBOXLOGO_WIDTH,
REMOTE_ROCKBOXLOGO_HEIGHT);
lcd_remote_bitmap(remote_rockboxlogo,10,14,BMPWIDTH_remote_rockboxlogo,
BMPHEIGHT_remote_rockboxlogo);
#endif
snprintf(version, sizeof(version), "Ver. %s", appsversion);

View file

@ -8,7 +8,8 @@
#
INCLUDES = -I$(FIRMDIR)/include -I$(FIRMDIR)/export -I$(FIRMDIR)/common \
-I$(FIRMDIR)/drivers -I$(APPSDIR) -Ilib -I$(BUILDDIR)
-I$(FIRMDIR)/drivers -I$(APPSDIR) -Ilib -I$(BUILDDIR) \
-I$(BUILDDIR)/pluginbitmaps
CFLAGS = $(GCCOPTS) $(INCLUDES) $(TARGET) $(EXTRA_DEFINES) \
-DTARGET_ID=$(TARGET_ID) -DMEM=${MEMORYSIZE} -DPLUGIN
@ -72,6 +73,10 @@ endif
.PHONY: $(SUBDIRS)
all: $(BUILDDIR)/libplugin.a $(ROCKS) $(SUBDIRS) $(DEPFILE)
$(DEPFILE): $(BITMAPLIBS)
dep: $(DEPFILE)
$(BUILDDIR)/credits.raw: $(DOCSDIR)/CREDITS
@echo "create credits.raw"
$(SILENT)perl credits.pl < $< > $@
@ -197,5 +202,6 @@ clean:
$(SILENT)$(MAKE) -C bitmaps/remote_native clean OBJDIR=$(OBJDIR)/bitmaps/remote_native
$(SILENT)$(MAKE) -C rockboy clean OBJDIR=$(OBJDIR)/rockboy
$(SILENT)$(MAKE) -C searchengine clean OBJDIR=$(OBJDIR)/searchengine
@rm -rf $(BUILDDIR)/pluginbitmaps
-include $(DEPFILE)

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-mono
BMP2RB = $(BMP2RB_MONO)
OUTPUT = $(BUILDDIR)/libpluginbitmapsmono.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-native
BMP2RB = $(BMP2RB_NATIVE)
OUTPUT = $(BUILDDIR)/libpluginbitmapsnative.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-remotemono
BMP2RB = $(BMP2RB_REMOTEMONO)
OUTPUT = $(BUILDDIR)/libpluginbitmapsremotemono.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,6 +21,7 @@ DEPFILE = $(OBJDIR)/dep-bitmaps-remotenative
BMP2RB = $(BMP2RB_REMOTENATIVE)
OUTPUT = $(BUILDDIR)/libpluginbitmapsremotenative.a
BMPINCDIR = $(BUILDDIR)/pluginbitmaps
include $(TOOLSDIR)/makebmp.inc

View file

@ -21,11 +21,19 @@
#include <lcd.h>
#ifdef HAVE_LCD_BITMAP
/* External bitmaps */
#include <rockboxlogo.h>
#ifdef HAVE_REMOTE_LCD
#include <remote_rockboxlogo.h>
#endif
/*
* Icons of size 6x8 pixels
*/
#ifdef HAVE_LCD_BITMAP
/* Symbolic names for icons */
enum icons_5x8 {
@ -78,45 +86,6 @@ extern const unsigned char bitmap_icons_6x8[Icon6x8Last][6];
extern const unsigned char bitmap_icons_7x8[Icon7x8Last][7];
extern const unsigned char bitmap_icon_disk[];
extern const fb_data rockboxlogo[];
#if LCD_DEPTH == 1
/* Archos targets */
#define ROCKBOXLOGO_WIDTH 112
#define ROCKBOXLOGO_HEIGHT 37
#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 2)
/* iRiver H1x0 */
#define ROCKBOXLOGO_WIDTH 160
#define ROCKBOXLOGO_HEIGHT 53
#elif (LCD_WIDTH == 160) && (LCD_DEPTH == 16)
/* iAudio X5 */
#define ROCKBOXLOGO_WIDTH 160
#define ROCKBOXLOGO_HEIGHT 50
#elif (LCD_WIDTH == 176) && (LCD_DEPTH == 16)
/* iPod Nano */
#define ROCKBOXLOGO_WIDTH 176
#define ROCKBOXLOGO_HEIGHT 54
#elif (LCD_WIDTH == 320) && (LCD_DEPTH == 16)
/* iPod Video */
#define ROCKBOXLOGO_WIDTH 320
#define ROCKBOXLOGO_HEIGHT 98
#elif (LCD_WIDTH >= 220) && (LCD_DEPTH == 16)
/* iriver H3x0, iPod Color/Photo */
#define ROCKBOXLOGO_WIDTH 220
#define ROCKBOXLOGO_HEIGHT 68
#endif
#ifdef HAVE_REMOTE_LCD
extern const unsigned char remote_rockboxlogo[];
#define REMOTE_ROCKBOXLOGO_WIDTH 112
#define REMOTE_ROCKBOXLOGO_HEIGHT 37
#endif
#define STATUSBAR_X_POS 0
#define STATUSBAR_Y_POS 0 /* MUST be a multiple of 8 */
#define STATUSBAR_HEIGHT 8

View file

@ -412,22 +412,47 @@ int transform_bitmap(const struct RGBQUAD *src, int width, int height,
* some #define's
****************************************************************************/
void generate_c_source(char *id, int width, int height,
void generate_c_source(char *id, char* header_dir, int width, int height,
const unsigned short *t_bitmap, int t_width,
int t_height, int t_depth)
{
FILE *f;
FILE *fh;
int i, a;
f = stdout;
char header_name[1024];
if (!id || !id[0])
id = "bitmap";
f = stdout;
if (header_dir && header_dir[0])
{
snprintf(header_name,sizeof(header_name),"%s/%s.h",header_dir,id);
fh = fopen(header_name,"w+");
if (fh == NULL)
{
debugf("error - can't open '%s'\n", header_name);
return;
}
fprintf(fh,
"#define BMPHEIGHT_%s %ld\n"
"#define BMPWIDTH_%s %ld\n",
id, height, id, width);
if (t_depth <= 8)
fprintf(fh, "extern const unsigned char %s[];\n", id);
else
fprintf(fh, "extern const unsigned short %s[];\n", id);
fclose(fh);
} else {
fprintf(f,
"#define BMPHEIGHT_%s %ld\n"
"#define BMPWIDTH_%s %ld\n",
id, height, id, width);
}
if (t_depth <= 8)
fprintf(f, "const unsigned char %s[] = {\n", id);
else
@ -478,6 +503,7 @@ void print_usage(void)
{
printf("Usage: %s [-i <id>] [-a] <bitmap file>\n"
"\t-i <id> Bitmap name (default is filename without extension)\n"
"\t-h <dir> Create header file in <dir>/<id>.h\n"
"\t-a Show ascii picture of bitmap\n"
"\t-f <n> Generate destination format n, default = 0\n"
"\t 0 Archos recorder, Ondio, Gmini 120/SP, Iriver H1x0 mono\n"
@ -495,6 +521,7 @@ int main(int argc, char **argv)
{
char *bmp_filename = NULL;
char *id = NULL;
char* header_dir = NULL;
int i;
int ascii = false;
int format = 0;
@ -510,6 +537,23 @@ int main(int argc, char **argv)
{
switch (argv[i][1])
{
case 'h': /* .h filename */
if (argv[i][2])
{
header_dir = &argv[i][2];
}
else if (argc > i+1)
{
header_dir = argv[i+1];
i++;
}
else
{
print_usage();
exit(1);
}
break;
case 'i': /* ID */
if (argv[i][2])
{
@ -600,7 +644,8 @@ int main(int argc, char **argv)
if (transform_bitmap(bitmap, width, height, format, &t_bitmap,
&t_width, &t_height, &t_depth))
exit(1);
generate_c_source(id, width, height, t_bitmap, t_width, t_height, t_depth);
generate_c_source(id, header_dir, width, height, t_bitmap,
t_width, t_height, t_depth);
}
return 0;