[BACK]Return to plotf.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / plot

Diff for /OpenXM_contrib2/asir2000/plot/plotf.c between version 1.5 and 1.9

version 1.5, 2000/08/22 05:04:32 version 1.9, 2001/06/04 02:49:49
Line 45 
Line 45 
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  *   *
  * $OpenXM: OpenXM_contrib2/asir2000/plot/plotf.c,v 1.4 2000/08/21 08:31:51 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/plot/plotf.c,v 1.8 2000/11/22 04:03:11 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 53 
Line 53 
 #include "ifplot.h"  #include "ifplot.h"
   
 void Pifplot(), Pconplot(), Pplotover(), Pplot(), Parrayplot(), Pdrawcircle();  void Pifplot(), Pconplot(), Pplotover(), Pplot(), Parrayplot(), Pdrawcircle();
   void Popen_canvas(), Pclear_canvas(), Pdraw_obj();
   
 struct ftab plot_tab[] = {  struct ftab plot_tab[] = {
         {"ifplot",Pifplot,-7},          {"ifplot",Pifplot,-7},
Line 60  struct ftab plot_tab[] = {
Line 61  struct ftab plot_tab[] = {
         {"plot",Pplot,-6},          {"plot",Pplot,-6},
         {"plotover",Pplotover,3},          {"plotover",Pplotover,3},
         {"drawcircle",Pdrawcircle,5},          {"drawcircle",Pdrawcircle,5},
           {"open_canvas",Popen_canvas,-3},
           {"clear_canvas",Pclear_canvas,2},
           {"draw_obj",Pdraw_obj,-4},
 /*  /*
         {"arrayplot",Parrayplot,2},          {"arrayplot",Parrayplot,2},
 */  */
Line 68  struct ftab plot_tab[] = {
Line 72  struct ftab plot_tab[] = {
   
 int current_s;  int current_s;
   
   void Popen_canvas(arg,rp)
   NODE arg;
   Obj *rp;
   {
           Q w300,s_id;
           LIST geom;
           int stream,id,i;
           NODE n,n0;
           STRING fname,wname;
   
           geom = 0; wname = 0; stream = -1;
           for ( ; arg; arg = NEXT(arg) )
                   if ( !BDY(arg) )
                           stream = 0;
                   else
                   switch ( OID(BDY(arg)) ) {
                           case O_LIST:
                                   geom = (LIST)BDY(arg);
                                   break;
                           case O_N:
                                   stream = QTOS((Q)BDY(arg)); break;
                           case O_STR:
                                   wname = (STRING)BDY(arg); break;
                           default:
                                   error("open_canvas : invalid argument"); break;
                   }
           /* open_canvas in ox_plot requires
              [s_id (Q),
                   geom=[xsize,ysize] (LIST),
                   wname=name (STRING)]
           */
   
           if ( stream < 0 )
                   stream = current_s;
           else
                   current_s = stream;
           STOQ(stream,s_id);
           if ( !geom ) {
                   STOQ(300,w300);
                   MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);
           }
           MKSTR(fname,"open_canvas");
           arg = mknode(4,s_id,fname,geom,wname);
           Pox_cmo_rpc(arg,rp);
   }
   
 void Pifplot(arg,rp)  void Pifplot(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         Q m2,p2,w300,sid;          Q m2,p2,w300,s_id;
         NODE defrange;          NODE defrange;
         LIST xrange,yrange,range[2],list,geom;          LIST xrange,yrange,range[2],list,geom;
         VL vl,vl0;          VL vl,vl0;
Line 153  Obj *rp;
Line 203  Obj *rp;
                         error("ifplot : cannot happen"); break;                          error("ifplot : cannot happen"); break;
         }          }
         /* ifplot in ox_plot requires          /* ifplot in ox_plot requires
            [sid (Q),             [s_id (Q),
                 formula (Obj),                  formula (Obj),
                 xrange=[x,xmin,xmax] (LIST),                  xrange=[x,xmin,xmax] (LIST),
                 yrange=[y,ymin,ymax] (LIST),                  yrange=[y,ymin,ymax] (LIST),
Line 166  Obj *rp;
Line 216  Obj *rp;
                 stream = current_s;                  stream = current_s;
         else          else
                 current_s = stream;                  current_s = stream;
         STOQ(stream,sid);          STOQ(stream,s_id);
         if ( !geom ) {          if ( !geom ) {
                 STOQ(300,w300);                  STOQ(300,w300);
                 MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);                  MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);
         }          }
         MKSTR(fname,"plot");          MKSTR(fname,"plot");
         arg = mknode(8,sid,fname,poly,xrange,yrange,0,geom,wname);          arg = mknode(8,s_id,fname,poly,xrange,yrange,0,geom,wname);
         Pox_rpc(arg,rp);          Pox_rpc(arg,rp);
 }  }
   
Line 180  void Pconplot(arg,rp)
Line 230  void Pconplot(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         Q m2,p2,w300,sid;          Q m2,p2,w300,s_id;
         NODE defrange;          NODE defrange;
         LIST xrange,yrange,zrange,range[3],list,geom;          LIST xrange,yrange,zrange,range[3],list,geom;
         VL vl,vl0;          VL vl,vl0;
Line 277  Obj *rp;
Line 327  Obj *rp;
                 current_s = stream;                  current_s = stream;
   
         /* conplot in ox_plot requires          /* conplot in ox_plot requires
            [sid (Q),             [s_id (Q),
                 formula (Obj),                  formula (Obj),
                 xrange=[x,xmin,xmax] (LIST),                  xrange=[x,xmin,xmax] (LIST),
                 yrange=[y,ymin,ymax] (LIST),                  yrange=[y,ymin,ymax] (LIST),
Line 290  Obj *rp;
Line 340  Obj *rp;
                 stream = current_s;                  stream = current_s;
         else          else
                 current_s = stream;                  current_s = stream;
         STOQ(stream,sid);          STOQ(stream,s_id);
         if ( !geom ) {          if ( !geom ) {
                 STOQ(300,w300);                  STOQ(300,w300);
                 MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);                  MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);
         }          }
         MKSTR(fname,"plot");          MKSTR(fname,"plot");
         arg = mknode(8,sid,fname,poly,xrange,yrange,zrange,geom,wname);          arg = mknode(8,s_id,fname,poly,xrange,yrange,zrange,geom,wname);
         Pox_rpc(arg,rp);          Pox_rpc(arg,rp);
 }  }
   
Line 304  void Pplot(arg,rp)
Line 354  void Pplot(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         Q m2,p2,w300,sid;          Q m2,p2,w300,s_id;
         NODE defrange;          NODE defrange;
         LIST xrange,range[1],list,geom;          LIST xrange,range[1],list,geom;
         VL vl,vl0;          VL vl,vl0;
Line 332  Obj *rp;
Line 382  Obj *rp;
                                                         error("ifplot : invalid argument");                                                          error("ifplot : invalid argument");
                                                 else                                                  else
                                                         v[i++] = vl0->v;                                                          v[i++] = vl0->v;
                                   if ( i != 1 )
                                           error("ifplot : invalid argument");
                                 break;                                  break;
                         case O_LIST:                          case O_LIST:
                                 list = (LIST)BDY(arg);                                  list = (LIST)BDY(arg);
Line 367  Obj *rp;
Line 419  Obj *rp;
                         error("plot : cannot happen"); break;                          error("plot : cannot happen"); break;
         }          }
         /* conplot in ox_plot requires          /* conplot in ox_plot requires
            [sid (Q),             [s_id (Q),
                 formula (Obj),                  formula (Obj),
                 xrange=[x,xmin,xmax] (LIST),                  xrange=[x,xmin,xmax] (LIST),
                 yrange=0,                  yrange=0,
Line 379  Obj *rp;
Line 431  Obj *rp;
                 stream = current_s;                  stream = current_s;
         else          else
                 current_s = stream;                  current_s = stream;
         STOQ(stream,sid);          STOQ(stream,s_id);
         if ( !geom ) {          if ( !geom ) {
                 STOQ(300,w300);                  STOQ(300,w300);
                 MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);                  MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);
         }          }
         MKSTR(fname,"plot");          MKSTR(fname,"plot");
         arg = mknode(8,sid,fname,poly,xrange,0,0,geom,wname);          arg = mknode(8,s_id,fname,poly,xrange,0,0,geom,wname);
         Pox_rpc(arg,rp);          Pox_rpc(arg,rp);
 }  }
   
Line 393  void Pplotover(arg,rp)
Line 445  void Pplotover(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         Q sid,index;          Q s_id,index;
         P poly;          P poly;
         STRING fname;          STRING fname;
   
         poly = (P)ARG0(arg);          poly = (P)ARG0(arg);
         sid = (Q)ARG1(arg);          s_id = (Q)ARG1(arg);
         index = (Q)ARG2(arg);          index = (Q)ARG2(arg);
         MKSTR(fname,"plotover");          MKSTR(fname,"plotover");
         arg = mknode(4,sid,fname,index,poly);          arg = mknode(4,s_id,fname,index,poly);
         Pox_rpc(arg,rp);          Pox_rpc(arg,rp);
 }  }
   
 /* arg = [x,y,r,sid,index] */  /* arg = [x,y,r,s_id,index] */
   
 void Pdrawcircle(arg,rp)  void Pdrawcircle(arg,rp)
 NODE arg;  NODE arg;
 Obj *rp;  Obj *rp;
 {  {
         Q sid,index;          Q s_id,index;
         Obj x,y,r;          Obj x,y,r;
         STRING fname;          STRING fname;
         NODE n;          NODE n;
Line 420  Obj *rp;
Line 472  Obj *rp;
         x = (Obj)ARG0(arg);          x = (Obj)ARG0(arg);
         y = (Obj)ARG1(arg);          y = (Obj)ARG1(arg);
         r = (Obj)ARG2(arg);          r = (Obj)ARG2(arg);
         sid = (Q)ARG3(arg);          s_id = (Q)ARG3(arg);
         index = (Q)ARG4(arg);          index = (Q)ARG4(arg);
         MKSTR(fname,"drawcircle");          MKSTR(fname,"drawcircle");
         n = mknode(3,x,y,r); MKLIST(pos,n);          n = mknode(3,x,y,r); MKLIST(pos,n);
         arg = mknode(4,sid,fname,index,pos);          arg = mknode(4,s_id,fname,index,pos);
         Pox_rpc(arg,rp);          Pox_rpc(arg,rp);
   }
   
   /* draw_obj(s_id,cindex,point|line); point = [x,y], line = [xa,ya,xb,yb] */
   void Pdraw_obj(arg,rp)
   NODE arg;
   Obj *rp;
   {
           static STRING fname;
           Q s_id,index;
           LIST obj;
   
           if ( !fname ) {
                   MKSTR(fname,"draw_obj");
           }
           s_id = (Q)ARG0(arg);
           index = (Q)ARG1(arg);
           obj = (LIST)ARG2(arg);
           /* ARG3(arg) = color */
           if ( argc(arg) == 4 )
                   arg = mknode(5,s_id,fname,index,obj,ARG3(arg));
           else
                   arg = mknode(4,s_id,fname,index,obj);
           Pox_cmo_rpc(arg,rp);
   }
   
   void Pclear_canvas(arg,rp)
   NODE arg;
   Obj *rp;
   {
           static STRING fname;
           Q s_id,index;
           LIST obj;
   
           if ( !fname ) {
                   MKSTR(fname,"clear_canvas");
           }
           s_id = (Q)ARG0(arg);
           index = (Q)ARG1(arg);
           arg = mknode(3,s_id,fname,index);
           Pox_cmo_rpc(arg,rp);
 }  }
   
 #if 0  #if 0

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.9

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>