Changing from RenderWindow to RenderTarget so the GUI can be rendered into a texture for zooming/saving.

This commit is contained in:
Zed A. Shaw 2025-10-31 11:05:29 -04:00
parent 070244269e
commit e8c178db6f
5 changed files with 16 additions and 16 deletions

View file

@ -21,7 +21,7 @@ namespace guecs {
void init(lel::Cell &cell, shared_ptr<sf::Font> 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<sf::RectangleShape> 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);

View file

@ -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<typename T>
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);
}

View file

@ -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',

View file

@ -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);
}

View file

@ -95,7 +95,7 @@ namespace guecs {
});
}
void UI::debug_layout(sf::RenderWindow& window) {
void UI::debug_layout(sf::RenderTarget& window) {
query<lel::Cell>([&](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<Background>(MAIN)) {
bg->render(window);
}