Remove label font_type setting & move it to style

This commit is contained in:
Nikita Lisitsa 2022-05-19 21:33:48 +03:00
parent 5eab34a1dd
commit bedb8c9faf
4 changed files with 16 additions and 17 deletions

View file

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

View file

@ -1,5 +1,6 @@
#pragma once
#include <psemek/util/flag_set.hpp>
#include <psemek/ui/font.hpp>
#include <psemek/gfx/color.hpp>
@ -17,6 +18,14 @@ namespace psemek::ui
struct element;
enum class text_style_flag
{
bold,
underline,
};
using text_style = util::flag_set<text_style_flag, std::uint8_t>;
struct style
{
std::optional<int> scale;
@ -50,6 +59,8 @@ namespace psemek::ui
std::optional<int> text_scale;
std::optional<geom::vector<int, 2>> text_shadow_offset;
std::optional<ui::text_style> text_style;
std::shared_ptr<struct font> font;
std::shared_ptr<struct font> bold_font;

View file

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

View file

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