TGUI
1.5
|
Texture wrapper that internally reuses resources when multiple Texture objects are loaded from the same file. More...
#include <TGUI/Texture.hpp>
Public Types | |
using | CallbackFunc = std::function<void(std::shared_ptr<TextureData>)> |
using | BackendTextureLoaderFunc = std::function<bool(BackendTexture&, const String&, bool smooth)> |
using | TextureLoaderFunc = std::function<std::shared_ptr<TextureData>(Texture&, const String&, bool smooth)> |
Public Member Functions | |
Texture ()=default | |
Default constructor. | |
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. | |
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 (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. | |
Texture (const Texture &) | |
Copy constructor. | |
Texture (Texture &&) noexcept | |
Move constructor. | |
~Texture () | |
Destructor. | |
Texture & | operator= (const Texture &) |
Overload of copy assignment operator. | |
Texture & | operator= (Texture &&) noexcept |
Move assignment. | |
void | load (const String &id, const UIntRect &partRect={}, const UIntRect &middleRect={}, bool smooth=m_defaultSmooth) |
Creates the texture. | |
void | load (const sf::Texture &texture, const UIntRect &partRect={}, const UIntRect &middleRect={}) |
Creates the texture from an existing sf::Texture. | |
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) | |
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. | |
void | loadFromBase64 (CharStringView imageAsBase64, const UIntRect &partRect={}, const UIntRect &middleRect={}, bool smooth=m_defaultSmooth) |
Loads the texture from a base64 string. | |
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. | |
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 UIntRect | getPartRect () const |
Returns which part of the image was loaded. | |
TGUI_NODISCARD bool | isSmooth () const |
Tells whether the smooth filter is enabled or not. | |
void | setColor (const Color &color) |
Sets the global color of the texture. | |
TGUI_NODISCARD const Color & | getColor () const |
Returns the global color of the texture. | |
void | setShader (sf::Shader *shader) |
Sets the shader used to draw the texture. | |
TGUI_NODISCARD sf::Shader * | getShader () const |
Returns the shader used to draw the texture. | |
void | setMiddleRect (const UIntRect &middleRect) |
Sets the middle part of the image for 9-slice scaling (relative to the part defined by partRect) | |
TGUI_NODISCARD UIntRect | getMiddleRect () const |
Returns the middle rect of the texture which is used for 9-slice scaling. | |
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. | |
TGUI_NODISCARD bool | operator== (const Texture &right) const |
Compares the texture with another one. | |
TGUI_NODISCARD bool | operator!= (const Texture &right) const |
Compares the texture with another one. | |
Static Public Member Functions | |
static void | setDefaultSmooth (bool smooth) |
Changes whether textures are smoothed by default or not. | |
static TGUI_NODISCARD bool | getDefaultSmooth () |
Returns whether textures are smoothed by default or not. | |
static void | setBackendTextureLoader (const BackendTextureLoaderFunc &func) |
Sets a different backend texture loader. | |
static TGUI_NODISCARD const BackendTextureLoaderFunc & | getBackendTextureLoader () |
Returns the used backend texture loader. | |
static void | setTextureLoader (const TextureLoaderFunc &func) |
Sets a different texture loader. | |
static TGUI_NODISCARD const TextureLoaderFunc & | getTextureLoader () |
Returns the used texture loader. | |
Texture wrapper that internally reuses resources when multiple Texture objects are loaded from the same file.
|
inline |
Constructor that created the texture.
id | Id for the the image to load (for the default loader, the id is the filename) |
partRect | Load only part of the image. Pass an empty rectangle if you want to load the full image |
middlePart | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
Exception | when loading failed |
tgui::Texture::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.
id | Id for the the image to load (for the default loader, the id is the filename) |
partRect | Load only part of the image. Pass an empty rectangle if you want to load the full image |
middlePart | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
This constructor just calls the corresponding load function.
Exception | when loading failed |
tgui::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.
texture | Existing texture to copy |
partRect | Load only part of the image. Pass an empty rectangle if you want to load the full image |
middlePart | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
The texture will be copied, you do not have to keep the sf::Texture alive after calling this function.
This constructor just calls the corresponding load function.
|
static |
Returns the used backend texture loader.
TGUI_NODISCARD const Color & tgui::Texture::getColor | ( | ) | const |
Returns the global color of the texture.
This color is modulated (multiplied) with the pixel color. It can be used to colorize the texture, or change its global opacity. Note that the alpha component is multiplied with the opacity of the widget.
By default, the texture's color is opaque white.
TGUI_NODISCARD std::shared_ptr< TextureData > tgui::Texture::getData | ( | ) | const |
Returns the texture data.
|
static |
Returns whether textures are smoothed by default or not.
Smoothed textures are rendered with bilinear interpolation (default). Turning smoothing off will switch rendering to nearest neighbor interpolation.
TGUI_NODISCARD const String & tgui::Texture::getId | ( | ) | const |
Returns the id that was used to load the texture (for the default loader, the id is the filename)
TGUI_NODISCARD Vector2u tgui::Texture::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 UIntRect tgui::Texture::getMiddleRect | ( | ) | const |
Returns the middle rect of the texture which is used for 9-slice scaling.
TGUI_NODISCARD UIntRect tgui::Texture::getPartRect | ( | ) | const |
Returns which part of the image was loaded.
TGUI_NODISCARD sf::Shader * tgui::Texture::getShader | ( | ) | const |
Returns the shader used to draw the texture.
|
static |
Returns the used texture loader.
TGUI_NODISCARD bool tgui::Texture::isSmooth | ( | ) | const |
Tells whether the smooth filter is enabled or not.
TGUI_NODISCARD bool tgui::Texture::isTransparentPixel | ( | Vector2u | pos | ) | const |
Checks if a certain pixel is transparent.
pos | Coordinate of the pixel |
void tgui::Texture::load | ( | const sf::Texture & | texture, |
const UIntRect & | partRect = {}, | ||
const UIntRect & | middleRect = {} ) |
Creates the texture from an existing sf::Texture.
texture | Existing texture to copy |
partRect | Load only part of the texture. Don't pass this parameter if you want to load the full image |
middleRect | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
The texture will be copied, you do not have to keep the sf::Texture alive after calling this function.
Exception | when loading failed |
void tgui::Texture::load | ( | const String & | id, |
const UIntRect & | partRect = {}, | ||
const UIntRect & | middleRect = {}, | ||
bool | smooth = m_defaultSmooth ) |
Creates the texture.
id | Id for the the image to load (for the default loader, the id is the filename) |
partRect | Load only part of the image. Don't pass this parameter if you want to load the full image |
middleRect | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
Exception | when loading failed |
void tgui::Texture::loadFromBase64 | ( | CharStringView | imageAsBase64, |
const UIntRect & | partRect = {}, | ||
const UIntRect & | middleRect = {}, | ||
bool | smooth = m_defaultSmooth ) |
Loads the texture from a base64 string.
imageAsBase64 | Character array with the base64-encoded image (the entire file, not just the pixel data) |
partRect | Load only part of the texture. Don't pass this parameter if you want to load the full image |
middleRect | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
Note that imageAsBase64 is just the base64 data (of the entire file), it should NOT start with a prefix like "data:".
Exception | when loading failed |
void tgui::Texture::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)
data | Pointer to the file in memory |
dataSize | Amount of bytes of the file in memory |
partRect | Load only part of the texture. Don't pass this parameter if you want to load the full image |
middleRect | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
Exception | when loading failed |
void tgui::Texture::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.
size | Width and height of the image to create |
pixels | Pointer to array of size.x*size.y*4 bytes with RGBA pixels |
partRect | Load only part of the texture. Don't pass this parameter if you want to load the full image |
middleRect | Choose the middle part of the image for 9-slice scaling (relative to the part defined by partRect) |
smooth | Enable smoothing on the texture |
The pixels are copied by this function, you can free the buffer after calling this function.
Exception | when loading failed |
|
static |
Sets a different backend texture loader.
func | New backend texture loader function |
The backend texture loader will be called inside the texture loader to create the backend texture.
The default loader will simply load the image from a file.
void tgui::Texture::setColor | ( | const Color & | color | ) |
Sets the global color of the texture.
This color is modulated (multiplied) with the pixel color. It can be used to colorize the texture, or change its global opacity. Note that the alpha component is multiplied with the opacity of the widget.
By default, the texture's color is opaque white.
color | New color of the texture |
void tgui::Texture::setCopyCallback | ( | const CallbackFunc & | func | ) |
Sets a callback function for when this texture is copied.
func | Function that will be called when this texture is copied |
This function can be useful when implementing a resource manager.
|
static |
Changes whether textures are smoothed by default or not.
smooth | Enable smoothing on the texture by default |
Smoothed textures are rendered with bilinear interpolation (default). Turning smoothing off will switch rendering to nearest neighbor interpolation.
Changing the default only affects new textures where smoothing isn't explicitly set. No existing textures are modified.
void tgui::Texture::setDestructCallback | ( | const CallbackFunc & | func | ) |
Sets a callback function for when this texture is destroyed.
func | Function that will be called when this texture is destroyed |
This function can be useful when implementing a resource manager.
void tgui::Texture::setMiddleRect | ( | const UIntRect & | middleRect | ) |
Sets the middle part of the image for 9-slice scaling (relative to the part defined by partRect)
middleRect | Middle rect of the texture |
void tgui::Texture::setShader | ( | sf::Shader * | shader | ) |
Sets the shader used to draw the texture.
shader | New shader to use |
|
static |
Sets a different texture loader.
func | New texture loader function |
The texture loader will initialize this Texture object.
The default loader will use an internal texture manager to prevent the same thing from being loaded twice.