From 3f4e42d7ce79da176e5e261302c808918910404a Mon Sep 17 00:00:00 2001 From: nedko Date: Thu, 18 Dec 2025 12:24:19 +0200 Subject: [PATCH] Added setters for Widget properties --- Widgets/WidgetImage.cpp | 37 +++++++++++++++++++++++++++++++++++++ Widgets/WidgetImage.h | 6 ++++++ Widgets/WidgetRect.cpp | 15 +++++++++++++++ Widgets/WidgetRect.h | 4 ++++ Widgets/WidgetText.cpp | 9 +++++++++ Widgets/WidgetText.h | 2 ++ 6 files changed, 73 insertions(+) diff --git a/Widgets/WidgetImage.cpp b/Widgets/WidgetImage.cpp index 539a5ab..7afa9fd 100644 --- a/Widgets/WidgetImage.cpp +++ b/Widgets/WidgetImage.cpp @@ -22,6 +22,43 @@ m_bg_color(bg_color) } } +void WidgetImage::set_filename(const string& filename) +{ + if (m_image_surface != nullptr) + { + SDL_FreeSurface(m_image_surface); + m_image_surface = nullptr; + } + + m_filename = filename; + m_image_surface = IMG_Load(m_filename.c_str()); + if (nullptr == m_image_surface) + { + // TODO: Print errors + } +} + +void WidgetImage::set_resize(ImageResize type) +{ + m_resize_type = type; +} + +void WidgetImage::set_halign(HorizontalAlign halign) +{ + m_halign = halign; +} + +void WidgetImage::set_valign(VerticalAlign valign) +{ + m_valign = valign; +} + +void WidgetImage::set_bg_color(SDL_Color bg_color) +{ + m_bg_color = bg_color; +} + + void WidgetImage::draw() { if (nullptr == m_surface) diff --git a/Widgets/WidgetImage.h b/Widgets/WidgetImage.h index 5921efc..d424835 100644 --- a/Widgets/WidgetImage.h +++ b/Widgets/WidgetImage.h @@ -40,6 +40,12 @@ public: VerticalAlign valign = VALIGN_CENTER, SDL_Color bg_color = SDL_Color{.r = 255, .g = 255, .b = 255, .a = SDL_ALPHA_TRANSPARENT}); + void set_filename(const std::string& filename); + void set_resize(ImageResize type); + void set_halign(HorizontalAlign halign); + void set_valign(VerticalAlign valign); + void set_bg_color(SDL_Color bg_color); + virtual void draw() override; static std::unique_ptr builder(const nlohmann::json& j); diff --git a/Widgets/WidgetRect.cpp b/Widgets/WidgetRect.cpp index f0fb7da..e81b71f 100644 --- a/Widgets/WidgetRect.cpp +++ b/Widgets/WidgetRect.cpp @@ -24,6 +24,21 @@ m_radius(radius) { } +void WidgetRect::set_color(SDL_Color color) +{ + m_color = color; +} + +void WidgetRect::set_stroke_size(int stroke_size) +{ + m_stroke_size = stroke_size +} + +void WidgetRect::set_radius(int radius) +{ + m_radius = radius; +} + void WidgetRect::draw() { if (nullptr == m_surface) diff --git a/Widgets/WidgetRect.h b/Widgets/WidgetRect.h index a6c0dce..79652b3 100644 --- a/Widgets/WidgetRect.h +++ b/Widgets/WidgetRect.h @@ -27,6 +27,10 @@ public: WidgetRect(int x, int y, int width, int height, int radius = 0, int stroke_size = -1); + void set_color(SDL_Color color); + void set_stroke_size(int stroke_size); + void set_radius(int radius); + virtual void draw() override; static std::unique_ptr builder(const nlohmann::json& j); diff --git a/Widgets/WidgetText.cpp b/Widgets/WidgetText.cpp index 4d02891..8438a6c 100644 --- a/Widgets/WidgetText.cpp +++ b/Widgets/WidgetText.cpp @@ -168,6 +168,15 @@ void WidgetText::set_color(SDL_Color text_color) m_text_color = text_color; } +void WidgetText::set_halign_via_visible(bool value) +{ + m_halign_via_visible = value; +} +void WidgetText::set_valign_via_visible(bool value) +{ + m_valign_via_visible = value; +} + void WidgetText::draw() { if (nullptr == m_surface) diff --git a/Widgets/WidgetText.h b/Widgets/WidgetText.h index 58170ef..5a3abb3 100644 --- a/Widgets/WidgetText.h +++ b/Widgets/WidgetText.h @@ -70,6 +70,8 @@ public: void set_halign(HorizontalAlign halign); void set_valign(VerticalAlign valign); void set_color(SDL_Color text_color); + void set_halign_via_visible(bool value); + void set_valign_via_visible(bool value); virtual void draw() override;