00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
00045
00046
00047
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_)