URI:
       tcoord.c - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tcoord.c (1559B)
       ---
            1 #include <stdio.h>
            2 #include <string.h>
            3 #include <stdlib.h>
            4 #include "grap.h"
            5 #include "y.tab.h"
            6 
            7 char        *dflt_coord = "gg";
            8 char        *curr_coord = "gg";
            9 int        ncoord        = 0;        /* number of explicit coord's given */
           10 
           11 Point        xcoord;
           12 Point        ycoord;
           13 int        xcflag        = 0;        /* 1 if xcoord set */
           14 int        ycflag        = 0;
           15 int        logcoord = 0;
           16 
           17 void coord_x(Point pt)        /* remember x coord */
           18 {
           19         xcoord = pt;
           20         xcflag = 1;
           21         margin = 0;        /* no extra space around picture if explicit coords */
           22 }
           23 
           24 void coord_y(Point pt)
           25 {
           26         ycoord = pt;
           27         ycflag = 1;
           28         margin = 0;        /* no extra space if explicit coords */
           29 }
           30 
           31 void coordlog(int n)        /* remember log scaling */
           32 {
           33         logcoord = n;
           34 }
           35 
           36 void coord(Obj *p)        /* set coord range */
           37 {
           38         static char buf[20];
           39 
           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);
           46         }
           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;
           54         }
           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;
           62         }
           63         p->log = logcoord;
           64         logcoord = 0;
           65         auto_x = 0;
           66 }
           67 
           68 void resetcoord(Obj *p)        /* reset current coordinate */
           69 {
           70         curr_coord = p->name;
           71 }