pic: use troff drawing commands for filling objects
[troff.git] / grap / coord.c
blob72f0fc3ae8d1573fab3d8819c23803b151db4037
1 #include <stdio.h>
2 #include <string.h>
3 #include <stdlib.h>
4 #include "grap.h"
5 #include "y.tab.h"
7 char *dflt_coord = "gg";
8 char *curr_coord = "gg";
9 int ncoord = 0; /* number of explicit coord's given */
11 Point xcoord;
12 Point ycoord;
13 int xcflag = 0; /* 1 if xcoord set */
14 int ycflag = 0;
15 int logcoord = 0;
17 void coord_x(Point pt) /* remember x coord */
19 xcoord = pt;
20 xcflag = 1;
21 margin = 0; /* no extra space around picture if explicit coords */
24 void coord_y(Point pt)
26 ycoord = pt;
27 ycflag = 1;
28 margin = 0; /* no extra space if explicit coords */
31 void coordlog(int n) /* remember log scaling */
33 logcoord = n;
36 void coord(Obj *p) /* set coord range */
38 static char buf[10];
40 ncoord++;
41 if (ncoord > 1 && strcmp(p->name, dflt_coord) == 0) {
42 /* resetting default coordinate by implication */
43 sprintf(buf, "gg%d", ncoord);
44 dflt_coord = buf;
45 p = lookup(dflt_coord, 1);
47 if (xcflag) {
48 p->coord |= XFLAG;
49 p->pt.x = min(xcoord.x,xcoord.y); /* "xcoord" is xmin, xmax */
50 p->pt1.x = max(xcoord.x,xcoord.y);
51 if ((logcoord&XFLAG) && p->pt.x <= 0.0)
52 ERROR "can't have log of x coord %g,%g", p->pt.x, p->pt1.x FATAL;
53 xcflag = 0;
55 if (ycflag) {
56 p->coord |= YFLAG;
57 p->pt.y = min(ycoord.x,ycoord.y); /* "ycoord" is ymin, ymax */
58 p->pt1.y = max(ycoord.x,ycoord.y);
59 if ((logcoord&YFLAG) && p->pt.y <= 0.0)
60 ERROR "can't have log of y coord %g,%g", p->pt.y, p->pt1.y FATAL;
61 ycflag = 0;
63 p->log = logcoord;
64 logcoord = 0;
65 auto_x = 0;
68 void resetcoord(Obj *p) /* reset current coordinate */
70 curr_coord = p->name;