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 void* Data);
00081
00086 ~Image();
00087
00096 bool LoadFromFile(const std::string& Filename);
00097
00106 bool SaveToFile(const std::string& Filename) const;
00107
00116 void Create(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00117
00126 void LoadFromMemory(unsigned int Width, unsigned int Height, const void* Data);
00127
00135 void CreateMaskFromColor(const Color& ColorKey, Uint8 Alpha = 0);
00136
00146 void Resize(unsigned int Width, unsigned int Height, const Color& Col = Color(0, 0, 0, 255));
00147
00157 void SetPixel(unsigned int X, unsigned int Y, const Color& Col);
00158
00168 Color GetPixel(unsigned int X, unsigned int Y) const;
00169
00178 const Uint32* GetPixelsPtr() const;
00179
00185 void Update();
00186
00191 void Bind() const;
00192
00199 void SetSmooth(bool Smooth) const;
00200
00208 void SetRepeat(bool Repeat) const;
00209
00216 unsigned int GetWidth() const;
00217
00224 unsigned int GetHeight() const;
00225
00235 FloatRect GetTexCoords(const IntRect& Rect) const;
00236
00245 static unsigned int GetValidTextureSize(unsigned int Size);
00246
00255 Image& operator =(const Image& Other);
00256
00257 private :
00258
00263 void CreateTexture();
00264
00269 virtual void DestroyVideoResources();
00270
00272
00274 unsigned int myWidth;
00275 unsigned int myHeight;
00276 unsigned int myTextureWidth;
00277 unsigned int myTextureHeight;
00278 std::vector<Uint32> myPixels;
00279 unsigned int myGLTexture;
00280 };
00281
00282 }
00283
00284
00285 #endif // SFML_IMAGE_HPP