diff options
Diffstat (limited to 'usr/src/ucbcmd/plot/libplot/dumb/subr.c')
-rw-r--r-- | usr/src/ucbcmd/plot/libplot/dumb/subr.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/usr/src/ucbcmd/plot/libplot/dumb/subr.c b/usr/src/ucbcmd/plot/libplot/dumb/subr.c new file mode 100644 index 0000000000..102c483878 --- /dev/null +++ b/usr/src/ucbcmd/plot/libplot/dumb/subr.c @@ -0,0 +1,57 @@ +/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ +/* All Rights Reserved */ + + +#ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.1 */ + +/* + * Copyright (c) 1980 Regents of the University of California. + * All rights reserved. The Berkeley software License Agreement + * specifies the terms and conditions for redistribution. + */ + +/* + * Copyright (c) 1983, 1984 1985, 1986, 1987, 1988, Sun Microsystems, Inc. + * All Rights Reserved. + */ + + +#include "dumb.h" + +/* Does not plot first point -- assumed that it is already plotted */ +dda_line(ch, x0, y0, x1, y1) + char ch; + int x0, y0; /* already transformed to screen coords */ + int x1, y1; /* untransformed */ +{ + int length, i; + double deltaX, deltaY; + double x, y; + double floor(); + int abs(); + + scale(x1, y1); + + length = abs(x1 - x0); + if (abs(y1 -y0) > length) + length = abs(y1 - y0); + + if (length == 0) + return; + + deltaX = (double) (x1 - x0)/(double) length; + deltaY = (double) (y1 - y0)/(double) length; + + x = (double) x0 + 0.5; + y = (double) y0 + 0.5; + + for (i=0; i < length; ++i) { + x += deltaX; + y += deltaY; + x0 = floor(x); + y0 = floor(y); + currentx = x0; + currenty = y0; + screenmat[currentx][currenty] = ch; + } +} |