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, Color Col = Color(0, 0, 0, 255));
00142
00150 void CreateMaskFromColor(Color ColorKey, Uint8 Alpha = 0);
00151
00163 bool Resize(unsigned int Width, unsigned int Height, Color Col = Color(0, 0, 0, 255));
00164
00173 void SetPixel(unsigned int X, unsigned int Y, const Color& Col);
00174
00184 const Color& GetPixel(unsigned int X, unsigned int Y) const;
00185
00194 const Uint8* GetPixelsPtr() const;
00195
00200 void Bind() const;
00201
00209 void SetSmooth(bool Smooth);
00210
00217 unsigned int GetWidth() const;
00218
00225 unsigned int GetHeight() const;
00226
00233 bool IsSmooth() const;
00234
00245 FloatRect GetTexCoords(const IntRect& Rect, bool Adjust = true) const;
00246
00255 static unsigned int GetValidTextureSize(unsigned int Size);
00256
00265 Image& operator =(const Image& Other);
00266
00267 private :
00268
00275 bool CreateTexture();
00276
00281 void Update();
00282
00287 void Reset();
00288
00293 virtual void DestroyVideoResources();
00294
00296
00298 unsigned int myWidth;
00299 unsigned int myHeight;
00300 unsigned int myTextureWidth;
00301 unsigned int myTextureHeight;
00302 std::vector<Color> myPixels;
00303 unsigned int myTexture;
00304 bool myIsSmooth;
00305 mutable bool myUpdated;
00306 };
00307
00308 }
00309
00310
00311 #endif // SFML_IMAGE_HPP