Remove label font_type setting & move it to style
This commit is contained in:
parent
5eab34a1dd
commit
bedb8c9faf
4 changed files with 16 additions and 17 deletions
|
|
@ -12,12 +12,6 @@ namespace psemek::ui
|
||||||
struct label
|
struct label
|
||||||
: element
|
: element
|
||||||
{
|
{
|
||||||
enum class font_type
|
|
||||||
{
|
|
||||||
normal,
|
|
||||||
bold,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class halignment
|
enum class halignment
|
||||||
{
|
{
|
||||||
left,
|
left,
|
||||||
|
|
@ -46,9 +40,6 @@ namespace psemek::ui
|
||||||
virtual void set_text(std::string text);
|
virtual void set_text(std::string text);
|
||||||
virtual std::string_view text() const { return 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 void set_halign(halignment value);
|
||||||
virtual halignment halign() const { return halign_; }
|
virtual halignment halign() const { return halign_; }
|
||||||
|
|
||||||
|
|
@ -84,7 +75,6 @@ namespace psemek::ui
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string text_;
|
std::string text_;
|
||||||
font_type font_ = font_type::normal;
|
|
||||||
halignment halign_ = halignment::left;
|
halignment halign_ = halignment::left;
|
||||||
valignment valign_ = valignment::top;
|
valignment valign_ = valignment::top;
|
||||||
bool wrap_ = true;
|
bool wrap_ = true;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <psemek/util/flag_set.hpp>
|
||||||
#include <psemek/ui/font.hpp>
|
#include <psemek/ui/font.hpp>
|
||||||
#include <psemek/gfx/color.hpp>
|
#include <psemek/gfx/color.hpp>
|
||||||
|
|
||||||
|
|
@ -17,6 +18,14 @@ namespace psemek::ui
|
||||||
|
|
||||||
struct element;
|
struct element;
|
||||||
|
|
||||||
|
enum class text_style_flag
|
||||||
|
{
|
||||||
|
bold,
|
||||||
|
underline,
|
||||||
|
};
|
||||||
|
|
||||||
|
using text_style = util::flag_set<text_style_flag, std::uint8_t>;
|
||||||
|
|
||||||
struct style
|
struct style
|
||||||
{
|
{
|
||||||
std::optional<int> scale;
|
std::optional<int> scale;
|
||||||
|
|
@ -50,6 +59,8 @@ namespace psemek::ui
|
||||||
std::optional<int> text_scale;
|
std::optional<int> text_scale;
|
||||||
std::optional<geom::vector<int, 2>> text_shadow_offset;
|
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> font;
|
||||||
std::shared_ptr<struct font> bold_font;
|
std::shared_ptr<struct font> bold_font;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,6 @@ namespace psemek::ui
|
||||||
on_state_changed();
|
on_state_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
void label::set_font(font_type f)
|
|
||||||
{
|
|
||||||
font_ = f;
|
|
||||||
on_state_changed();
|
|
||||||
}
|
|
||||||
|
|
||||||
void label::set_halign(halignment value)
|
void label::set_halign(halignment value)
|
||||||
{
|
{
|
||||||
halign_ = value;
|
halign_ = value;
|
||||||
|
|
@ -145,7 +139,7 @@ namespace psemek::ui
|
||||||
auto st = merged_own_style();
|
auto st = merged_own_style();
|
||||||
if (!st) return state;
|
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;
|
if (!font) return state;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@ namespace psemek::ui
|
||||||
merge(dst.text_color, src.text_color);
|
merge(dst.text_color, src.text_color);
|
||||||
merge(dst.text_scale, src.text_scale);
|
merge(dst.text_scale, src.text_scale);
|
||||||
merge(dst.text_shadow_offset, src.text_shadow_offset);
|
merge(dst.text_shadow_offset, src.text_shadow_offset);
|
||||||
|
merge(dst.text_style, src.text_style);
|
||||||
merge(dst.font, src.font);
|
merge(dst.font, src.font);
|
||||||
merge(dst.bold_font, src.bold_font);
|
merge(dst.bold_font, src.bold_font);
|
||||||
}
|
}
|
||||||
|
|
@ -125,6 +126,9 @@ namespace psemek::ui
|
||||||
s.text_color = {255, 255, 255, 255};
|
s.text_color = {255, 255, 255, 255};
|
||||||
s.text_scale = 1;
|
s.text_scale = 1;
|
||||||
s.text_shadow_offset = {1, 1};
|
s.text_shadow_offset = {1, 1};
|
||||||
|
|
||||||
|
s.text_style = text_style{};
|
||||||
|
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue