00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024
00025 #ifndef SFML_IMAGE_HPP
00026 #define SFML_IMAGE_HPP
00027
00029
00031 #include <SFML/Graphics/Color.hpp>
00032 #include <SFML/Graphics/VideoResource.hpp>
00033 #include <SFML/Graphics/Rect.hpp>
00034 #include <string>
00035 #include <vector>
00036
00037
00038 namespace sf
00039 {
00044 class SFML_API Image : public VideoResource
00045 {
00046 public :
00047
00052 Image();
00053
00060 Image(const Image& Copy);
00061
00070 Image(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00071
00080 Image(unsigned int Width, unsigned int Height, const Uint8* Data);
00081
00086 ~Image();
00087
00096 bool LoadFromFile(const std::string& Filename);
00097
00107 bool LoadFromMemory(const char* Data, std::size_t SizeInBytes);
00108
00119 bool LoadFromPixels(unsigned int Width, unsigned int Height, const Uint8* Data);
00120
00129 bool SaveToFile(const std::string& Filename) const;
00130
00141 bool Create(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00142
00150 void CreateMaskFromColor(const Color& ColorKey, Uint8 Alpha = 0);
00151
00163 bool Resize(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00164
00174 void SetPixel(unsigned int X, unsigned int Y, const Color& Col);
00175
00185 const Color& GetPixel(unsigned int X, unsigned int Y) const;
00186
00195 const Uint8* GetPixelsPtr() const;
00196
00201 void Bind() const;
00202
00210 void SetSmooth(bool Smooth) const;
00211
00220 void SetRepeat(bool Repeat) const;
00221
00228 unsigned int GetWidth() const;
00229
00236 unsigned int GetHeight() const;
00237
00248 FloatRect GetTexCoords(const IntRect& Rect, bool Adjust = true) const;
00249
00258 static unsigned int GetValidTextureSize(unsigned int Size);
00259
00268 Image& operator =(const Image& Other);
00269
00270 private :
00271
00278 bool CreateTexture();
00279
00284 void Update() const;
00285
00290 void Reset();
00291
00296 virtual void DestroyVideoResources();
00297
00299
00301 unsigned int myWidth;
00302 unsigned int myHeight;
00303 unsigned int myTextureWidth;
00304 unsigned int myTextureHeight;
00305 std::vector<Color> myPixels;
00306 unsigned int myGLTexture;
00307 mutable bool myUpdated;
00308 };
00309
00310 }
00311
00312
00313 #endif // SFML_IMAGE_HPP