summaryrefslogtreecommitdiffhomepage
path: root/src/textures.c
diff options
context:
space:
mode:
authorSourav Gupta <[email protected]>2020-03-22 00:53:50 +0530
committerGitHub <[email protected]>2020-03-21 20:23:50 +0100
commit574c689ff7377d11f087ed1f3cd29365b7ba304c (patch)
treeb166437621657e0906532b8049355da9e9b809c8 /src/textures.c
parentb178c992a186817baa068333270bbe5fa19a05ce (diff)
downloadraylib-574c689ff7377d11f087ed1f3cd29365b7ba304c.tar.gz
raylib-574c689ff7377d11f087ed1f3cd29365b7ba304c.zip
Added draw functions to ImageDraw*() (#1138)
Added draw functions: ImageClearBackground() ImageDrawPixel() ImageDrawLineEx() ImageDrawCircle()
Diffstat (limited to 'src/textures.c')
-rw-r--r--src/textures.c57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/textures.c b/src/textures.c
index 9e229b8c..509efe6e 100644
--- a/src/textures.c
+++ b/src/textures.c
@@ -2014,6 +2014,63 @@ void ImageDrawRectangleLines(Image *dst, Rectangle rec, int thick, Color color)
ImageDrawRectangle(dst, (Rectangle){ rec.x, rec.y + rec.height - thick, rec.width, thick }, color);
}
+// Clear image background with given color
+void ImageClearBackground(Image *dst, Color color)
+{
+ ImageDrawRectangle(dst, (Rectangle){ 0.0f, 0.0f, dst->width, dst->height }, color);
+}
+
+// Draw pixel within an image
+void ImageDrawPixel(Image *dst, Vector2 position, Color color)
+{
+ ImageDrawRectangle(dst, (Rectangle){ position.x, position.y, 1.0f, 1.0f }, color);
+}
+
+// Draw circle within an image
+void ImageDrawCircle(Image *dst, Vector2 center, int radius, Color color)
+{
+ int x = 0, y = radius, xc = center.x, yc = center.y;
+ int decesionParameter = 3 - 2 * radius;
+ while (y >= x)
+ {
+ ImageDrawPixel(dst, (Vector2){ xc + x, yc + y }, color);
+ ImageDrawPixel(dst, (Vector2){ xc - x, yc + y }, color);
+ ImageDrawPixel(dst, (Vector2){ xc + x, yc - y }, color);
+ ImageDrawPixel(dst, (Vector2){ xc - x, yc - y }, color);
+ ImageDrawPixel(dst, (Vector2){ xc + y, yc + x }, color);
+ ImageDrawPixel(dst, (Vector2){ xc - y, yc + x }, color);
+ ImageDrawPixel(dst, (Vector2){ xc + y, yc - x }, color);
+ ImageDrawPixel(dst, (Vector2){ xc - y, yc - x }, color);
+ x++;
+ if (decesionParameter > 0)
+ {
+ y--;
+ decesionParameter = decesionParameter + 4 * (x - y) + 10;
+ }
+ else
+ decesionParameter = decesionParameter + 4 * x + 6;
+ }
+}
+
+// Draw line within an image
+void ImageDrawLineEx(Image *dst, Vector2 start, Vector2 end, Color color)
+{
+ int x1 = start.x, y1 = start.y, x2 = end.x, y2 = end.y;
+ int m = 2 * (y2 - y1);
+ int slopeError = m - (x2 - x1);
+ for (int x = x1, y = y1; x <= x2; x++)
+ {
+ ImageDrawPixel(dst, (Vector2){ x, y }, color);
+ slopeError += m;
+
+ if (slopeError >= 0)
+ {
+ y++;
+ slopeError -= 2 * (x2 - x1);
+ }
+ }
+}
+
// Draw text (default font) within an image (destination)
void ImageDrawText(Image *dst, Vector2 position, const char *text, int fontSize, Color color)
{