|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 904 (0x388) Types: TextFile Notes: UNIX file Names: »linef.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦0a3c255ba⟧ UNIX Filesystem └─⟦this⟧ »graphics/linef.c«
#define TRUE -1 #define FALSE 0 #define max(x,y) (((x) > (y)) ? (x) : (y)) #define abs(x) (((x) < 0) ? -(x) : (x)) #define sign(x) ((x) > 0 ? 1 : ((x) == 0 ? 0 : (-1))) linef(x1, y1, x2, y2, color, style, orxor, first_on) unsigned style; int x1, y1, x2, y2, color, orxor, first_on; { int ix, iy, i, inc, x, y, dx, dy, plot, plotx, ploty; unsigned style_mask; style = (style == 0) ? 0xFFFF : style; style_mask = style; dx = x2 - x1; dy = y2 - y1; ix = abs(dx); iy = abs(dy); inc = max(ix, iy); plotx = x1; ploty = y1; x = y = 0; if (first_on) point(plotx, ploty); for (i = 0; i <= inc; ++i) { if (style_mask == 0) style_mask = style; x += ix; y += iy; plot = FALSE; if (x > inc) { plot = TRUE; x -= inc; plotx += sign(dx); } if (y > inc) { plot = TRUE; y -= inc; ploty += sign(dy); } if (plot && style_mask & 0x0001) point(plotx, ploty); style_mask >>= 1; } }