#include "Renderer.h" namespace display::graphics { Renderer::Renderer(Framebuffer &framebuffer, model::HostRegistry ®istry) : framebuffer(framebuffer), registry(registry) { } void Renderer::render() { framebuffer.clear(Color{0, 0, 0}); header.draw(framebuffer, textRenderer, START_X, START_Y); int blocksPerRow = (SCREEN_WIDTH + BLOCK_GAP) / (display::ui::hostblock::BLOCK_WIDTH + BLOCK_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 * (display::ui::hostblock::BLOCK_WIDTH + BLOCK_GAP); int y = START_Y + header.height() + BLOCK_GAP + row * (display::ui::hostblock::BLOCK_HEIGHT + BLOCK_GAP); hostblock.draw( framebuffer, textRenderer, x, y, host, m); ++index; } framebuffer.present(); } } // namespace display::graphics