Mail Archives: djgpp/2003/01/08/18:16:39
"Joel Saunders" <jbs30000 AT aol DOT com> wrote in message news:<bcd4cba120fadbd18cb606881c88ae87 DOT 62691 AT mygate DOT mailgate DOT org>...
> I made a post about this yesterday, but it never showed up, so I'll try
> again, and hope it posts this time.
> For a basic bmp loader I made, the struct to hold the bmp header doesn't
> work. I used __attribute__((__packed__)) after each item, but it's no
> good. I gave the file for the program, a C extention, instead of a cpp
> extention, so I know that probably makes some difference.
> Here's the header...
> struct BMP_Header {
> unsigned int BM __attribute__((__packed__));
> unsigned long File_Size __attribute__((__packed__));
> unsigned int R_1 __attribute__((__packed__)); // Reserved 1
> unsigned int R_2 __attribute__((__packed__)); // Reserved 2
> unsigned long BMP_Offset __attribute__((__packed__));
> unsigned long Header_Info __attribute__((__packed__));
> unsigned long BMP_Width __attribute__((__packed__));
> unsigned long BMP_Height __attribute__((__packed__));
> unsigned int BMP_Planes __attribute__((__packed__));
> unsigned int BPP __attribute__((__packed__));
> unsigned long Compression __attribute__((__packed__));
> unsigned long BMP_Size __attribute__((__packed__));
> unsigned long Width_PPM __attribute__((__packed__));
> unsigned long Height_PPM __attribute__((__packed__));
> unsigned long Num_of_Colors __attribute__((__packed__));
> unsigned long Important_Colors __attribute__((__packed__));
> }image;
> Here's what I had to use instead of the header:
> unsigned char image[54];
> #define image_BM ((int *)&image[0])[0]
> #define image_File_Size ((long *)&image[2])[0]
> #define image_R_1 ((int *)&image[6])[0]
> #define image_R_2 ((int *)&image[8])[0]
> #define image_BMP_Offset ((long *)&image[10])[0]
> #define image_Header_Info ((long *)&image[14])[0]
> #define image_BMP_Width ((long *)&image[18])[0]
> #define image_BMP_Height ((long *)&image[22])[0]
> #define image_BMP_Planes ((int *)&image[26])[0]
> #define image_BPP ((int *)&image[28])[0]
> #define image_Compression ((long *)&image[30])[0]
> #define image_BMP_Size ((long *)&image[34])[0]
> #define image_Width_PPM ((long *)&image[38])[0]
> #define image_Height_PPM ((long *)&image[42])[0]
> #define image_Num_of_Colors ((long *)&image[46])[0]
> #define image_Important_Colors ((long *)&image[50])[0]
> What can I do to make the struct work? All help is appreciated.
> Thanks.
An "int" in djgpp is the same as a "long". Try "short int" instead.
-uso.
- Raw text -