summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Tools/rawint/src/main.c90
1 files changed, 28 insertions, 62 deletions
diff --git a/Tools/rawint/src/main.c b/Tools/rawint/src/main.c
index 17a6da7..20308cd 100644
--- a/Tools/rawint/src/main.c
+++ b/Tools/rawint/src/main.c
@@ -3,75 +3,41 @@
int main(int argc, char *argv[]) {
int retval;
- FILE *fbmp, *fraw;
- unsigned char mrgb[3], mask, *bitmap;
- int row, col, x, y, offset;
+ FILE *fraw, *frawmask, *frawint;
+ unsigned char mrgb[3];
+ int totsize, x, y;
retval = 0;
-
- if (4 != argc) {
- fprintf(stderr, "bmpraw (C) 2004 by oliver\n");
- fprintf(stderr, "Usage: %s {24|8} in.bmp out.raw\n", argv[0]);
- } else {
- if (NULL == (fbmp = fopen(argv[2], "rb"))) {
+
+ if (argc < 4) {
+ fprintf(stderr, "%s (C) 2004 by oliver\n", argv[0]);
+ fprintf(stderr, "Usage: %s x-res y-res in.raw mask.raw out.int\n",
+ argv[0]);
+ } else {
+ x = atoi(argv[1]);
+ y = atoi(argv[2]);
+ if (NULL == (fraw = fopen(argv[3], "rb"))) {
perror("fopen(IMAGE_FILE)");
retval = 1;
- } else if (NULL == (fraw = fopen(argv[3], "wb"))) {
+ } else if (NULL == (frawmask = fopen(argv[4], "rb"))) {
+ perror("fopen(MASK_FILE)");
+ retval = 1;
+ } else if (NULL == (frawint = fopen(argv[5], "wb"))) {
perror("fopen(OUT_FILE)");
retval = 1;
- } else {
- fseek(fbmp, 10L, SEEK_SET);
- fread(mrgb, 1, 4, fbmp);
- offset = mrgb[3];
- offset <<= 8;
- offset += mrgb[2];
- offset <<= 8;
- offset += mrgb[1];
- offset <<= 8;
- offset += mrgb[0];
- fseek(fbmp, 18L, SEEK_SET);
- fread(mrgb, 1, 4, fbmp);
- x = mrgb[3];
- x <<= 8;
- x += mrgb[2];
- x <<= 8;
- x += mrgb[1];
- x <<= 8;
- x += mrgb[0];
- fseek(fbmp, 22L, SEEK_SET);
- fread(mrgb, 1, 4, fbmp);
- y = mrgb[3];
- y <<= 8;
- y += mrgb[2];
- y <<= 8;
- y += mrgb[1];
- y <<= 8;
- y += mrgb[0];
- fseek(fbmp, offset, SEEK_SET);
- printf("Image Resolution: %dx%d\n", x, y);
-
- bitmap = malloc(4 * (x * y));
- for (row = y; row; row--) {
- for (col = 0; col != x; col++) {
- if (24 == atoi(argv[1])) {
- fread(&mrgb, sizeof(char), 3, fbmp);
- bitmap[(((row *x) +col) *3) +0] = mrgb[2];
- bitmap[(((row *x) +col) *3) +1] = mrgb[1];
- bitmap[(((row *x) +col) *3) +2] = mrgb[0];
- } else if (8 == atoi(argv[1])) {
- fread(&mrgb, sizeof(char), 1, fbmp);
- bitmap[((row *x) +col)] = mrgb[0];
- }
- }
- }
-
- fwrite(bitmap, (24 == atoi(argv[1])) ? 3 : 1, (long)(x * y), fraw);
- fprintf(stdout, "Converting to raw\n");
- free(bitmap);
- fclose(fbmp);
- fclose(fraw);
+ } else {
+ for (totsize = 0; totsize < (x*y); totsize++) {
+ fread(&mrgb, 1, 1, frawmask);
+ fwrite(&mrgb, 1, 1, frawint);
+ fread(&mrgb, 1, 3, fraw);
+ fwrite(&mrgb, 1, 3, frawint);
+ }
+ fprintf(stdout, "Done interleaving\n");
+ fclose(fraw);
+ fclose(frawmask);
+ fclose(frawint);
}
- }
+ }
return retval;
}