From 18ce6a039db876c98a71d06e92ef8bf9632ef065 Mon Sep 17 00:00:00 2001 From: Annika Date: Sat, 4 Jul 2026 01:28:13 -0700 Subject: [PATCH] created point and rectangle drawing methods --- test | Bin 36928 -> 36928 bytes test.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 48 insertions(+), 6 deletions(-) diff --git a/test b/test index 20acaccbcb33e961af5822f4ee0e147c7687aec5..7acbb7d5d8eb83c9985587a149aaf38986f47c42 100755 GIT binary patch delta 4821 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 DOK@5t delta 4575 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 this->width || y0 > this->height || x1 > this->width || y1 > this->height) {return;}; + for (uint32_t y = y0; y < y1; y++) { + for (uint32_t x = x0; x < x1; x++) { + size_t i = (size_t)y * waymini_get_stride(this->wm) + (size_t)x * 4; + this->pixels[i + 0] = b; // B + this->pixels[i + 1] = g; // G + this->pixels[i + 2] = r; // R + this->pixels[i + 3] = 0xFF; // A + } + } return; } - + // Fill a simple gradient. Each row is stride bytes. void rainbow() { for (uint32_t y = 0; y < this->height; y++) { for (uint32_t x = 0; x < this->width; x++) { size_t i = (size_t)y * waymini_get_stride(this->wm) + (size_t)x * 4; - this->pixels[i + 0] = (uint8_t)(y * 255 / this->height); /* B */ - this->pixels[i + 1] = 0x00; /* G */ - this->pixels[i + 2] = (uint8_t)(x * 255 / this->width); /* R */ - this->pixels[i + 3] = 0xFF; /* A (ignored for XRGB) */ + this->pixels[i + 0] = (uint8_t)(y * 255 / this->height); // B + this->pixels[i + 1] = 0x00; // G + this->pixels[i + 2] = (uint8_t)(x * 255 / this->width); // R + this->pixels[i + 3] = 0xFF; // A } } } + + void point (uint32_t x, uint32_t y, uint8_t r, uint8_t g, uint8_t b) { + if (x > this->width || y > this->height) {return;}; + size_t i = (size_t)y * waymini_get_stride(this->wm) + (size_t)x * 4; + this->pixels[i + 0] = b; // B + this->pixels[i + 1] = g; // G + this->pixels[i + 2] = r; // R + this->pixels[i + 3] = 0xFF; // A + } + + // // Uses Bresenham's line algorithm to draw line of any slope + // void line (uint32_t x0, uint32_t y0, uint32_t x1, uint32_t y1, uint8_t r, uint8_t g, uint8_t b) { + // if (x0 > this->width || y0 > this->height || x1 > this->width || y1 > this->height) {return;}; + // int32_t dx = (int32_t)x1 - (int32_t)x0; + // int32_t dy = (int32_t)y1 - (int32_t)y1; + // int32_t yi = 1; + // if (dy < 0) { + // yi = -1; + // dy = -dy; + // } + // int32_t d = (2 * dy) - dx; + // int32_t y = y0 + // for (uint32_t x = x0; x < x1; x++) { + + // } + // size_t i = (size_t)y * waymini_get_stride(this->wm) + (size_t)x * 4; + // this->pixels[i + 0] = b; // B + // this->pixels[i + 1] = g; // G + // this->pixels[i + 2] = r; // R + // this->pixels[i + 3] = 0xFF; // A + // } }; } @@ -71,7 +112,8 @@ int main(void) { draw.rainbow(); waymini_present(draw.wm); - draw.pixels[200001] = 255; + draw.rectangle(69, 69, 420, 420, 0xB0, 0x0B, 0x69); + draw.point(387, 43, 0x00, 0xff, 0x00); while (!waymini_should_close(draw.wm)) { if (waymini_dispatch(draw.wm) < 0) break;