diff options
Diffstat (limited to 'include/Image.h')
-rw-r--r-- | include/Image.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/Image.h b/include/Image.h new file mode 100644 index 0000000..8fd719c --- /dev/null +++ b/include/Image.h @@ -0,0 +1,61 @@ +#ifndef __IMAGE_H__ +#define __IMAGE_H__ +#ifdef __cplusplus + +#include <Buffer.h> + +enum { + FORMAT_TGA_BASIC, +} format_t; + +struct Color { + Color(unsigned char aR, unsigned char aG, unsigned char aB, unsigned char aA = 255) : + R(aR), G(aG), B(aB), A(aA) { } + unsigned char R, G, B, A; +}; + +class Image : public Buffer { + public: + Image(unsigned int, unsigned int); + virtual ~Image(); + Color GetPixel(unsigned int, unsigned int); + void SetPixel(unsigned int, unsigned int, Color); + bool Prepare(unsigned int = FORMAT_TGA_BASIC); + void Fill(Color = Color(0, 0, 0)); + virtual String GetName(); + virtual bool CanWrite(); + + private: + typedef unsigned char Byte; + typedef unsigned short int Word; + typedef unsigned long int DWord; + struct TGAHeader { + Byte IDLength; + Byte ColorMapType; + Byte ImageType; + Word CM_FirstEntry; + Word CM_Length; + Byte CM_EntrySize; + Word IS_XOrigin; + Word IS_YOrigin; + Word IS_Width; + Word IS_Height; + Byte IS_Depth; + Byte IS_Descriptor; + } __attribute__((packed)); + + struct TGAFooter { + DWord ExtOffset; + DWord DevOffset; + char Sig[18]; + } __attribute__((packed)); + + unsigned int x, y; + bool r; + Color * img; +}; + +#else +#error This only works with a C++ compiler +#endif +#endif |