diff --git a/CSFML/src/Graphics/RenderTexture.cpp b/CSFML/src/Graphics/RenderTexture.cpp index 8394e835..bc7ce1fc 100644 --- a/CSFML/src/Graphics/RenderTexture.cpp +++ b/CSFML/src/Graphics/RenderTexture.cpp @@ -1,5 +1,6 @@ #include "Graphics/Rect.h" #include "Graphics/Vertex.h" +#include "SFML/Graphics/RenderTarget.hpp" #include #include #include @@ -23,6 +24,10 @@ extern "C" sfVector2u sfRenderTexture_getSize(const sf::RenderTexture *renderTex return {size.x, size.y}; } +extern "C" bool sfRenderTexture_isSrgb(const sf::RenderTarget *renderTexture) { + return renderTexture->isSrgb(); +} + extern "C" bool sfRenderTexture_setActive(sf::RenderTexture *renderTexture, bool active) { return renderTexture->setActive(active); } diff --git a/CSFML/src/Graphics/RenderWindow.cpp b/CSFML/src/Graphics/RenderWindow.cpp index 007170f8..a8307c88 100644 --- a/CSFML/src/Graphics/RenderWindow.cpp +++ b/CSFML/src/Graphics/RenderWindow.cpp @@ -1,5 +1,6 @@ #include "Graphics/Rect.h" #include "Graphics/Vertex.h" +#include "SFML/Graphics/RenderTarget.hpp" #include "Window/VideoMode.h" #include #include @@ -72,6 +73,10 @@ extern "C" void sfRenderWindow_setSize(sf::RenderWindow *renderWindow, sfVector2 renderWindow->setSize(sf::Vector2u(size.x, size.y)); } +extern "C" bool sfRenderWindow_isSrgb(const sf::RenderWindow *renderWindow) { + return renderWindow->isSrgb(); +} + extern "C" void sfRenderWindow_setUnicodeTitle(sf::RenderWindow *renderWindow, const uint32_t *title) { renderWindow->setTitle(title); } diff --git a/src/ffi/graphics_bindgen.rs b/src/ffi/graphics_bindgen.rs index dc19761e..33a2cac1 100644 --- a/src/ffi/graphics_bindgen.rs +++ b/src/ffi/graphics_bindgen.rs @@ -141,6 +141,7 @@ pub fn sfRectangleShape_getGlobalBounds(shape: *const sfRectangleShape) -> sfFlo pub fn sfRenderTexture_createWithSettings(width: c_uint, height: c_uint, settings: *const sfContextSettings) -> *mut sfRenderTexture; pub fn sfRenderTexture_destroy(renderTexture: *mut sfRenderTexture); pub fn sfRenderTexture_getSize(renderTexture: *const sfRenderTexture) -> sfVector2u; +pub fn sfRenderTexture_isSrgb(renderTexture: *const sfRenderTexture) -> bool; pub fn sfRenderTexture_setActive(renderTexture: *mut sfRenderTexture, active: bool) -> bool; pub fn sfRenderTexture_display(renderTexture: *mut sfRenderTexture); pub fn sfRenderTexture_clear(renderTexture: *mut sfRenderTexture, color: sfColor); @@ -183,6 +184,7 @@ pub fn sfRenderWindow_getPosition(renderWindow: *const sfRenderWindow) -> sfVect pub fn sfRenderWindow_setPosition(renderWindow: *mut sfRenderWindow, position: sfVector2i); pub fn sfRenderWindow_getSize(renderWindow: *const sfRenderWindow) -> sfVector2u; pub fn sfRenderWindow_setSize(renderWindow: *mut sfRenderWindow, size: sfVector2u); +pub fn sfRenderWindow_isSrgb(renderWindow: *const sfRenderWindow) -> bool; pub fn sfRenderWindow_setUnicodeTitle(renderWindow: *mut sfRenderWindow, title: *const u32); pub fn sfRenderWindow_setIcon(renderWindow: *mut sfRenderWindow, width: c_uint, height: c_uint, pixels: *const u8); pub fn sfRenderWindow_setVisible(renderWindow: *mut sfRenderWindow, visible: bool); diff --git a/src/graphics/render_texture.rs b/src/graphics/render_texture.rs index 0693afcc..6520406f 100644 --- a/src/graphics/render_texture.rs +++ b/src/graphics/render_texture.rs @@ -57,6 +57,14 @@ impl RenderTexture { unsafe { ffi::sfRenderTexture_display(self.render_texture) } } + /// Tell if the render texture will use sRGB encoding when drawing it + /// + /// Returns true if sRGB encoding is enabled, false if sRGB encoding is disabled + #[must_use] + pub fn is_srgb(&self) -> bool { + unsafe { ffi::sfRenderTexture_isSrgb(self.render_texture) } + } + /// Activate or deactivate a render texture as the current target for rendering /// /// # Arguments diff --git a/src/graphics/render_window.rs b/src/graphics/render_window.rs index 6b610140..5d870dba 100644 --- a/src/graphics/render_window.rs +++ b/src/graphics/render_window.rs @@ -379,6 +379,14 @@ impl RenderWindow { unsafe { &*ffi::sfRenderWindow_getSettings(self.render_window.as_ptr()) } } + /// Tell if the render texture will use sRGB encoding when drawing it + /// + /// Returns true if sRGB encoding is enabled, false if sRGB encoding is disabled + #[must_use] + pub fn is_srgb(&self) -> bool { + unsafe { ffi::sfRenderWindow_isSrgb(self.render_window.as_ptr()) } + } + /// Change the title of a window /// /// # Arguments