]> git.localhorst.tv Git - blobs.git/blob - src/ui/Panel.hpp
cleaned up ui a little
[blobs.git] / src / ui / Panel.hpp
1 #ifndef BLOBS_UI_PANEL_HPP_
2 #define BLOBS_UI_PANEL_HPP_
3
4 #include "Widget.hpp"
5
6 #include <memory>
7 #include <vector>
8
9
10 namespace blobs {
11 namespace ui {
12
13 class Panel
14 : public Widget {
15
16 public:
17         enum Dir {
18                 HORIZONTAL,
19                 VERTICAL,
20         };
21
22 public:
23         Panel();
24         ~Panel() override;
25
26 public:
27         // panel takes ownership
28         Panel &Add(Widget *);
29
30         Panel &Background(const glm::vec4 &);
31         Panel &Padding(const glm::vec2 &);
32         Panel &Spacing(float);
33         Panel &Direction(Dir);
34
35         glm::vec2 Size() override;
36         void Relayout();
37         void Draw(app::Assets &, graphics::Viewport &) noexcept override;
38
39 private:
40         std::vector<std::unique_ptr<Widget>> widgets;
41         glm::vec4 bg_color;
42         glm::vec2 padding;
43         float spacing;
44         Dir dir;
45         glm::vec2 size;
46
47 };
48
49 }
50 }
51
52 #endif