add unfinished vertical box layout

This commit is contained in:
hippoz 2022-06-15 04:44:55 +03:00
parent 96a7739341
commit 91a3ed6a87
Signed by: hippoz
GPG key ID: 7C52899193467641
2 changed files with 55 additions and 0 deletions

28
src/VerticalBoxLayout.cpp Normal file
View file

@ -0,0 +1,28 @@
#include "VerticalBoxLayout.hpp"
#include "Point.hpp"
#include "Widget.hpp"
namespace Raven {
void VerticalBoxLayout::run() {
if (!m_target) {
return;
}
Point current_point { m_target->rect().x() + m_margin, m_target->rect().y() + m_margin };
auto& children = m_target->children();
for (auto child : children) {
if (child->absolute()) {
continue;
}
child->rect().set_x(current_point.x());
child->rect().set_y(current_point.y());
current_point.add(0, child->rect().height() + m_margin);
}
}
}

27
src/VerticalBoxLayout.hpp Normal file
View file

@ -0,0 +1,27 @@
#pragma once
#include "Layout.hpp"
namespace Raven {
class VerticalBoxLayout : public Layout {
private:
double m_margin { 0.0 };
public:
VerticalBoxLayout()
: Layout() {}
VerticalBoxLayout(double margin)
: Layout()
, m_margin(margin) {}
void run();
double margin() { return m_margin; }
void set_margin(double margin) { m_margin = margin; run(); }
virtual ~VerticalBoxLayout() {}
};
}