#pragma once #include #include "../datatypes.cpp" #include "../helpers.cpp" #include "../buffer.cpp" #include "../shaders/shader.cpp" #include "../shaders/colorshader.cpp" #include "../shaders/gradientshader.cpp" #include "../mapper.cpp" namespace UwU { // rectangle class Rectangle { public: Rectangle(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1) { this->x0 = x0; this->y0 = y0; this->x1 = x1; this->y1 = y1; } Rectangle() {} uint16_t x0; uint16_t y0; uint16_t x1; uint16_t y1; // Draw a rectangle void draw (Buffer buffer, Mapper mapper, Shader& shader) { // printf("color: %u, %u, %u, %u", shader.color().r, shader.color().g, shader.color().b, shader.color().a); if (x0 > buffer.width || y0 > buffer.height || x1 > buffer.width || y1 > buffer.height) {return;}; Coord2 uv = Coord2(); for (uint16_t y = y0; y < y1; y++) { for (uint16_t x = x0; x < x1; x++) { uv = mapper.map(Coord2(x, y)); buffer.drawPixelShader(x, y, uv.x, uv.y, shader); } } return; } }; }