Support scaling ui styles
This commit is contained in:
parent
8c21543ecb
commit
934512f762
2 changed files with 41 additions and 8 deletions
|
|
@ -39,6 +39,8 @@ namespace psemek::ui
|
||||||
|
|
||||||
void merge(style & dst, style const & src);
|
void merge(style & dst, style const & src);
|
||||||
|
|
||||||
|
style scale(style const & s, float factor);
|
||||||
|
|
||||||
style default_style();
|
style default_style();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,33 @@
|
||||||
namespace psemek::ui
|
namespace psemek::ui
|
||||||
{
|
{
|
||||||
|
|
||||||
template <typename T>
|
namespace
|
||||||
void merge(std::optional<T> & dst, std::optional<T> const & src)
|
|
||||||
{
|
{
|
||||||
if (!dst) dst = src;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void merge(std::shared_ptr<T> & dst, std::shared_ptr<T> const & src)
|
void merge(std::optional<T> & dst, std::optional<T> const & src)
|
||||||
{
|
{
|
||||||
if (!dst) dst = 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void scale(T & dst, float factor)
|
||||||
|
{
|
||||||
|
if (dst) dst = static_cast<T>((*dst) * factor);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename T, std::size_t N>
|
||||||
|
void scale(std::optional<geom::vector<T, N>> & dst, float factor)
|
||||||
|
{
|
||||||
|
if (dst) dst = geom::cast<T>(geom::cast<float>(*dst) * factor);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void merge(style & dst, style const & src)
|
void merge(style & dst, style const & src)
|
||||||
|
|
@ -36,6 +53,20 @@ namespace psemek::ui
|
||||||
merge(dst.font, src.font);
|
merge(dst.font, src.font);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
style scale(style const & s, float factor)
|
||||||
|
{
|
||||||
|
style result = s;
|
||||||
|
scale(result.action_offset, factor);
|
||||||
|
scale(result.border_width, factor);
|
||||||
|
scale(result.ref_height, factor);
|
||||||
|
scale(result.shadow_offset, factor);
|
||||||
|
scale(result.inner_margin, factor);
|
||||||
|
scale(result.outer_margin, factor);
|
||||||
|
scale(result.text_scale, factor);
|
||||||
|
scale(result.text_shadow_offset, factor);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
style default_style()
|
style default_style()
|
||||||
{
|
{
|
||||||
style s;
|
style s;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue