|
@@ -46,7 +46,7 @@ int main (int argc, char *argv[])
|
|
FILE *fp;
|
|
FILE *fp;
|
|
bitmap_t bmp;
|
|
bitmap_t bmp;
|
|
bitmap_t *b = &bmp;
|
|
bitmap_t *b = &bmp;
|
|
- uint16_t n_colors;
|
|
|
|
|
|
+ uint16_t data_offset, n_colors;
|
|
|
|
|
|
if (argc < 2) {
|
|
if (argc < 2) {
|
|
fprintf (stderr, "Usage: %s file\n", argv[0]);
|
|
fprintf (stderr, "Usage: %s file\n", argv[0]);
|
|
@@ -67,7 +67,9 @@ int main (int argc, char *argv[])
|
|
* read width and height of the image, and the number of colors used;
|
|
* read width and height of the image, and the number of colors used;
|
|
* ignore the rest
|
|
* ignore the rest
|
|
*/
|
|
*/
|
|
- skip_bytes (fp, 16);
|
|
|
|
|
|
+ skip_bytes (fp, 8);
|
|
|
|
+ fread (&data_offset, sizeof (uint16_t), 1, fp);
|
|
|
|
+ skip_bytes (fp, 6);
|
|
fread (&b->width, sizeof (uint16_t), 1, fp);
|
|
fread (&b->width, sizeof (uint16_t), 1, fp);
|
|
skip_bytes (fp, 2);
|
|
skip_bytes (fp, 2);
|
|
fread (&b->height, sizeof (uint16_t), 1, fp);
|
|
fread (&b->height, sizeof (uint16_t), 1, fp);
|
|
@@ -78,6 +80,7 @@ int main (int argc, char *argv[])
|
|
/*
|
|
/*
|
|
* Repair endianess.
|
|
* Repair endianess.
|
|
*/
|
|
*/
|
|
|
|
+ data_offset = le_short(data_offset);
|
|
b->width = le_short(b->width);
|
|
b->width = le_short(b->width);
|
|
b->height = le_short(b->height);
|
|
b->height = le_short(b->height);
|
|
n_colors = le_short(n_colors);
|
|
n_colors = le_short(n_colors);
|
|
@@ -129,6 +132,9 @@ int main (int argc, char *argv[])
|
|
);
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /* seek to offset indicated by file header */
|
|
|
|
+ fseek(fp, (long)data_offset, SEEK_SET);
|
|
|
|
+
|
|
/* read the bitmap; leave room for default color map */
|
|
/* read the bitmap; leave room for default color map */
|
|
printf ("\n");
|
|
printf ("\n");
|
|
printf ("};\n");
|
|
printf ("};\n");
|