#include "./Surface.h" #include "./Display.h" #include Surface::Surface(Display* dpy, const VirtualCoordinates& start, const VirtualCoordinates& end) : start(dpy->coordinateMapping()->virtualToPhysicalCoords(start)), end(dpy->coordinateMapping()->virtualToPhysicalCoords(end)), m_display(dpy) { } Surface& Surface::operator=(const CRGB& color) { paintWith([&](CRGB& pixel) { pixel = color; }); return *this; } Surface& Surface::operator+=(const CRGB& color) { paintWith([&](CRGB& pixel) { pixel += color; }); return *this; } void Surface::paintWith(std::function func) { //Log.verbose("Painting startx=%d endx=%d starty=%d endy=%d", start.x, end.x, start.y, end.y); for(auto x = start.x; x <= end.x; x++) { for(auto y = start.y; y <= end.y; y++) { //Log.verbose("x=%d y=%d", x, y); func(m_display->pixelAt(PhysicalCoordinates{x, y})); } } }