00001 00013 #ifndef _GHULBUSUTIL_IMAGELOADER_HPP_INCLUDE_GUARD_ 00014 #define _GHULBUSUTIL_IMAGELOADER_HPP_INCLUDE_GUARD_ 00015 00016 #include <fstream> 00017 00018 #include "gbException.hpp" 00019 #include "gbColor.hpp" 00020 00023 namespace GhulbusUtil { 00026 class gbImageLoader { 00027 public: 00030 class gbImageType { 00031 public: 00041 virtual void ReadFile(std::ifstream& file, int* width, int* height, int* bpp, 00042 unsigned char** pp_data, unsigned int** pp_palette)=0; 00047 virtual bool CheckFile(std::ifstream const& file)=0; 00050 virtual ~gbImageType(); 00051 }; 00052 private: 00053 unsigned char* m_data; 00054 unsigned int* m_palette; 00055 int m_width; 00056 int m_height; 00057 int m_bpp; 00058 public: 00066 gbImageLoader(char const* fname, gbImageType* img_type); 00069 ~gbImageLoader(); 00073 int GetWidth() const; 00077 int GetHeight() const; 00081 int GetBpp() const; 00085 bool HasPalette() const; 00089 void GetImageData(unsigned char* pData) const; 00094 void GetImageData32(GhulbusGraphics::GBCOLOR* pData) const; 00099 void GetPaletteData(GhulbusGraphics::GBCOLOR* pPal) const; 00102 void FlipV(); 00103 }; 00104 00112 void WriteImage(char const* fname, GhulbusGraphics::GBCOLOR const* data, int width, int height); 00113 00117 gbImageLoader::gbImageType* gbImageType_BMP(); 00118 class gbImageType_BMP_T: public gbImageLoader::gbImageType { 00119 private: 00120 unsigned int m_file_offset; 00121 public: 00122 void ReadFile(std::ifstream& file, int* width, int* height, int* bpp, 00123 unsigned char** pp_data, unsigned int** pp_palette); 00124 bool CheckFile(std::ifstream const& file); 00125 gbImageType_BMP_T(); 00126 virtual ~gbImageType_BMP_T(); 00127 }; 00128 00132 gbImageLoader::gbImageType* gbImageType_TGA(); 00133 class gbImageType_TGA_T: public gbImageLoader::gbImageType { 00134 private: 00135 unsigned int m_file_offset; 00136 public: 00137 void ReadFile(std::ifstream& file, int* width, int* height, int* bpp, 00138 unsigned char** pp_data, unsigned int** pp_palette); 00139 bool CheckFile(std::ifstream const& file); 00140 gbImageType_TGA_T(); 00141 virtual ~gbImageType_TGA_T(); 00142 }; 00143 }; 00144 00145 #endif