summaryrefslogtreecommitdiff
path: root/usr/src/ucbcmd/plot/libplot/dumb/subr.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/ucbcmd/plot/libplot/dumb/subr.c')
-rw-r--r--usr/src/ucbcmd/plot/libplot/dumb/subr.c57
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;
+ }
+}