26#ifndef TGUI_TEXTURE_HPP
27#define TGUI_TEXTURE_HPP
31#include <TGUI/TextureData.hpp>
32#include <TGUI/Vector2.hpp>
33#include <TGUI/String.hpp>
34#include <TGUI/Global.hpp>
35#include <TGUI/Color.hpp>
36#include <TGUI/Rect.hpp>
38#if !TGUI_EXPERIMENTAL_USE_STD_MODULE
42#if TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS && !TGUI_BUILD_AS_CXX_MODULE
52TGUI_MODULE_EXPORT
namespace tgui
61 using CallbackFunc = std::function<void(std::shared_ptr<TextureData>)>;
62 using BackendTextureLoaderFunc = std::function<bool(
BackendTexture&,
const String&,
bool smooth)>;
63 using TextureLoaderFunc = std::function<std::shared_ptr<TextureData>(
Texture&,
const String&,
bool smooth)>;
86 bool smooth = m_defaultSmooth)
107 bool smooth = m_defaultSmooth);
109#if TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS
165 bool smooth = m_defaultSmooth);
167#if TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS
179 void load(
const sf::Texture& texture,
195 void loadFromMemory(
const std::uint8_t* data, std::size_t dataSize,
const UIntRect& partRect = {},
const UIntRect& middleRect = {},
bool smooth = m_defaultSmooth);
244 TGUI_NODISCARD std::shared_ptr<TextureData>
getData()
const;
298#if TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS
448 void setTextureData(std::shared_ptr<TextureData> data,
const UIntRect& partRect,
const UIntRect& middleRect);
454#if TGUI_HAS_RENDERER_BACKEND_SFML_GRAPHICS
455 sf::Shader* m_shader =
nullptr;
458 std::shared_ptr<TextureData> m_data =
nullptr;
459 Color m_color = Color::White;
465 CallbackFunc m_copyCallback;
466 CallbackFunc m_destructCallback;
468 static bool m_defaultSmooth;
470 static TextureLoaderFunc m_textureLoader;
471 static BackendTextureLoaderFunc m_backendTextureLoader;
Base class for texture implementations that depend on the backend.
Definition BackendTexture.hpp:44
Wrapper for colors.
Definition Color.hpp:72
Wrapper class to store strings.
Definition String.hpp:101
Texture wrapper that internally reuses resources when multiple Texture objects are loaded from the sa...
Definition Texture.hpp:58
static void setTextureLoader(const TextureLoaderFunc &func)
Sets a different texture loader.
static TGUI_NODISCARD const TextureLoaderFunc & getTextureLoader()
Returns the used texture loader.
Texture(const Texture &)
Copy constructor.
static void setDefaultSmooth(bool smooth)
Changes whether textures are smoothed by default or not.
TGUI_NODISCARD bool isSmooth() const
Tells whether the smooth filter is enabled or not.
static TGUI_NODISCARD bool getDefaultSmooth()
Returns whether textures are smoothed by default or not.
Texture(Texture &&) noexcept
Move constructor.
TGUI_NODISCARD bool operator!=(const Texture &right) const
Compares the texture with another one.
Texture(const char *id, const UIntRect &partRect=UIntRect(0, 0, 0, 0), const UIntRect &middlePart=UIntRect(0, 0, 0, 0), bool smooth=m_defaultSmooth)
Constructor that created the texture.
Definition Texture.hpp:83
TGUI_NODISCARD const String & getId() const
Returns the id that was used to load the texture (for the default loader, the id is the filename)
TGUI_NODISCARD std::shared_ptr< TextureData > getData() const
Returns the texture data.
void setShader(sf::Shader *shader)
Sets the shader used to draw the texture.
Texture(const sf::Texture &texture, const UIntRect &partRect=UIntRect(0, 0, 0, 0), const UIntRect &middlePart=UIntRect(0, 0, 0, 0))
Constructor that created the texture from an existing sf::Texture.
void loadFromBase64(CharStringView imageAsBase64, const UIntRect &partRect={}, const UIntRect &middleRect={}, bool smooth=m_defaultSmooth)
Loads the texture from a base64 string.
void setColor(const Color &color)
Sets the global color of the texture.
TGUI_NODISCARD UIntRect getPartRect() const
Returns which part of the image was loaded.
static TGUI_NODISCARD const BackendTextureLoaderFunc & getBackendTextureLoader()
Returns the used backend texture loader.
TGUI_NODISCARD const Color & getColor() const
Returns the global color of the texture.
void load(const sf::Texture &texture, const UIntRect &partRect={}, const UIntRect &middleRect={})
Creates the texture from an existing sf::Texture.
void loadFromPixelData(Vector2u size, const std::uint8_t *pixels, const UIntRect &partRect={}, const UIntRect &middleRect={}, bool smooth=m_defaultSmooth)
Loads the texture from an array of 32-bits RGBA pixels.
TGUI_NODISCARD bool operator==(const Texture &right) const
Compares the texture with another one.
TGUI_NODISCARD UIntRect getMiddleRect() const
Returns the middle rect of the texture which is used for 9-slice scaling.
void loadFromMemory(const std::uint8_t *data, std::size_t dataSize, const UIntRect &partRect={}, const UIntRect &middleRect={}, bool smooth=m_defaultSmooth)
Loads the texture from memory (data in memory should contain the entire file, not just the pixels)
static void setBackendTextureLoader(const BackendTextureLoaderFunc &func)
Sets a different backend texture loader.
TGUI_NODISCARD Vector2u getImageSize() const
Returns the size that the loaded image, or the size of the part if only a part of the image is loaded...
TGUI_NODISCARD bool isTransparentPixel(Vector2u pos) const
Checks if a certain pixel is transparent.
void setCopyCallback(const CallbackFunc &func)
Sets a callback function for when this texture is copied.
void setDestructCallback(const CallbackFunc &func)
Sets a callback function for when this texture is destroyed.
Texture(const String &id, const UIntRect &partRect=UIntRect(0, 0, 0, 0), const UIntRect &middlePart=UIntRect(0, 0, 0, 0), bool smooth=m_defaultSmooth)
Constructor that created the texture.
Texture()=default
Default constructor.
TGUI_NODISCARD sf::Shader * getShader() const
Returns the shader used to draw the texture.
Namespace that contains all TGUI functions and classes.
Definition AbsoluteOrRelativeValue.hpp:39