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);
|
||||
|
||||
style scale(style const & s, float factor);
|
||||
|
||||
style default_style();
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,16 +3,33 @@
|
|||
namespace psemek::ui
|
||||
{
|
||||
|
||||
template <typename T>
|
||||
void merge(std::optional<T> & dst, std::optional<T> const & src)
|
||||
namespace
|
||||
{
|
||||
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 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;
|
||||
}
|
||||
|
||||
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)
|
||||
|
|
@ -36,6 +53,20 @@ namespace psemek::ui
|
|||
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 s;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue