truelight@4300: /* $Id$ */ truelight@4300: rubidium@9111: /** @file bmp.h Read and write support for bmps. */ belugas@6123: truelight@4300: #ifndef BMP_H truelight@4300: #define BMP_H truelight@4300: rubidium@8123: #include "gfx_type.h" rubidium@8123: rubidium@6248: struct BmpInfo { truelight@4300: uint32 offset; ///< offset of bitmap data from .bmp file begining truelight@4300: uint32 width; ///< bitmap width truelight@4300: uint32 height; ///< bitmap height truelight@4300: bool os2_bmp; ///< true if OS/2 1.x or windows 2.x bitmap truelight@4300: uint16 bpp; ///< bits per pixel truelight@4300: uint32 compression; ///< compression method (0 = none, 1 = 8-bit RLE, 2 = 4-bit RLE) truelight@4300: uint32 palette_size; ///< number of colors in palette rubidium@6248: }; truelight@4300: rubidium@6248: struct BmpData { truelight@4300: Colour *palette; truelight@4300: byte *bitmap; rubidium@6248: }; truelight@4300: truelight@4300: #define BMP_BUFFER_SIZE 1024 truelight@4300: rubidium@6248: struct BmpBuffer { truelight@4300: byte data[BMP_BUFFER_SIZE]; truelight@4300: int pos; truelight@4300: int read; truelight@4300: FILE *file; truelight@4300: uint real_pos; rubidium@6248: }; truelight@4300: truelight@4300: void BmpInitializeBuffer(BmpBuffer *buffer, FILE *file); truelight@4300: bool BmpReadHeader(BmpBuffer *buffer, BmpInfo *info, BmpData *data); truelight@4300: bool BmpReadBitmap(BmpBuffer *buffer, BmpInfo *info, BmpData *data); truelight@4300: void BmpDestroyData(BmpData *data); truelight@4300: truelight@4300: #endif /* BMP_H */