diff options
Diffstat (limited to 'src/px.c')
-rw-r--r-- | src/px.c | 31 |
1 files changed, 31 insertions, 0 deletions
@@ -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); |