1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*
- * This file is part of the UCB release of Plan 9. It is subject to the license
- * terms in the LICENSE file found in the top-level directory of this
- * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
- * part of the UCB release of Plan 9, including this file, may be copied,
- * modified, propagated, or distributed except according to the terms contained
- * in the LICENSE file.
- */
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include "grap.h"
- #include "y.tab.h"
- char *dflt_coord = "gg";
- char *curr_coord = "gg";
- int ncoord = 0; /* number of explicit coord's given */
- Point xcoord;
- Point ycoord;
- int xcflag = 0; /* 1 if xcoord set */
- int ycflag = 0;
- int logcoord = 0;
- void coord_x(Point pt) /* remember x coord */
- {
- xcoord = pt;
- xcflag = 1;
- margin = 0; /* no extra space around picture if explicit coords */
- }
- void coord_y(Point pt)
- {
- ycoord = pt;
- ycflag = 1;
- margin = 0; /* no extra space if explicit coords */
- }
- void coordlog(int n) /* remember log scaling */
- {
- logcoord = n;
- }
- void coord(Obj *p) /* set coord range */
- {
- static char buf[10];
- ncoord++;
- if (ncoord > 1 && strcmp(p->name, dflt_coord) == 0) {
- /* resetting default coordinate by implication */
- sprintf(buf, "gg%d", ncoord);
- dflt_coord = buf;
- p = lookup(dflt_coord, 1);
- }
- if (xcflag) {
- p->coord |= XFLAG;
- p->pt.x = min(xcoord.x,xcoord.y); /* "xcoord" is xmin, xmax */
- p->pt1.x = max(xcoord.x,xcoord.y);
- if ((logcoord&XFLAG) && p->pt.x <= 0.0)
- ERROR "can't have log of x coord %g,%g", p->pt.x, p->pt1.x FATAL;
- xcflag = 0;
- }
- if (ycflag) {
- p->coord |= YFLAG;
- p->pt.y = min(ycoord.x,ycoord.y); /* "ycoord" is ymin, ymax */
- p->pt1.y = max(ycoord.x,ycoord.y);
- if ((logcoord&YFLAG) && p->pt.y <= 0.0)
- ERROR "can't have log of y coord %g,%g", p->pt.y, p->pt1.y FATAL;
- ycflag = 0;
- }
- p->log = logcoord;
- logcoord = 0;
- auto_x = 0;
- }
- void resetcoord(Obj *p) /* reset current coordinate */
- {
- curr_coord = p->name;
- }
|