#include "display/graphics/Renderer.h" namespace display::graphics { Renderer::Renderer(Framebuffer &framebuffer, model::HostRegistry ®istry, config::server::StyleConfig &config) : framebuffer(framebuffer), registry(registry), config(config), textRenderer(std::make_unique()), header(std::make_unique(config)), hostblock(std::make_unique(config)) { } void Renderer::render() { framebuffer.clear(Color{0, 0, 0}); header->draw(framebuffer, *textRenderer, START_X, START_Y); int blocksPerRow = (SCREEN_WIDTH + config.gap) / (config.hostblock.width + config.gap); if (blocksPerRow < 1) blocksPerRow = 1; int index = 0; for (auto &[host, m] : registry.snapshot()) { int col = index % blocksPerRow; int row = index / blocksPerRow; int x = START_X + col * (config.hostblock.width + config.gap); int y = START_Y + config.header.height + config.gap + row * (config.hostblock.height + config.gap); hostblock->draw( framebuffer, *textRenderer, x, y, host, m); ++index; } framebuffer.present(); } } // namespace display::graphics