65 lines
1.6 KiB
C++
65 lines
1.6 KiB
C++
#include <psemek/ui/style.hpp>
|
|
|
|
namespace psemek::ui
|
|
{
|
|
|
|
template <typename T>
|
|
void merge(std::optional<T> & dst, std::optional<T> const & src)
|
|
{
|
|
if (!dst) dst = src;
|
|
}
|
|
|
|
template <typename T>
|
|
void merge(std::shared_ptr<T> & dst, std::shared_ptr<T> const & src)
|
|
{
|
|
if (!dst) dst = src;
|
|
}
|
|
|
|
void merge(style & dst, style const & src)
|
|
{
|
|
merge(dst.bg_color, src.bg_color);
|
|
merge(dst.fg_color, src.fg_color);
|
|
merge(dst.highlight_color, src.highlight_color);
|
|
merge(dst.action_color, src.action_color);
|
|
merge(dst.action_offset, src.action_offset);
|
|
merge(dst.border_color, src.border_color);
|
|
merge(dst.border_width, src.border_width);
|
|
merge(dst.axis_color, src.axis_color);
|
|
merge(dst.shadow_offset, src.shadow_offset);
|
|
merge(dst.shadow_color, src.shadow_color);
|
|
merge(dst.inner_margin, src.inner_margin);
|
|
merge(dst.outer_margin, src.outer_margin);
|
|
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.font, src.font);
|
|
}
|
|
|
|
style default_style()
|
|
{
|
|
style s;
|
|
s.bg_color = {95, 95, 95, 255};
|
|
s.fg_color = {127, 127, 127, 255};
|
|
s.highlight_color = {159, 159, 159, 255};
|
|
s.action_color = {63, 63, 63, 255};
|
|
|
|
s.action_offset = {1, 1};
|
|
|
|
s.border_color = {255, 255, 255, 255};
|
|
s.border_width = 3;
|
|
|
|
s.axis_color = {255, 255, 255, 255};
|
|
|
|
s.shadow_offset = {1, 1};
|
|
s.shadow_color = {0, 0, 0, 255};
|
|
|
|
s.inner_margin = 5;
|
|
s.outer_margin = 10;
|
|
|
|
s.text_color = {255, 255, 255, 255};
|
|
s.text_scale = 1;
|
|
s.text_shadow_offset = {1, 1};
|
|
return s;
|
|
}
|
|
|
|
}
|