ImagePng.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_ImagePng_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_)
00022 #define AFX_ImagePng_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_
00023 
00024 #include <image/Image.h>
00025 #include <net/NetBuffer.h>
00026 
00027 class ImagePng : public Image
00028 {
00029 public:
00030         ImagePng();
00031         ImagePng(int startWidth, int startHeight, bool alpha = false, unsigned char fill = 0);
00032         virtual ~ImagePng();
00033 
00034         virtual void removeOwnership() { owner_ = false; }
00035         virtual unsigned char *getBits() { return bits_; }
00036         virtual int getWidth() { return width_; }
00037         virtual int getHeight() { return height_; }
00038         virtual int getAlignment() { return 4; }
00039         virtual int getComponents() { return alpha_?4:3; }
00040 
00041         void clear();
00042 
00043         /**
00044         Overwrite the bitmap with the contents of the given file.
00045         If alpha is true then any black areas in the bitmap have full
00046         opacity.  When creating an alpha bitmap the bitmap is created
00047         in RGBA format, otherwise in RGB format.
00048         */
00049         bool loadFromFile(const std::string &filename, bool readalpha = false);
00050         bool loadFromFile(const std::string &filename, const std::string &alphafilename, bool invert);
00051         bool loadFromBuffer(NetBuffer &buffer, bool readalpha = false);
00052 
00053         bool writeToBuffer(NetBuffer &buffer);
00054 
00055 protected:
00056         bool owner_;
00057         unsigned char *bits_;
00058         int width_;
00059         int height_;
00060         bool alpha_;
00061 
00062         void createBlankInternal(int width, int height, 
00063                 bool alpha = false, unsigned char fill = 255);
00064 
00065 private:
00066         ImagePng(ImagePng &other);
00067         ImagePng &operator=(ImagePng &other);
00068 };
00069 
00070 #endif // !defined(AFX_ImagePng_H__315BF771_5E56_4C78_9D9F_51608D8CB3F0__INCLUDED_)

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