Switching to own List class.
Adding HStack View (WIP)
This commit is contained in:
parent
bdf5b25b28
commit
384c758295
4 changed files with 329 additions and 222 deletions
52
src/main.cpp
52
src/main.cpp
|
@ -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()) {
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue