Mercurial > hg > dmlib
view dmdrawline.h @ 75:e6535609c161
Initial implementation of loading and saving of bitmap fonts.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 02 Oct 2012 05:51:08 +0300 |
parents | 997e26f17946 |
children | 92cc5e1fa180 |
line wrap: on
line source
static int DM_DRAWLINE_NAME (SDL_Surface *screen, int x0, int y0, int x1, int y1, const Uint32 col) { int dx, dy, xstep, ystep; const int qpitch = screen->pitch / DM_DRAWLINE_DST_BYTES; // Clipping if (dmClipLineCoords(&x0, &y0, &x1, &y1, screen)) return -1; // Compute initial deltas dx = (x1 - x0) * 2; dy = (y1 - y0) * 2; if (dx < 0) { dx = -dx; xstep = -1; } else xstep = 1; if (dy < 0) { dy = -dy; ystep = -qpitch; } else ystep = qpitch; // Compute offsets y0 *= qpitch; y1 *= qpitch; DM_DRAWLINE_DST_TYPE *pix = screen->pixels; // Continue based on which delta is larger if (dx > dy) { int afrac = dy - (dx / 2); while (x0 != x1) { if (afrac >= 0) { y0 += ystep; afrac -= dx; } x0 += xstep; afrac += dy; DM_DRAWLINE_INNER } } else { int afrac = dx - (dy / 2); while (y0 != y1) { if (afrac >= 0) { x0 += xstep; afrac -= dy; } y0 += ystep; afrac += dx; DM_DRAWLINE_INNER } } return 0; } #undef DM_DRAWLINE_NAME #undef DM_DRAWLINE_DST_BYTES #undef DM_DRAWLINE_DST_TYPE