123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- #include <stdio.h>
- #include <stdlib.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 */
- void frame(void) /* 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;
- }
- }
- void frameht(double f) /* set height of frame */
- {
- frame_ht = f;
- }
- void framewid(double f) /* set width of frame */
- {
- frame_wid = f;
- }
- void frameside(int type, Attr *desc) /* create and remember sides */
- {
- int n;
- char buf[100];
- nsides++;
- n = 0;
- 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);
- }
|