From bedb8c9fafd5414c930c0603e1ae952b030b47b2 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 19 May 2022 21:33:48 +0300 Subject: [PATCH] Remove label font_type setting & move it to style --- libs/ui/include/psemek/ui/label.hpp | 10 ---------- libs/ui/include/psemek/ui/style.hpp | 11 +++++++++++ libs/ui/source/label.cpp | 8 +------- libs/ui/source/style.cpp | 4 ++++ 4 files changed, 16 insertions(+), 17 deletions(-) diff --git a/libs/ui/include/psemek/ui/label.hpp b/libs/ui/include/psemek/ui/label.hpp index ebac04bd..f998de65 100644 --- a/libs/ui/include/psemek/ui/label.hpp +++ b/libs/ui/include/psemek/ui/label.hpp @@ -12,12 +12,6 @@ namespace psemek::ui struct label : element { - enum class font_type - { - normal, - bold, - }; - enum class halignment { left, @@ -46,9 +40,6 @@ namespace psemek::ui virtual void set_text(std::string text); virtual std::string_view text() const { return text_; } - virtual void set_font(font_type f); - virtual font_type font() const { return font_; } - virtual void set_halign(halignment value); virtual halignment halign() const { return halign_; } @@ -84,7 +75,6 @@ namespace psemek::ui private: std::string text_; - font_type font_ = font_type::normal; halignment halign_ = halignment::left; valignment valign_ = valignment::top; bool wrap_ = true; diff --git a/libs/ui/include/psemek/ui/style.hpp b/libs/ui/include/psemek/ui/style.hpp index 7fcb518a..d8c9ecbd 100644 --- a/libs/ui/include/psemek/ui/style.hpp +++ b/libs/ui/include/psemek/ui/style.hpp @@ -1,5 +1,6 @@ #pragma once +#include #include #include @@ -17,6 +18,14 @@ namespace psemek::ui struct element; + enum class text_style_flag + { + bold, + underline, + }; + + using text_style = util::flag_set; + struct style { std::optional scale; @@ -50,6 +59,8 @@ namespace psemek::ui std::optional text_scale; std::optional> text_shadow_offset; + std::optional text_style; + std::shared_ptr font; std::shared_ptr bold_font; diff --git a/libs/ui/source/label.cpp b/libs/ui/source/label.cpp index e2c38d4d..b11c3e4b 100644 --- a/libs/ui/source/label.cpp +++ b/libs/ui/source/label.cpp @@ -16,12 +16,6 @@ namespace psemek::ui on_state_changed(); } - void label::set_font(font_type f) - { - font_ = f; - on_state_changed(); - } - void label::set_halign(halignment value) { halign_ = value; @@ -145,7 +139,7 @@ namespace psemek::ui auto st = merged_own_style(); if (!st) return state; - auto font = (font_ == font_type::normal) ? st->font.get() : st->bold_font.get(); + auto font = st->text_style->is_set(text_style_flag::bold) ? st->bold_font.get() : st->font.get(); if (!font) return state; diff --git a/libs/ui/source/style.cpp b/libs/ui/source/style.cpp index ca26d715..e02c71ee 100644 --- a/libs/ui/source/style.cpp +++ b/libs/ui/source/style.cpp @@ -72,6 +72,7 @@ namespace psemek::ui merge(dst.text_color, src.text_color); merge(dst.text_scale, src.text_scale); merge(dst.text_shadow_offset, src.text_shadow_offset); + merge(dst.text_style, src.text_style); merge(dst.font, src.font); merge(dst.bold_font, src.bold_font); } @@ -125,6 +126,9 @@ namespace psemek::ui s.text_color = {255, 255, 255, 255}; s.text_scale = 1; s.text_shadow_offset = {1, 1}; + + s.text_style = text_style{}; + return s; }