Texture.hpp
1 //
3 // SFML - Simple and Fast Multimedia Library
4 // Copyright (C) 2007-2014 Laurent Gomila (laurent.gom@gmail.com)
5 //
6 // This software is provided 'as-is', without any express or implied warranty.
7 // In no event will the authors be held liable for any damages arising from the use of this software.
8 //
9 // Permission is granted to anyone to use this software for any purpose,
10 // including commercial applications, and to alter it and redistribute it freely,
11 // subject to the following restrictions:
12 //
13 // 1. The origin of this software must not be misrepresented;
14 // you must not claim that you wrote the original software.
15 // If you use this software in a product, an acknowledgment
16 // in the product documentation would be appreciated but is not required.
17 //
18 // 2. Altered source versions must be plainly marked as such,
19 // and must not be misrepresented as being the original software.
20 //
21 // 3. This notice may not be removed or altered from any source distribution.
22 //
24 
25 #ifndef CPP3DS_TEXTURE_HPP
26 #define CPP3DS_TEXTURE_HPP
27 
29 // Headers
31 #include <cpp3ds/Config.hpp>
32 #include <cpp3ds/Graphics/Image.hpp>
33 #include <cpp3ds/Window/GlResource.hpp>
34 
35 
36 namespace cpp3ds
37 {
38 class Window;
39 class RenderTarget;
40 class RenderTexture;
41 class InputStream;
42 
48 {
49 public :
50 
56  {
59  };
60 
61 public :
62 
69  Texture();
70 
77  Texture(const Texture& copy);
78 
83  ~Texture();
84 
96  bool create(unsigned int width, unsigned int height);
97 
127  bool loadFromFile(const std::string& filename, const IntRect& area = IntRect());
128 
159  bool loadFromMemory(const void* data, std::size_t size, const IntRect& area = IntRect());
160 
190  bool loadFromStream(cpp3ds::InputStream& stream, const IntRect& area = IntRect());
191 
214  bool loadFromImage(const Image& image, const IntRect& area = IntRect());
215 
222  Vector2u getSize() const;
223 
237  Image copyToImage() const;
238 
255  void update(const Uint8* pixels);
256 
277  void update(const Uint8* pixels, unsigned int width, unsigned int height, unsigned int x, unsigned int y);
278 
297  void update(const Image& image);
298 
314  void update(const Image& image, unsigned int x, unsigned int y);
315 
334  void update(const Window& window);
335 
351  void update(const Window& window, unsigned int x, unsigned int y);
352 
367  void setSmooth(bool smooth);
368 
377  bool isSmooth() const;
378 
401  void setRepeated(bool repeated);
402 
411  bool isRepeated() const;
412 
421  Texture& operator =(const Texture& right);
422 
454  static void bind(const Texture* texture, CoordinateType coordinateType = Normalized);
455 
466  static unsigned int getMaximumSize();
467 
468 private :
469 
470  friend class RenderTexture;
471  friend class RenderTarget;
472 
486  static unsigned int getValidSize(unsigned int size);
487 
489  // Member data
491  Vector2u m_size;
492  Vector2u m_actualSize;
493  unsigned int m_texture;
494  bool m_isSmooth;
495  bool m_isRepeated;
496  mutable bool m_pixelsFlipped;
497  Uint64 m_cacheId;
498 };
499 
500 } // namespace sf
501 
502 
503 #endif // SFML_TEXTURE_HPP
504 
Window that serves as a target for OpenGL rendering.
bool create(unsigned int width, unsigned int height)
Create the texture.
Abstract class for custom file input streams.
Definition: InputStream.hpp:40
Texture()
Default constructor.
void update(const Uint8 *pixels)
Update the whole texture from an array of pixels.
void setRepeated(bool repeated)
Enable or disable repeating.
Vector2u getSize() const
Return the size of the texture.
Texture coordinates in range [0 .. size].
Definition: Texture.hpp:58
CoordinateType
Types of texture coordinates that can be used for rendering.
Definition: Texture.hpp:55
bool loadFromFile(const std::string &filename, const IntRect &area=IntRect())
Load the texture from a file on disk.
bool loadFromMemory(const void *data, std::size_t size, const IntRect &area=IntRect())
Load the texture from a file in memory.
Texture coordinates in range [0 .. 1].
Definition: Texture.hpp:57
~Texture()
Destructor.
static unsigned int getMaximumSize()
Get the maximum texture size allowed.
bool isSmooth() const
Tell whether the smooth filter is enabled or not.
void setSmooth(bool smooth)
Enable or disable the smooth filter.
Texture & operator=(const Texture &right)
Overload of assignment operator.
Class for loading, manipulating and saving images.
Definition: Image.hpp:45
Base class for all render targets (window, texture, ...)
bool isRepeated() const
Tell whether the texture is repeated or not.
bool loadFromImage(const Image &image, const IntRect &area=IntRect())
Load the texture from an image.
bool loadFromStream(cpp3ds::InputStream &stream, const IntRect &area=IntRect())
Load the texture from a custom stream.
static void bind(const Texture *texture, CoordinateType coordinateType=Normalized)
Bind a texture for rendering.
Image copyToImage() const
Copy the texture pixels to an image.
Target for off-screen 2D rendering into a texture.
Base class for classes that require an OpenGL context.
Definition: GlResource.hpp:39
some things could easily be broken///////
Definition: Texture.hpp:47