summaryrefslogtreecommitdiff
path: root/tools/bmp2rb.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bmp2rb.c')
-rw-r--r--tools/bmp2rb.c39
1 files changed, 35 insertions, 4 deletions
diff --git a/tools/bmp2rb.c b/tools/bmp2rb.c
index f9f554a304..7fee1e6177 100644
--- a/tools/bmp2rb.c
+++ b/tools/bmp2rb.c
@@ -453,19 +453,21 @@ int transform_bitmap(const struct RGBQUAD *src, int width, int height,
453 453
454void generate_c_source(char *id, char* header_dir, int width, int height, 454void generate_c_source(char *id, char* header_dir, int width, int height,
455 const unsigned short *t_bitmap, int t_width, 455 const unsigned short *t_bitmap, int t_width,
456 int t_height, int t_depth) 456 int t_height, int t_depth, bool t_mono, bool create_bm)
457{ 457{
458 FILE *f; 458 FILE *f;
459 FILE *fh; 459 FILE *fh;
460 int i, a; 460 int i, a;
461 char header_name[1024]; 461 char header_name[1024];
462 bool have_header = header_dir && header_dir[0];
463 create_bm = have_header && create_bm;
462 464
463 if (!id || !id[0]) 465 if (!id || !id[0])
464 id = "bitmap"; 466 id = "bitmap";
465 467
466 f = stdout; 468 f = stdout;
467 469
468 if (header_dir && header_dir[0]) 470 if (have_header)
469 { 471 {
470 snprintf(header_name,sizeof(header_name),"%s/%s.h",header_dir,id); 472 snprintf(header_name,sizeof(header_name),"%s/%s.h",header_dir,id);
471 fh = fopen(header_name,"w+"); 473 fh = fopen(header_name,"w+");
@@ -484,6 +486,11 @@ void generate_c_source(char *id, char* header_dir, int width, int height,
484 else 486 else
485 fprintf(fh, "extern const unsigned short %s[];\n", id); 487 fprintf(fh, "extern const unsigned short %s[];\n", id);
486 488
489 if (create_bm)
490 {
491 fprintf(f, "#include \"lcd.h\"\n");
492 fprintf(fh, "extern const struct bitmap bm_%s;\n", id);
493 }
487 fclose(fh); 494 fclose(fh);
488 } else { 495 } else {
489 fprintf(f, 496 fprintf(f,
@@ -492,6 +499,10 @@ void generate_c_source(char *id, char* header_dir, int width, int height,
492 id, height, id, width); 499 id, height, id, width);
493 } 500 }
494 501
502 if (create_bm) {
503 fprintf(f, "#include \"%s\"\n", header_name);
504 }
505
495 if (t_depth <= 8) 506 if (t_depth <= 8)
496 fprintf(f, "const unsigned char %s[] = {\n", id); 507 fprintf(f, "const unsigned char %s[] = {\n", id);
497 else 508 else
@@ -511,7 +522,20 @@ void generate_c_source(char *id, char* header_dir, int width, int height,
511 fprintf(f, "\n"); 522 fprintf(f, "\n");
512 } 523 }
513 524
514 fprintf(f, "\n};\n"); 525 fprintf(f, "\n};\n\n");
526
527 if (create_bm) {
528 char format_line[] = " .format = FORMAT_NATIVE, \n";
529 fprintf(f, "const struct bitmap bm_%s = { \n"
530 " .width = BMPWIDTH_%s, \n"
531 " .height = BMPHEIGHT_%s, \n"
532 "%s"
533 " .data = (unsigned char*)%s,\n"
534 "};\n",
535 id, id, id,
536 t_mono ? "" : format_line,
537 id);
538 }
515} 539}
516 540
517void generate_raw_file(const unsigned short *t_bitmap, 541void generate_raw_file(const unsigned short *t_bitmap,
@@ -573,6 +597,7 @@ void print_usage(void)
573 "\t-i <id> Bitmap name (default is filename without extension)\n" 597 "\t-i <id> Bitmap name (default is filename without extension)\n"
574 "\t-h <dir> Create header file in <dir>/<id>.h\n" 598 "\t-h <dir> Create header file in <dir>/<id>.h\n"
575 "\t-a Show ascii picture of bitmap\n" 599 "\t-a Show ascii picture of bitmap\n"
600 "\t-b Create bitmap struct along with pixel array\n"
576 "\t-r Generate RAW file (little-endian)\n" 601 "\t-r Generate RAW file (little-endian)\n"
577 "\t-f <n> Generate destination format n, default = 0\n" 602 "\t-f <n> Generate destination format n, default = 0\n"
578 "\t 0 Archos recorder, Ondio, Iriver H1x0 mono\n" 603 "\t 0 Archos recorder, Ondio, Iriver H1x0 mono\n"
@@ -601,6 +626,7 @@ int main(int argc, char **argv)
601 int width, height; 626 int width, height;
602 int t_width, t_height, t_depth; 627 int t_width, t_height, t_depth;
603 bool raw = false; 628 bool raw = false;
629 bool create_bm = false;
604 630
605 631
606 for (i = 1;i < argc;i++) 632 for (i = 1;i < argc;i++)
@@ -647,6 +673,10 @@ int main(int argc, char **argv)
647 ascii = true; 673 ascii = true;
648 break; 674 break;
649 675
676 case 'b':
677 create_bm = true;
678 break;
679
650 case 'r': /* Raw File */ 680 case 'r': /* Raw File */
651 raw = true; 681 raw = true;
652 break; 682 break;
@@ -724,7 +754,8 @@ int main(int argc, char **argv)
724 generate_raw_file(t_bitmap, t_width, t_height, t_depth); 754 generate_raw_file(t_bitmap, t_width, t_height, t_depth);
725 else 755 else
726 generate_c_source(id, header_dir, width, height, t_bitmap, 756 generate_c_source(id, header_dir, width, height, t_bitmap,
727 t_width, t_height, t_depth); 757 t_width, t_height, t_depth,
758 format <= 1, create_bm);
728 } 759 }
729 760
730 return 0; 761 return 0;