00001 //////////////////////////////////////////////////////////////////////////////// 00002 // Scorched3D (c) 2000-2009 00003 // 00004 // This file is part of Scorched3D. 00005 // 00006 // Scorched3D is free software; you can redistribute it and/or modify 00007 // it under the terms of the GNU General Public License as published by 00008 // the Free Software Foundation; either version 2 of the License, or 00009 // (at your option) any later version. 00010 // 00011 // Scorched3D is distributed in the hope that it will be useful, 00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 // GNU General Public License for more details. 00015 // 00016 // You should have received a copy of the GNU General Public License 00017 // along with Scorched3D; if not, write to the Free Software 00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00019 //////////////////////////////////////////////////////////////////////////////// 00020 00021 #if !defined(AFX_ImageBitmap_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_) 00022 #define AFX_ImageBitmap_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_ 00023 00024 #include <image/Image.h> 00025 00026 /** 00027 A class that wraps the loading of windows .bmp image data into 00028 a format that can be easily consumed by a GLTexture object. 00029 The bitmap data is unpacked and is stored in either RGB or 00030 RGBA format. One ubyte per component. 00031 No attempt is made to ensure the bitmap conforms to the 00032 GLTexture specification (sizes == pow(2, x)) 00033 */ 00034 class ImageBitmap : public Image 00035 { 00036 public: 00037 ImageBitmap(); 00038 ImageBitmap(int width, int height, bool alpha = false, unsigned char fill = 255); 00039 virtual ~ImageBitmap(); 00040 00041 void clear(); 00042 00043 virtual unsigned char *getBits() { return newbits_; } 00044 virtual int getWidth() { return width_; } 00045 virtual int getHeight() { return height_; } 00046 virtual int getAlignment() { return 4; } 00047 virtual int getComponents() { return alpha_?4:3; } 00048 virtual bool getAlpha() { return alpha_; } 00049 00050 void setBits(unsigned char *bits) { newbits_ = bits; } 00051 00052 /** 00053 Overwrite the bitmap with the contents of the given file. 00054 If alpha is true then any black areas in the bitmap have full 00055 opacity. When creating an alpha bitmap the bitmap is created 00056 in RGBA format, otherwise in RGB format. 00057 */ 00058 bool loadFromFile(const char *filename, bool alpha = false); 00059 bool loadFromFile(const char * filename, const char *alphafilename, bool invert); 00060 00061 virtual void removeOwnership() { owner_ = false; } 00062 00063 protected: 00064 bool owner_; 00065 unsigned char *newbits_; 00066 int width_; 00067 int height_; 00068 bool alpha_; 00069 00070 void createBlankInternal(int width, int height, 00071 bool alpha = false, unsigned char fill = 255); 00072 00073 private: 00074 ImageBitmap(ImageBitmap &other); 00075 ImageBitmap &operator=(ImageBitmap &other); 00076 }; 00077 00078 #endif // !defined(AFX_ImageBitmap_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_)
1.5.3