summaryrefslogtreecommitdiff
path: root/src/px.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/px.c')
-rw-r--r--src/px.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/px.c b/src/px.c
index 267b2e0..7458bcd 100644
--- a/src/px.c
+++ b/src/px.c
@@ -181,6 +181,37 @@ pxRectfill(int x0, int y0, int x1, int y1, PxCol col)
}
void
+pxLine(int x0, int y0, int x1, int y1, PxCol col)
+{
+ int dx, dy, sx, sy, err, e2;
+
+ dx = x1 - x0;
+ dx = (dx < 0) ? (-dx) : (dx);
+ dy = y1 - y0;
+ dy = (dy < 0) ? (dy) : (-dy);
+ sx = (x0 < x1) ? (1) : (-1);
+ sy = (y0 < y1) ? (1) : (-1);
+ err = dx + dy;
+
+ for (;;) {
+ pxPset(x0, y0, col);
+
+ if (x0 == x1 && y0 == y1)
+ break;
+
+ e2 = 2 * err;
+ if (e2 >= dy) {
+ err += dy;
+ x0 += sx;
+ }
+ if (e2 <= dx) {
+ err += dx;
+ y0 += sy;
+ }
+ }
+}
+
+void
_pxSpr(const PxSprArgs *args)
{
int w = (args->w < 0) ? (int)(args->spr->w) : (args->w);