Subversion Repositories planix.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include <stdio.h>
2
#include <stdlib.h>
3
#include "grap.h"
4
#include "y.tab.h"
5
 
6
double	frame_ht;	/* default frame height */
7
double	frame_wid;	/* and width */
8
 
9
int	nsides	= 0;		/* how many sides given on this frame */
10
char	*sides[] = {
11
		"\tline from Frame.nw to Frame.ne",
12
		"\tline from Frame.sw to Frame.se",
13
		"\tline from Frame.sw to Frame.nw",
14
		"\tline from Frame.se to Frame.ne"
15
};
16
char	*newsides[4] = { 0, 0, 0, 0 };	/* filled in later */
17
 
18
void frame(void)		/* pump out frame definition, reset for next */
19
{
20
	int i;
21
 
22
	fprintf(tfd, "\tframeht = %g\n", frame_ht);
23
	fprintf(tfd, "\tframewid = %g\n", frame_wid);
24
	fprintf(tfd, "Frame:\tbox ht frameht wid framewid with .sw at 0,0 ");
25
	if (nsides == 0)
26
		fprintf(tfd, "\n");
27
	else {
28
		fprintf(tfd, "invis\n");
29
		for (i = 0; i < 4; i++) {
30
			if (newsides[i]) {
31
				fprintf(tfd, "%s\n", newsides[i]);
32
				free(newsides[i]);
33
				newsides[i] = 0;
34
			} else
35
				fprintf(tfd, "%s\n", sides[i]);
36
		}
37
		nsides = 0;
38
	}
39
}
40
 
41
void frameht(double f)	/* set height of frame */
42
{
43
	frame_ht = f;
44
}
45
 
46
void framewid(double f)	/* set width of frame */
47
{
48
	frame_wid = f;
49
}
50
 
51
void frameside(int type, Attr *desc)	/* create and remember sides */
52
{
53
	int n;
54
	char buf[100];
55
 
56
	nsides++;
57
	n = 0;
58
	switch (type) {
59
	case 0:		/* no side specified; kludge up all */
60
		frameside(TOP, desc);
61
		frameside(BOT, desc);
62
		frameside(LEFT, desc);
63
		frameside(RIGHT, desc);
64
		return;
65
	case TOP:	n = 0; break;
66
	case BOT:	n = 1; break;
67
	case LEFT:	n = 2; break;
68
	case RIGHT:	n = 3; break;
69
	}
70
	sprintf(buf, "%s %s", sides[n], desc_str(desc));
71
	newsides[n] = tostring(buf);
72
}