Let's try this. It's BUGGERED.
This commit is contained in:
parent
76e6aca867
commit
5cedca1b69
118 changed files with 26947 additions and 1 deletions
71
src/cmd/grap/coord.c
Normal file
71
src/cmd/grap/coord.c
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
#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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue