From e8c178db6f09f8b3be75da93fcbde48b7d823378 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Fri, 31 Oct 2025 11:05:29 -0400 Subject: [PATCH] Changing from RenderWindow to RenderTarget so the GUI can be rendered into a texture for zooming/saving. --- include/guecs/sfml/components.hpp | 10 +++++----- include/guecs/ui.hpp | 6 +++--- meson.build | 2 +- src/guecs/sfml/components.cpp | 10 +++++----- src/guecs/ui.cpp | 4 ++-- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/include/guecs/sfml/components.hpp b/include/guecs/sfml/components.hpp index 74d12bc..34022f3 100644 --- a/include/guecs/sfml/components.hpp +++ b/include/guecs/sfml/components.hpp @@ -21,7 +21,7 @@ namespace guecs { void init(lel::Cell &cell, shared_ptr font_ptr); void update(const std::wstring& new_content); - void render(sf::RenderWindow& window, sf::Shader *shader_ptr); + void render(sf::RenderTarget& window, sf::Shader *shader_ptr); }; struct Sprite { @@ -33,7 +33,7 @@ namespace guecs { void init(lel::Cell &cell); void update(const string& new_name); - void render(sf::RenderWindow& window, sf::Shader *shader_ptr); + void render(sf::RenderTarget& window, sf::Shader *shader_ptr); }; struct Icon : public Sprite { @@ -58,7 +58,7 @@ namespace guecs { shared_ptr shape = nullptr; void init(lel::Cell& cell); - void render(sf::RenderWindow& window, sf::Shader *shader_ptr); + void render(sf::RenderTarget& window, sf::Shader *shader_ptr); }; struct Meter { @@ -68,7 +68,7 @@ namespace guecs { void init(lel::Cell& cell); void init(lel::Cell& cell, Rectangle& bg); - void render(lel::Cell& cell, sf::RenderWindow& window, sf::Shader *shader_ptr); + void render(lel::Cell& cell, sf::RenderTarget& window, sf::Shader *shader_ptr); }; struct Effect { @@ -114,7 +114,7 @@ namespace guecs { Background() {} void init(); - void render(sf::RenderWindow& window); + void render(sf::RenderTarget& window); void set_color(sf::Color c); void set_sprite(const std::string& name, bool stretch=false); diff --git a/include/guecs/ui.hpp b/include/guecs/ui.hpp index bb1f7b7..b25d940 100644 --- a/include/guecs/ui.hpp +++ b/include/guecs/ui.hpp @@ -77,11 +77,11 @@ namespace guecs { } void init(); - void render(sf::RenderWindow& window); + void render(sf::RenderTarget& window); bool mouse(float x, float y, Modifiers mods); void click_on(const std::string& name, Modifiers mods=NO_MODS); void click_on(Entity slot_id, Modifiers mods=NO_MODS); - void debug_layout(sf::RenderWindow& window); + void debug_layout(sf::RenderTarget& window); Entity entity() { return ++entity_count; } @@ -220,7 +220,7 @@ namespace guecs { } template - void render_helper(sf::RenderWindow& window, T& target, sf::Shader *shader_ptr) { + void render_helper(sf::RenderTarget& window, T& target, sf::Shader *shader_ptr) { window.draw(*target, shader_ptr); } diff --git a/meson.build b/meson.build index 57f07ec..e05ce36 100644 --- a/meson.build +++ b/meson.build @@ -3,7 +3,7 @@ # HEY BUG: when you have a . spec in a LEL it doesn't work on text project('lel-guecs', 'cpp', - version: '0.6.0', + version: '0.7.0', default_options: [ 'cpp_std=c++20', 'cpp_args=-D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1', diff --git a/src/guecs/sfml/components.cpp b/src/guecs/sfml/components.cpp index e52097f..45184dd 100644 --- a/src/guecs/sfml/components.cpp +++ b/src/guecs/sfml/components.cpp @@ -46,7 +46,7 @@ namespace guecs { text->setCharacterSize(size); } - void Text::render(sf::RenderWindow& window, sf::Shader *shader_ptr) { + void Text::render(sf::RenderTarget& window, sf::Shader *shader_ptr) { window.draw(*text, shader_ptr); } @@ -87,7 +87,7 @@ namespace guecs { sfml_center_helper(sprite, cell, padding); } - void Sprite::render(sf::RenderWindow& window, sf::Shader *shader_ptr) { + void Sprite::render(sf::RenderTarget& window, sf::Shader *shader_ptr) { window.draw(*sprite, shader_ptr); } @@ -101,7 +101,7 @@ namespace guecs { sfml_center_helper(shape, cell, padding); } - void Rectangle::render(sf::RenderWindow& window, sf::Shader *shader_ptr) { + void Rectangle::render(sf::RenderTarget& window, sf::Shader *shader_ptr) { window.draw(*shape, shader_ptr); } @@ -114,7 +114,7 @@ namespace guecs { bar.init(cell); } - void Meter::render(lel::Cell& cell, sf::RenderWindow& window, sf::Shader *shader_ptr) { + void Meter::render(lel::Cell& cell, sf::RenderTarget& window, sf::Shader *shader_ptr) { float level = std::clamp(percent, 0.0f, 1.0f) * float(cell.w); // ZED: this 6 is a border width, make it a thing bar.shape->setSize({std::max(level, 0.0f), float(cell.h - 6)}); @@ -170,7 +170,7 @@ namespace guecs { } } - void Background::render(sf::RenderWindow& window) { + void Background::render(sf::RenderTarget& window) { if(shape != nullptr) { window.draw(*shape); } diff --git a/src/guecs/ui.cpp b/src/guecs/ui.cpp index 1cbaffd..75ff28a 100644 --- a/src/guecs/ui.cpp +++ b/src/guecs/ui.cpp @@ -95,7 +95,7 @@ namespace guecs { }); } - void UI::debug_layout(sf::RenderWindow& window) { + void UI::debug_layout(sf::RenderTarget& window) { query([&](const auto, auto &cell) { sf::RectangleShape rect{{float(cell.w), float(cell.h)}}; rect.setPosition({float(cell.x), float(cell.y)}); @@ -114,7 +114,7 @@ namespace guecs { } } - void UI::render(sf::RenderWindow& window) { + void UI::render(sf::RenderTarget& window) { if(auto bg = get_if(MAIN)) { bg->render(window); }