int i, mode = 0;
int text = 0;
int renibble = 0;
- char *fname = 0, *outfname = 0;
- struct image img;
+ char *outfname = 0;
+ char *infiles[256];
+ int num_infiles = 0;
+ struct image img, tmpimg;
FILE *out = stdout;
for(i=1; i<argc; i++) {
return 1;
}
} else {
- if(fname) {
- fprintf(stderr, "unexpected argument: %s\n", argv[i]);
- print_usage(argv[0]);
- return 1;
- }
- fname = argv[i];
+ infiles[num_infiles++] = argv[i];
}
}
- if(!fname) {
+ if(!num_infiles) {
fprintf(stderr, "pass the filename of a PNG file\n");
return 1;
}
- if(load_image(&img, fname) == -1) {
- fprintf(stderr, "failed to load PNG file: %s\n", fname);
+ if(load_image(&img, infiles[0]) == -1) {
+ fprintf(stderr, "failed to load PNG file: %s\n", infiles[0]);
return 1;
}
+ for(i=1; i<num_infiles; i++) {
+ if(load_image(&tmpimg, infiles[i]) == -1) {
+ fprintf(stderr, "failed to load PNG file: %s\n", infiles[i]);
+ return 1;
+ }
+ if(tmpimg.width != img.width || tmpimg.height != img.height) {
+ fprintf(stderr, "size mismatch: first image (%s) is %dx%d, %s is %dx%d\n",
+ infiles[0], img.width, img.height, infiles[i], tmpimg.width, tmpimg.height);
+ return 1;
+ }
+ if(tmpimg.bpp != img.bpp) {
+ fprintf(stderr, "bpp mismatch: first image (%s) is %d bpp, %s is %d bpp\n",
+ infiles[0], img.bpp, infiles[i], img.bpp);
+ return 1;
+ }
+
+ overlay_key(&tmpimg, 0, &img);
+ }
+
if(img.bpp == 4 && renibble) {
unsigned char *ptr = img.pixels;
for(i=0; i<img.width * img.height; i++) {
printf("%d %d %d\n", img.cmap[i].r, img.cmap[i].g, img.cmap[i].b);
}
} else {
- fwrite(img.cmap, sizeof img.cmap[0], img.cmap_ncolors, out);
+ /*fwrite(img.cmap, sizeof img.cmap[0], img.cmap_ncolors, out);*/
+ fwrite(img.cmap, sizeof img.cmap[0], 1 << img.bpp, out);
}
break;