home *** CD-ROM | disk | FTP | other *** search
- /************************************************************************
- * *
- * BMP bitmap information *
- * *
- * Version 3.00 (02-Feb-1995) *
- * *
- * (C) 1993-5 DEEJ Technology PLC *
- * *
- ************************************************************************/
-
- #include <stdio.h>
- #include <string.h>
- #include "io.h"
- #include "bmp.h"
-
- int main(int argc, char** argv)
- {
- int i;
- uint rgb,r,g,b;
- FILE *file;
- bmp_hdr_str hdr;
-
- if(argc>1 && strcmp(argv[argc-1],"-c")!=0)
- file = fopen(argv[argc-1],"r");
- else
- file = stdin;
-
- if(file == 0)
- {
- fprintf(stderr,"Could not open file\n");
- return(1);
- }
-
- read_struct(LE, (BYTE*)&hdr, bmp_rhdr_descr, file);
-
- printf("ID characters : '%c%c'\n",hdr.id[0],hdr.id[1]);
- printf("File size : %d\n",hdr.file_size);
- printf("Offset to bitmap : %d\n",hdr.bitmap_offset);
- printf("Sub header size : %d\n",hdr.subheader_size);
-
- if(hdr.subheader_size != 12)
- {
- read_struct(LE, (BYTE*)&hdr.width, bmp_shdr1_descr, file);
-
- printf("Width in pixels : %d\n",hdr.width);
- printf("Height in pixels : %d\n",hdr.height);
- printf("Bit planes (1) : %d\n",hdr.bit_planes);
- printf("Bits per pixel : %d\n",hdr.bits_per_pixel);
- printf("Compression scheme : %d\n",hdr.compression);
- printf("Size of bitmap data : %d\n",hdr.bitmap_size);
- printf("X pixels per meter : %d\n",hdr.X_pix_per_meter);
- printf("Y pixels per meter : %d\n",hdr.Y_pix_per_meter);
- printf("No. palette entries : %d\n",hdr.palette_entries);
- printf("Number of colours : %d\n",hdr.colours);
- }
- else
- {
- bmp_shdr2_str shdr;
-
- read_struct(LE, (BYTE*)&shdr, bmp_shdr2_descr, file);
-
- hdr.width = shdr.width;
- hdr.height = shdr.height;
- hdr.bit_planes = shdr.bit_planes;
- hdr.bits_per_pixel = shdr.bits_per_pixel;
- hdr.palette_entries = 1<<shdr.bits_per_pixel;
-
- printf("Width in pixels : %d\n",hdr.width);
- printf("Height in pixels : %d\n",hdr.height);
- printf("Bit planes (1) : %d\n",hdr.bit_planes);
- printf("Bits per pixel : %d\n",hdr.bits_per_pixel);
- }
-
- if(argc>1 && strcmp(argv[1],"-c")==0)
- {
- printf("\n");
- if(hdr.palette_entries!=0)
- {
- printf("Palette red,green,blue\n");
- printf("Palette BBGGRRXX red,green,blue\n");
-
- for(i=0; i<(int)hdr.palette_entries; i++)
- {
- if(hdr.subheader_size == 12)
- {
- r = fgetc(file);
- g = fgetc(file);
- b = fgetc(file);
- rgb = (b<<24) | (g<<16) | (r<<8);
- }
- else
- {
- rgb = endian(BE,fgetdLE(file));
- r = (rgb >> 8) & 0xFF;
- g = (rgb >> 16) & 0xFF;
- b = (rgb >> 24) & 0xFF;
- }
-
- printf("%5d : %08X %3d %3d %3d\n",
- i, rgb, r, g, b);
- }
- }
- else
- {
- printf("BMP has no palette\n");
- }
- }
-
- fclose(file);
- }
-