date and time created 85/07/19 15:37:17 by jaap
authorJaap Akkerhuis <jaap@ucbvax.Berkeley.EDU>
Sat, 20 Jul 1985 06:37:17 +0000 (22:37 -0800)
committerJaap Akkerhuis <jaap@ucbvax.Berkeley.EDU>
Sat, 20 Jul 1985 06:37:17 +0000 (22:37 -0800)
SCCS-vsn: local/ditroff/ditroff.okeeffe/grap/frame.c 1.1

usr/src/local/ditroff/ditroff.okeeffe/grap/frame.c [new file with mode: 0644]

diff --git a/usr/src/local/ditroff/ditroff.okeeffe/grap/frame.c b/usr/src/local/ditroff/ditroff.okeeffe/grap/frame.c
new file mode 100644 (file)
index 0000000..7aeeb70
--- /dev/null
@@ -0,0 +1,77 @@
+#ifndef lint
+static char sccsid[] = "@(#)frame.c    1.1 (CWI) 85/07/19";
+#endif lint
+#include <stdio.h>
+#include "grap.h"
+#include "y.tab.h"
+
+double frame_ht;       /* default frame height */
+double frame_wid;      /* and width */
+
+int    nsides  = 0;            /* how many sides given on this frame */
+char   *sides[] = {
+               "\tline from Frame.nw to Frame.ne",
+               "\tline from Frame.sw to Frame.se",
+               "\tline from Frame.sw to Frame.nw",
+               "\tline from Frame.se to Frame.ne"
+};
+char   *newsides[4] = { 0, 0, 0, 0 };  /* filled in later */
+
+frame()                /* pump out frame definition, reset for next */
+{
+       int i;
+
+       fprintf(tfd, "\tframeht = %g\n", frame_ht);
+       fprintf(tfd, "\tframewid = %g\n", frame_wid);
+       fprintf(tfd, "Frame:\tbox ht frameht wid framewid with .sw at 0,0 ");
+       if (nsides == 0)
+               fprintf(tfd, "\n");
+       else {
+               fprintf(tfd, "invis\n");
+               for (i = 0; i < 4; i++) {
+                       if (newsides[i]) {
+                               fprintf(tfd, "%s\n", newsides[i]);
+                               free(newsides[i]);
+                               newsides[i] = 0;
+                       } else
+                               fprintf(tfd, "%s\n", sides[i]);
+               }
+               nsides = 0;
+       }
+}
+
+frameht(f)     /* set height of frame */
+       double f;
+{
+       frame_ht = f;
+}
+
+framewid(f)    /* set width of frame */
+       double f;
+{
+       frame_wid = f;
+}
+
+frameside(type, desc)  /* create and remember sides */
+       int type;
+       Attr *desc;
+{
+       int n;
+       char buf[100];
+
+       nsides++;
+       switch (type) {
+       case 0:         /* no side specified; kludge up all */
+               frameside(TOP, desc);
+               frameside(BOT, desc);
+               frameside(LEFT, desc);
+               frameside(RIGHT, desc);
+               return;
+       case TOP:       n = 0; break;
+       case BOT:       n = 1; break;
+       case LEFT:      n = 2; break;
+       case RIGHT:     n = 3; break;
+       }
+       sprintf(buf, "%s %s", sides[n], desc_str(desc));
+       newsides[n] = tostring(buf);
+}