/ source / tools / src / generateicon.cpp
generateicon.cpp
 1  
 2  #include "compat.h"
 3  #include "kplib.h"
 4  
 5  struct icon {
 6      int32_t width,height;
 7      intptr_t *pixels;
 8      unsigned char *mask;
 9  };
10  
11  int writeicon(FILE *fp, struct icon *ico)
12  {
13      int i;
14  
15      Bfprintf(fp,
16          "#include \"sdl_inc.h\"\n"
17          "#include \"sdlappicon.h\"\n"
18          "\n"
19      );
20      Bfprintf(fp,"static Uint8 sdlappicon_pixels[] = {\n");
21      for (i=0;i<ico->width*ico->height;i++) {
22          if ((i%6) == 0) Bfprintf(fp,"\t");
23          else Bfprintf(fp," ");
24          Bfprintf(fp, "0x%08lx,", (long)B_LITTLE32(ico->pixels[i]));
25          if ((i%6) == 5) Bfprintf(fp,"\n");
26      }
27      if ((i%16) > 0) Bfprintf(fp, "\n");
28      Bfprintf(fp, "};\n\n");
29  
30      Bfprintf(fp,
31          "struct sdlappicon sdlappicon = {\n"
32          "    %d,%d,    // width,height\n"
33          "    sdlappicon_pixels\n"
34          "};\n",
35          ico->width, ico->height
36      );
37  
38      return 0;
39  }
40  
41  int main(int argc, char **argv)
42  {
43      struct icon icon;
44  
45      if (argc<2) {
46          Bfprintf(stderr, "generateicon <picture file>\n");
47          return 1;
48      }
49  
50      memset(&icon, 0, sizeof(icon));
51  
52      engineCreateAllocator();
53      kpzload(argv[1], (intptr_t*)&icon.pixels, &icon.width, &icon.height);
54      if (!icon.pixels) {
55          Bfprintf(stderr, "Failure loading %s\n", argv[1]);
56          return 1;
57      }
58  
59      writeicon(stdout, &icon);
60  
61      xfree(icon.pixels);
62  
63      return 0;
64  }