Initial revision
[0ad:0ad.git] / terrain / bak / 0 / Bitmap.h
1 //***********************************************************
2 //
3 // Name:                Bitmap.H
4 // Author:              Poya Manouchehri
5 //
6 // Description: CBitmap operates on a bitmap. Currently it
7 //                              can load BMPs and TGAs. All bitmaps (even 8-bit
8 //                              ones) are converted into full RGBAs.
9 //
10 //***********************************************************
11
12 #ifndef BITMAP_H
13 #define BITMAP_H
14
15 #include <stdio.h>
16 #include "Types.H"
17 #include "FileResource.H"
18
19
20 //image types
21 #define FILE_TYPE_NOSUPPORT     (0)
22 #define FILE_TYPE_BMP           (1)
23 #define FILE_TYPE_TGA           (2)
24
25 //this structure holds header data for a TGA file
26 typedef struct
27 {
28         unsigned char   IDLength;
29         unsigned char   MapType;
30         unsigned char   ImageType;
31         unsigned short  MapOrigin;
32         unsigned short  MapLength;
33         unsigned char   MapEntrySize;
34         unsigned short  XOrigin;
35         unsigned short  YOrigin;
36         unsigned short  Width;
37         unsigned short  Height;
38         unsigned char   BPP;
39         unsigned char   Descriptor;
40 } TGAHeader;
41
42 class CBitmap : public CFileResource
43 {
44         public:
45                 CBitmap ();
46                 virtual ~CBitmap ();
47
48                 //Load the image from a file
49                 virtual FRESULT LoadBitmap (char *path, RESOURCETYPE type);
50
51                 //Creates the bits for the bitmap
52                 virtual FRESULT CreateBitmap (RESOURCETYPE type, char *name, int width, int height);
53
54                 //Get the pointer to the image data
55                 unsigned char *GetBits () { return m_pBits; }
56
57                 //Get width and height
58                 int     GetWidth () { return m_Width; }
59                 int GetHeight () { return m_Height; }
60
61         private:
62                 //Get the file format
63                 int GetImageType (FILE *file);
64                 //Load a bmp file
65                 FRESULT LoadBMP (FILE *file);
66                 //Load a TGA file
67                 FRESULT LoadTGA (FILE *file);
68                 //Load the actual bits from a file. the table is NULL
69                 //unless the image is 8-bit
70                 FRESULT LoadData (FILE *file, int bpp, RGBQUAD *table);
71
72         protected:
73                 //release the memory of the bits
74                 void DestroyData ();
75
76         protected:
77                 unsigned char   *m_pBits;               //Bitmap's bits
78                 int                             m_Width;
79                 int                             m_Height;
80 };
81
82
83 #endif