From 27a322d1353f5c48503a4fb7d8058885356a4e96 Mon Sep 17 00:00:00 2001 From: Annika Date: Sun, 5 Jul 2026 06:41:26 -0700 Subject: [PATCH] added trapezoid drawing --- test | Bin 37080 -> 41176 bytes test.cpp | 33 +++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/test b/test index 2863064929df8c5c22644ece69fdbe8efe36ffc1..2d09d8cde5e5d343fb8b1be31596a04c0c03b025 100755 GIT binary patch literal 41176 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⪻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 QAn1K}N# 0) { - x++; + x += xi; d += (2 * (dx - dy)); } else { d += (2 * dx); @@ -147,9 +152,9 @@ namespace UwU { bresenhamLow(y0, x1, y1, LUT); } else { if (y0 > y1) { - bresenhamHigh(y1, x1, y0, LUT); + bresenhamHigh(x1, y1, 0, y0, LUT); } else { - bresenhamHigh(y0, x1, y1, LUT); + bresenhamHigh(0, y0, x1, y1, LUT); } } return; @@ -323,7 +328,19 @@ namespace UwU { // Draw a horizontally bounded trapezoid // coords.y1 >= coords.y0 void trapezoid (Trapezoid coords, Color color) { - + uint16_t height = 1 + coords.y1 - coords.y0; + int16_t LeftBound[height]; + int16_t RightBound[height]; + + this->bresenham(coords.xl0, coords.y1 - coords.y0, coords.xl1, LeftBound); + this->bresenham(coords.xr0, coords.y1 - coords.y0, coords.xr1, RightBound); + + for (uint16_t i = 0; i <= height; i++) { + for (uint16_t x = LeftBound[i]; x <= RightBound[i]; x++) { + this->putPixel((uint32_t)x, (uint32_t)i + coords.y0, color.r, color.g, color.b, color.a); + } + } + return; } }; } @@ -346,7 +363,7 @@ int main(void) { draw.rectangle(UwU::Coord2(69, 69), UwU::Coord2(420, 420), fuchsia); draw.rectangleGradient(UwU::Coord2(200, 200), UwU::Coord2(600, 400), red, blue, alpha, red); - + draw.trapezoid(UwU::Trapezoid(300, 400, 360, 360, 600, 401), green); draw.point(UwU::Coord2(387, 43), green);