ImageBitmap.h

Go to the documentation of this file.
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_)

Generated on Mon Feb 16 15:14:50 2009 for Scorched3D by  doxygen 1.5.3