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/System/Resource.hpp>
00032 #include <SFML/Graphics/Color.hpp>
00033 #include <SFML/Graphics/Rect.hpp>
00034 #include <string>
00035 #include <vector>
00036
00037
00038 namespace sf
00039 {
00040 class RenderImage;
00041 class RenderWindow;
00042
00047 class SFML_API Image : public Resource<Image>
00048 {
00049 public :
00050
00055 Image();
00056
00063 Image(const Image& Copy);
00064
00073 Image(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00074
00083 Image(unsigned int Width, unsigned int Height, const Uint8* Data);
00084
00089 ~Image();
00090
00099 bool LoadFromFile(const std::string& Filename);
00100
00110 bool LoadFromMemory(const char* Data, std::size_t SizeInBytes);
00111
00122 bool LoadFromPixels(unsigned int Width, unsigned int Height, const Uint8* Data);
00123
00132 bool SaveToFile(const std::string& Filename) const;
00133
00144 bool Create(unsigned int Width, unsigned int Height, Color Col = Color(0, 0, 0, 255));
00145
00153 void CreateMaskFromColor(Color ColorKey, Uint8 Alpha = 0);
00154
00166 void Copy(const Image& Source, unsigned int DestX, unsigned int DestY, const IntRect& SourceRect = IntRect(0, 0, 0, 0));
00167
00178 bool CopyScreen(RenderWindow& Window, const IntRect& SourceRect = IntRect(0, 0, 0, 0));
00179
00188 void SetPixel(unsigned int X, unsigned int Y, const Color& Col);
00189
00199 const Color& GetPixel(unsigned int X, unsigned int Y) const;
00200
00209 const Uint8* GetPixelsPtr() const;
00210
00215 void Bind() const;
00216
00224 void SetSmooth(bool Smooth);
00225
00232 unsigned int GetWidth() const;
00233
00240 unsigned int GetHeight() const;
00241
00248 bool IsSmooth() const;
00249
00260 FloatRect GetTexCoords(const IntRect& Rect, bool Adjust = true) const;
00261
00270 static unsigned int GetValidTextureSize(unsigned int Size);
00271
00280 Image& operator =(const Image& Other);
00281
00282 private :
00283
00284 friend class RenderImage;
00285
00292 bool CreateTexture();
00293
00298 void EnsureTextureUpdate() const;
00299
00304 void EnsureArrayUpdate() const;
00305
00310 void Reset();
00311
00316 void DestroyTexture();
00317
00319
00321 unsigned int myWidth;
00322 unsigned int myHeight;
00323 unsigned int myTextureWidth;
00324 unsigned int myTextureHeight;
00325 unsigned int myTexture;
00326 bool myIsSmooth;
00327 mutable std::vector<Color> myPixels;
00328 mutable bool myNeedTextureUpdate;
00329 mutable bool myNeedArrayUpdate;
00330 };
00331
00332 }
00333
00334
00335 #endif // SFML_IMAGE_HPP