www.pudn.com > flightsim.rar > bitmap.h


/* 
 * Windows BMP file definitions for OpenGL. 
 * 
 * Written by Michael Sweet. 
 */ 
 
#ifndef _BITMAP_H_ 
#  define _BITMAP_H_ 
 
/* 
 * Include necessary headers. 
 */ 
 
#  include  
#  ifdef WIN32 
#    include  
#    include  
#  endif /* WIN32 */ 
 
/* 
 * Make this header file work with C and C++ source code... 
 */ 
 
#  ifdef __cplusplus 
extern "C" { 
#  endif /* __cplusplus */ 
 
 
/* 
 * Bitmap file data structures (these are defined in  under 
 * Windows...) 
 * 
 * Note that most Windows compilers will pack the following structures, so 
 * when reading them under MacOS or UNIX we need to read individual fields 
 * to avoid differences in alignment... 
 */ 
 
#  ifndef WIN32 
typedef struct                       /**** BMP file header structure ****/ 
    { 
    unsigned short bfType;           /* Magic number for file */ 
    unsigned int   bfSize;           /* Size of file */ 
    unsigned short bfReserved1;      /* Reserved */ 
    unsigned short bfReserved2;      /* ... */ 
    unsigned int   bfOffBits;        /* Offset to bitmap data */ 
    } BITMAPFILEHEADER; 
 
#  define BF_TYPE 0x4D42             /* "MB" */ 
 
typedef struct                       /**** BMP file info structure ****/ 
    { 
    unsigned int   biSize;           /* Size of info header */ 
    int            biWidth;          /* Width of image */ 
    int            biHeight;         /* Height of image */ 
    unsigned short biPlanes;         /* Number of color planes */ 
    unsigned short biBitCount;       /* Number of bits per pixel */ 
    unsigned int   biCompression;    /* Type of compression to use */ 
    unsigned int   biSizeImage;      /* Size of image data */ 
    int            biXPelsPerMeter;  /* X pixels per meter */ 
    int            biYPelsPerMeter;  /* Y pixels per meter */ 
    unsigned int   biClrUsed;        /* Number of colors used */ 
    unsigned int   biClrImportant;   /* Number of important colors */ 
    } BITMAPINFOHEADER; 
 
/* 
 * Constants for the biCompression field... 
 */ 
 
#  define BI_RGB       0             /* No compression - straight BGR data */ 
#  define BI_RLE8      1             /* 8-bit run-length compression */ 
#  define BI_RLE4      2             /* 4-bit run-length compression */ 
#  define BI_BITFIELDS 3             /* RGB bitmap with RGB masks */ 
 
typedef struct                       /**** Colormap entry structure ****/ 
    { 
    unsigned char  rgbBlue;          /* Blue value */ 
    unsigned char  rgbGreen;         /* Green value */ 
    unsigned char  rgbRed;           /* Red value */ 
    unsigned char  rgbReserved;      /* Reserved */ 
    } RGBQUAD; 
 
typedef struct                       /**** Bitmap information structure ****/ 
    { 
    BITMAPINFOHEADER bmiHeader;      /* Image header */ 
    RGBQUAD          bmiColors[256]; /* Image colormap */ 
    } BITMAPINFO; 
#  endif /* !WIN32 */ 
 
/* 
 * Prototypes... 
 */ 
 
extern GLubyte *LoadDIBitmap(const char *filename, BITMAPINFO **info); 
extern int     SaveDIBitmap(const char *filename, BITMAPINFO *info, 
                            GLubyte *bits); 
 
#  ifdef __cplusplus 
} 
#  endif /* __cplusplus */ 
#endif /* !_BITMAP_H_ */