|
|
1.1 root 1: #include <stdio.h>
2: #include "grap.h"
3: #include "y.tab.h"
4:
5: char *dflt_coord = "gg";
6: char *curr_coord = "gg";
7: int ncoord = 0; /* number of explicit coord's given */
8:
9: Point xcoord;
10: Point ycoord;
11: int xcflag = 0; /* 1 if xcoord set */
12: int ycflag = 0;
13: int logcoord = 0;
14:
15: coord_x(pt) /* remember x coord */
16: Point pt;
17: {
18: xcoord = pt;
19: xcflag = 1;
20: margin = 0; /* no extra space around picture if explicit coords */
21: }
22:
23: coord_y(pt)
24: Point pt;
25: {
26: ycoord = pt;
27: ycflag = 1;
28: margin = 0; /* no extra space if explicit coords */
29: }
30:
31: coordlog(n) /* remember log scaling */
32: int n;
33: {
34: logcoord = n;
35: }
36:
37: coord(p) /* set coord range */
38: Obj *p;
39: {
40: static char buf[10];
41:
42: ncoord++;
43: if (ncoord > 1 && strcmp(p->name, dflt_coord) == 0) {
44: /* resetting default coordinate by implication */
45: sprintf(buf, "gg%d", ncoord);
46: dflt_coord = buf;
47: p = lookup(dflt_coord, 1);
48: }
49: if (xcflag) {
50: p->coord |= XFLAG;
51: p->pt.x = min(xcoord.x,xcoord.y); /* "xcoord" is xmin, xmax */
52: p->pt1.x = max(xcoord.x,xcoord.y);
53: if ((logcoord&XFLAG) && p->pt.x <= 0.0)
54: fatal("can't have log of x coord %g,%g", p->pt.x, p->pt1.x);
55: xcflag = 0;
56: }
57: if (ycflag) {
58: p->coord |= YFLAG;
59: p->pt.y = min(ycoord.x,ycoord.y); /* "ycoord" is ymin, ymax */
60: p->pt1.y = max(ycoord.x,ycoord.y);
61: if ((logcoord&YFLAG) && p->pt.y <= 0.0)
62: fatal("can't have log of y coord %g,%g", p->pt.y, p->pt1.y);
63: ycflag = 0;
64: }
65: p->log = logcoord;
66: logcoord = 0;
67: auto_x = 0;
68: }
69:
70: resetcoord(p) /* reset current coordinate */
71: Obj *p;
72: {
73: curr_coord = p->name;
74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.