[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.13 and 1.17

version 1.13, 2002/08/02 02:28:29 version 1.17, 2005/05/18 03:27:00
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.12 2002/07/10 05:29:36 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/plot/plotf.c,v 1.16 2002/10/02 01:38:04 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 Ppolarplot();
 void Pmemory_ifplot();  void Pmemory_ifplot();
 void Popen_canvas(), Pclear_canvas(), Pdraw_obj(), Pdraw_string();  void Popen_canvas(), Pclear_canvas(), Pdraw_obj(), Pdraw_string();
 void Pox_rpc();  void Pox_rpc();
Line 63  struct ftab plot_tab[] = {
Line 64  struct ftab plot_tab[] = {
         {"memory_ifplot",Pmemory_ifplot,-7},          {"memory_ifplot",Pmemory_ifplot,-7},
         {"conplot",Pconplot,-8},          {"conplot",Pconplot,-8},
         {"plot",Pplot,-6},          {"plot",Pplot,-6},
         {"plotover",Pplotover,3},          {"polarplot",Ppolarplot,-6},
           {"plotover",Pplotover,-4},
         {"drawcircle",Pdrawcircle,5},          {"drawcircle",Pdrawcircle,5},
         {"open_canvas",Popen_canvas,-3},          {"open_canvas",Popen_canvas,-3},
         {"clear_canvas",Pclear_canvas,2},          {"clear_canvas",Pclear_canvas,2},
Line 75  struct ftab plot_tab[] = {
Line 77  struct ftab plot_tab[] = {
         {0,0,0},          {0,0,0},
 };  };
   
 void Popen_canvas(NODE arg,Obj *rp)  void Popen_canvas(NODE arg,Q *rp)
 {  {
         Q w300,s_id;          Q w300,s_id;
         LIST geom;          LIST geom;
Line 114  void Popen_canvas(NODE arg,Obj *rp)
Line 116  void Popen_canvas(NODE arg,Obj *rp)
         MKSTR(fname,"open_canvas");          MKSTR(fname,"open_canvas");
         arg = mknode(4,s_id,fname,geom,wname);          arg = mknode(4,s_id,fname,geom,wname);
         Pox_cmo_rpc(arg,rp);          Pox_cmo_rpc(arg,rp);
           *rp = s_id;
 }  }
   
 void Pifplot(NODE arg,Q *rp)  void Pifplot(NODE arg,Q *rp)
Line 133  void Pifplot(NODE arg,Q *rp)
Line 136  void Pifplot(NODE arg,Q *rp)
         STOQ(-2,m2); STOQ(2,p2);          STOQ(-2,m2); STOQ(2,p2);
         MKNODE(n,p2,0); MKNODE(defrange,m2,n);          MKNODE(n,p2,0); MKNODE(defrange,m2,n);
         poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;          poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;
           v[0] = v[1] = 0;
         for ( ; arg; arg = NEXT(arg) )          for ( ; arg; arg = NEXT(arg) )
                 if ( !BDY(arg) )                  if ( !BDY(arg) )
                         stream = 0;                          stream = 0;
Line 340  void Pconplot(NODE arg,Q *rp)
Line 344  void Pconplot(NODE arg,Q *rp)
         STOQ(-2,m2); STOQ(2,p2);          STOQ(-2,m2); STOQ(2,p2);
         MKNODE(n,p2,0); MKNODE(defrange,m2,n);          MKNODE(n,p2,0); MKNODE(defrange,m2,n);
         poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;          poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;
           v[0] = v[1] = 0;
         for ( ; arg; arg = NEXT(arg) )          for ( ; arg; arg = NEXT(arg) )
                 if ( !BDY(arg) )                  if ( !BDY(arg) )
                         stream = 0;                          stream = 0;
Line 456  void Pplot(NODE arg,Q *rp)
Line 461  void Pplot(NODE arg,Q *rp)
         STOQ(-2,m2); STOQ(2,p2);          STOQ(-2,m2); STOQ(2,p2);
         MKNODE(n,p2,0); MKNODE(defrange,m2,n);          MKNODE(n,p2,0); MKNODE(defrange,m2,n);
         poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;          poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;
           v[0] = 0;
         for ( ; arg; arg = NEXT(arg) )          for ( ; arg; arg = NEXT(arg) )
                 if ( !BDY(arg) )                  if ( !BDY(arg) )
                         stream = 0;                          stream = 0;
Line 527  void Pplot(NODE arg,Q *rp)
Line 533  void Pplot(NODE arg,Q *rp)
         *rp = s_id;          *rp = s_id;
 }  }
   
   #define Pi 3.14159265358979323846264
   
   void Ppolarplot(NODE arg,Q *rp)
   {
           Q m2,p2,w300,s_id;
           NODE defrange;
           LIST zrange,range[1],list,geom;
           VL vl,vl0;
           V v[1],av[1];
           int stream,ri,i;
           P poly;
           P var;
           NODE n,n0;
           STRING fname,wname;
           Real pi2;
           Obj t;
   
           MKReal(2*Pi,pi2);
           MKNODE(n,pi2,0); MKNODE(defrange,0,n);
           poly = 0; vl = 0; geom = 0; wname = 0; stream = -1; ri = 0;
           v[0] = 0;
           for ( ; arg; arg = NEXT(arg) )
                   if ( !BDY(arg) )
                           stream = 0;
                   else
                   switch ( OID(BDY(arg)) ) {
                           case O_P: case O_R:
                                   poly = (P)BDY(arg);
                                   get_vars_recursive((Obj)poly,&vl);
                                   for ( vl0 = vl, i = 0; vl0; vl0 = NEXT(vl0) )
                                           if ( vl0->v->attr == (pointer)V_IND )
                                                   if ( i >= 1 )
                                                           error("polarplot : invalid argument");
                                                   else
                                                           v[i++] = vl0->v;
                                   if ( i != 1 )
                                           error("polarplot : invalid argument");
                                   break;
                           case O_LIST:
                                   list = (LIST)BDY(arg);
                                   if ( OID(BDY(BDY(list))) == O_P )
                                           if ( ri > 0 )
                                                   error("polarplot : invalid argument");
                                           else
                                                   range[ri++] = list;
                                   else
                                           geom = list;
                                   break;
                           case O_N:
                                   stream = QTOS((Q)BDY(arg)); break;
                           case O_STR:
                                   wname = (STRING)BDY(arg); break;
                           default:
                                   error("polarplot : invalid argument"); break;
                   }
           if ( !poly )
                   error("polarplot : invalid argument");
           switch ( ri ) {
                   case 0:
                           MKV(v[0],var); MKNODE(n,var,defrange); MKLIST(zrange,n);
                           break;
                   case 1:
                           av[0] = VR((P)BDY(BDY(range[0])));
                           if ( v[0] == av[0] )
                                   zrange = range[0];
                           else
                                   error("polarplot : invalid argument");
                           break;
                   default:
                           error("polarplot : cannot happen"); break;
           }
           stream = validate_ox_plot_stream(stream);
           STOQ(stream,s_id);
           if ( !geom ) {
                   STOQ(300,w300);
                   MKNODE(n0,w300,0); MKNODE(n,w300,n0); MKLIST(geom,n);
           }
           MKSTR(fname,"plot");
           arg = mknode(8,s_id,fname,poly,0,0,zrange,geom,wname);
           Pox_rpc(arg,&t);
           *rp = s_id;
   }
   
 void Pplotover(NODE arg,Q *rp)  void Pplotover(NODE arg,Q *rp)
 {  {
         Q s_id,index;          Q s_id,index;
Line 538  void Pplotover(NODE arg,Q *rp)
Line 627  void Pplotover(NODE arg,Q *rp)
         s_id = (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,s_id,fname,index,poly);          if ( argc(arg) == 4 )
                   arg = mknode(5,s_id,fname,index,poly,(Q)ARG3(arg));
           else
                   arg = mknode(4,s_id,fname,index,poly);
         Pox_rpc(arg,&t);          Pox_rpc(arg,&t);
         *rp = s_id;          *rp = s_id;
 }  }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.17

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