]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - plugins/image/bmp.h
apply misc fixes from Markus Fischer and Rambetter
[xonotic/netradiant.git] / plugins / image / bmp.h
index 9cd75be8025e94d2167b1ff34f628542b8525043..ea93165cdb58e61b336a40bfcdcfb8809037a6db 100644 (file)
@@ -1,6 +1,6 @@
 /*
-Copyright (C) 2001-2006, William Joseph.
-All Rights Reserved.
+Copyright (C) 1999-2007 id Software, Inc. and contributors.
+For a list of contributors, see the accompanying CONTRIBUTORS file.
 
 This file is part of GtkRadiant.
 
@@ -19,13 +19,82 @@ along with GtkRadiant; if not, write to the Free Software
 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */
 
-#if !defined (INCLUDED_BMP_H)
-#define INCLUDED_BMP_H
+#ifndef _BMP_H
+#define _BMP_H
 
-class Image;
-class ArchiveFile;
+#define xBI_NONE  0
+#define xBI_RGB   0
+#define xBI_RLE4  2
+#define xBI_RLE8  1
 
-Image* LoadBMP(ArchiveFile& file);
+#define BMP_SIGNATURE_WORD  0x4d42
 
-#endif
+#pragma pack(push)
+#pragma pack(1)
+
+typedef struct {
+    unsigned short    bfType;       // signature - 'BM'
+    unsigned long     bfSize;       // file size in bytes
+    unsigned short    bfReserved1;  // 0
+    unsigned short    bfReserved2;  // 0
+    unsigned long     bfOffBits;    // offset to bitmap
+} bmphd_t;
+
+
+
+typedef struct {
+    unsigned long     biSize;       // size of this struct
+    long              biWidth;      // bmap width in pixels
+    long              biHeight;     // bmap height in pixels
+    unsigned short    biPlanes;     // num planes - always 1
+    unsigned short    biBitCount;   // bits perpixel
+    unsigned long     biCompression; // compression flag
+    unsigned long     biSizeImage;   // image size in bytes
+    long              biXPelsPerMeter; // horz resolution
+    long              biYPelsPerMeter; // vert resolution
+    unsigned long     biClrUsed;       // 0 -> color table size
+    unsigned long     biClrImportant;  // important color count
+} binfo_t;
+
+
+typedef struct {
+    unsigned char blue;
+    unsigned char green;
+    unsigned char red;
+    unsigned char reserved;
+} drgb_t;
+
+
+// quake expects its palette to be bgr
+// this is totally backwards but what can you do
+typedef struct {
+    unsigned char r;
+    unsigned char g;
+    unsigned char b;
+} rgb_t;
 
+
+typedef struct {
+    unsigned char b;
+    unsigned char g;
+    unsigned char r;
+} bgr_t;
+
+
+typedef struct {
+       int            bpp;        // bits per pixel
+    int            width;
+    int            height;
+    unsigned char *data;
+    rgb_t         *palette;
+} bitmap_t;
+
+
+void LoadBMP(char *filename, bitmap_t *bit);
+void FreeBMP(bitmap_t *bitmap);
+void WriteBMP(char *filename, bitmap_t *bit);
+void NewBMP(int width, int height, int bpp, bitmap_t *bit);
+
+#pragma pack(pop)
+
+#endif