Add ui::asymmetric element that supports width_first() reshaping

This commit is contained in:
Nikita Lisitsa 2022-05-16 12:09:58 +03:00
parent 0b3ef5f4f5
commit 9a2c562eec
6 changed files with 34 additions and 14 deletions

View file

@ -0,0 +1,18 @@
#pragma once
#include <psemek/ui/element.hpp>
namespace psemek::ui
{
struct asymmetric
: element
{
virtual void set_width_first(bool value);
virtual bool width_first() const { return width_first_; }
protected:
bool width_first_ = true;
};
}

View file

@ -1,12 +1,12 @@
#pragma once
#include <psemek/ui/element.hpp>
#include <psemek/ui/asymmetric.hpp>
namespace psemek::ui
{
struct container
: element
: asymmetric
{
virtual bool add_child(std::shared_ptr<element> c) = 0;
virtual bool has_child(element * c) const = 0;

View file

@ -40,9 +40,6 @@ namespace psemek::ui
virtual void set_outer_margin(bool value);
virtual bool outer_margin() const { return outer_margin_; }
virtual void set_width_first(bool value);
virtual bool width_first() const { return width_first_; }
geom::box<float, 2> size_constraints() const override;
geom::interval<float> width_constraints(float height) const override;
@ -70,7 +67,6 @@ namespace psemek::ui
std::vector<float> column_weight_;
bool outer_margin_ = true;
bool width_first_ = true;
box_shape shape_;
};

View file

@ -1,12 +1,12 @@
#pragma once
#include <psemek/ui/element.hpp>
#include <psemek/ui/asymmetric.hpp>
namespace psemek::ui
{
struct single_container
: element
: asymmetric
{
children_range children() const override { return children_; }

View file

@ -0,0 +1,12 @@
#include <psemek/ui/asymmetric.hpp>
namespace psemek::ui
{
void asymmetric::set_width_first(bool value)
{
width_first_ = value;
post_reshape();
}
}

View file

@ -149,12 +149,6 @@ namespace psemek::ui
post_reshape();
}
void grid_layout::set_width_first(bool value)
{
width_first_ = value;
post_reshape();
}
template <int Dimension>
static std::vector<geom::interval<float>> cell_sizes(util::array<std::shared_ptr<element>, 2> const & children)
{