Switching to own List class.

Adding HStack View (WIP)
This commit is contained in:
n0ffie 2025-04-12 14:37:50 +02:00
parent bdf5b25b28
commit 384c758295
4 changed files with 329 additions and 222 deletions

View file

@ -4,32 +4,52 @@
#include <iostream>
#include <cigus.hpp>
#include <cigui.hpp>
class NewView : public cigus::UI::View {
public:
bool update() override
{
std::cout << "Update...\n";
return true;
// WIP - not working yet
// Layout unsupported
struct HStack final : cig::View {
using Stack = cig::utils::List<View*>;
Stack views;
void append(View* view) { views.push_back(view); }
bool update() override {
bool needs_redraw = false;
views.iterate([this, &needs_redraw](View*& view) { if (view->update()) needs_redraw = true; });
return needs_redraw;
}
void body() override {
std::cout << "Body\n";
Rectangle(400,400, sf::Color(20,20,120));
Rectangle(100, 100, sf::Color(250,250,250));
Rectangle(10,20, sf::Color(120,120,120));
View* body() override {
views.iterate([this](View* view) { view->draw(); });
views.iterate([this](const View* view) {
this->m_RenderCalls.expand(view->renderCalls());
});
return nullptr;
}
};
struct NewView final : cig::View {
View* body() override {
auto List = new HStack();
auto view = new cig::Rectangle({400, 400});
view->setBorderColor(sf::Color::Red)->setBorderThickness(5)->setColor(sf::Color::Green);
List->append(view);
view = new cig::Rectangle({100, 100});
view->setBorderColor(sf::Color::Blue)->setBorderThickness(5)->setColor(sf::Color::Yellow);
List->append(view);
return List;
}
};
int main(int argc, char** argv) {
namespace UI = cigus::UI;
sf::RenderWindow window(sf::VideoMode({800, 600}), "Hello World!");
window.setFramerateLimit(60);
const auto view = new NewView();
const UI::Renderer renderer(view);
const cig::Renderer renderer(view);
while (window.isOpen()) {