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

Diff for /OpenXM_contrib2/asir2018/plot/if.c between version 1.1 and 1.2

version 1.1, 2018/09/19 05:45:08 version 1.2, 2018/09/28 08:20:29
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: OpenXM_contrib2/asir2018/plot/if.c,v 1.1 2018/09/19 05:45:08 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 111  int open_canvas(NODE arg){
Line 111  int open_canvas(NODE arg){
     can->width=DEFAULTWIDTH;      can->width=DEFAULTWIDTH;
     can->height=DEFAULTHEIGHT;      can->height=DEFAULTHEIGHT;
   } else {    } else {
     can->width=QTOS((Q)BDY(BDY(wsize)));      can->width=ZTOS((Q)BDY(BDY(wsize)));
     can->height=QTOS((Q)BDY(NEXT(BDY(wsize))));      can->height=ZTOS((Q)BDY(NEXT(BDY(wsize))));
   }    }
   if(wname)can->wname=BDY(wname);    if(wname)can->wname=BDY(wname);
   else can->wname="";    else can->wname="";
Line 157  int plot(NODE arg,int fn){
Line 157  int plot(NODE arg,int fn){
     can->zmin=ToReal(BDY(n));      can->zmin=ToReal(BDY(n));
     n=NEXT(n);can->zmax=ToReal(BDY(n));      n=NEXT(n);can->zmax=ToReal(BDY(n));
     n=NEXT(n);      n=NEXT(n);
     if(can->mode==modeNO(CONPLOT))can->nzstep=n?QTOS((Q)BDY(n)):MAXGC;      if(can->mode==modeNO(CONPLOT))can->nzstep=n?ZTOS((Q)BDY(n)):MAXGC;
     else {      else {
       can->vx=VR((P)BDY(BDY(zrange)));        can->vx=VR((P)BDY(BDY(zrange)));
       can->nzstep=n?QTOS((Q)BDY(n)):DEFAULTPOLARSTEP;        can->nzstep=n?ZTOS((Q)BDY(n)):DEFAULTPOLARSTEP;
     }      }
   }    }
   if(!wsize){    if(!wsize){
     can->width=DEFAULTWIDTH;      can->width=DEFAULTWIDTH;
     can->height=DEFAULTHEIGHT;      can->height=DEFAULTHEIGHT;
   } else {    } else {
     can->width=QTOS((Q)BDY(BDY(wsize)));      can->width=ZTOS((Q)BDY(BDY(wsize)));
     can->height=QTOS((Q)BDY(NEXT(BDY(wsize))));      can->height=ZTOS((Q)BDY(NEXT(BDY(wsize))));
   }    }
   if(wname) can->wname=BDY(wname);    if(wname) can->wname=BDY(wname);
   else can->wname="";    else can->wname="";
   can->formula=formula;    can->formula=formula;
   if(can->mode==modeNO(PLOT)){    if(can->mode==modeNO(PLOT)){
     //plot      //plot
     can->prec=argc(arg)==7 ? QTOS((Q)ARG6(arg)) : 0;      can->prec=argc(arg)==7 ? ZTOS((Q)ARG6(arg)) : 0;
     plotcalc(can);      plotcalc(can);
     create_canvas(can);      create_canvas(can);
     plot_print(display,can);      plot_print(display,can);
Line 237  int memory_plot(NODE arg,LIST *bytes){
Line 237  int memory_plot(NODE arg,LIST *bytes){
       n=NEXT(BDY(zrange));        n=NEXT(BDY(zrange));
       can->zmin=ToReal(BDY(n)); n=NEXT(n); can->zmax=ToReal(BDY(n));        can->zmin=ToReal(BDY(n)); n=NEXT(n); can->zmax=ToReal(BDY(n));
       n=NEXT(n);        n=NEXT(n);
       if(n) can->nzstep=QTOS((Q)BDY(n));        if(n) can->nzstep=ZTOS((Q)BDY(n));
       else can->nzstep=MAXGC;        else can->nzstep=MAXGC;
       can->mode=modeNO(CONPLOT);        can->mode=modeNO(CONPLOT);
     } else      } else
Line 247  int memory_plot(NODE arg,LIST *bytes){
Line 247  int memory_plot(NODE arg,LIST *bytes){
   if( !wsize ){    if( !wsize ){
     can->width=DEFAULTWIDTH; can->height=DEFAULTHEIGHT;      can->width=DEFAULTWIDTH; can->height=DEFAULTHEIGHT;
   } else {    } else {
     can->width=QTOS((Q)BDY(BDY(wsize)));      can->width=ZTOS((Q)BDY(BDY(wsize)));
     can->height=QTOS((Q)BDY(NEXT(BDY(wsize))));      can->height=ZTOS((Q)BDY(NEXT(BDY(wsize))));
   }    }
   can->wname="";    can->wname="";
   can->formula=formula;    can->formula=formula;
   if( can->mode==modeNO(PLOT)){    if( can->mode==modeNO(PLOT)){
     can->prec = argc(arg)==6 ? QTOS((Q)ARG5(arg)) : 0;      can->prec = argc(arg)==6 ? ZTOS((Q)ARG5(arg)) : 0;
     plotcalc(can);      plotcalc(can);
     memory_print(can,&barray);      memory_print(can,&barray);
     STOQ(can->width,qw); STOQ(can->height,qh);      STOZ(can->width,qw); STOZ(can->height,qh);
     n=mknode(3,qw,qh,barray);      n=mknode(3,qw,qh,barray);
     MKLIST(*bytes,n);      MKLIST(*bytes,n);
   } else {    } else {
Line 266  int memory_plot(NODE arg,LIST *bytes){
Line 266  int memory_plot(NODE arg,LIST *bytes){
       tabe[i]=(double *)ALLOCA(height*sizeof(double));        tabe[i]=(double *)ALLOCA(height*sizeof(double));
     calc(tabe,can,1);      calc(tabe,can,1);
     memory_if_print(tabe,can,&barray);      memory_if_print(tabe,can,&barray);
     STOQ(width,qw); STOQ(height,qh);      STOZ(width,qw); STOZ(height,qh);
     n=mknode(3,qw,qh,barray);      n=mknode(3,qw,qh,barray);
     MKLIST(*bytes,n);      MKLIST(*bytes,n);
   }    }
Line 280  int plotover(NODE arg){
Line 280  int plotover(NODE arg){
   struct canvas *can;    struct canvas *can;
   VL vl,vl0;    VL vl,vl0;
   
   id=QTOS((Q)ARG0(arg));    id=ZTOS((Q)ARG0(arg));
   formula=(P)ARG1(arg);    formula=(P)ARG1(arg);
   can=canvas[id];    can=canvas[id];
   orgcolor=can->color;    orgcolor=can->color;
   if(argc(arg)==3) can->color=QTOS((Q)ARG2(arg));    if(argc(arg)==3) can->color=ZTOS((Q)ARG2(arg));
   else can->color=0;    else can->color=0;
   get_vars_recursive((Obj)formula,&vl);    get_vars_recursive((Obj)formula,&vl);
   for(vl0=vl;vl0;vl0=NEXT(vl0))    for(vl0=vl;vl0;vl0=NEXT(vl0))
Line 296  int plotover(NODE arg){
Line 296  int plotover(NODE arg){
   current_can=can;    current_can=can;
   can->formula=formula;    can->formula=formula;
   if(can->mode==modeNO(PLOT)){    if(can->mode==modeNO(PLOT)){
     can->prec = argc(arg)==3 ? QTOS((Q)ARG2(arg)) : 0;      can->prec = argc(arg)==3 ? ZTOS((Q)ARG2(arg)) : 0;
     plotcalc(can);      plotcalc(can);
     plot_print(display,can);      plot_print(display,can);
   } else ifplotmain(can);    } else ifplotmain(can);
Line 318  int drawcircle(NODE arg){
Line 318  int drawcircle(NODE arg){
   Obj x,y,r;    Obj x,y,r;
   struct canvas *can;    struct canvas *can;
   
   index=QTOS((Q)ARG0(arg));    index=ZTOS((Q)ARG0(arg));
   xyr=(LIST)ARG1(arg);    xyr=(LIST)ARG1(arg);
   x=(Obj)ARG0(BDY(xyr)); y=(Obj)ARG1(BDY(xyr)); r=(Obj)ARG2(BDY(xyr));    x=(Obj)ARG0(BDY(xyr)); y=(Obj)ARG1(BDY(xyr)); r=(Obj)ARG2(BDY(xyr));
   c=QTOS((Q)ARG2(arg));    c=ZTOS((Q)ARG2(arg));
   can=canvas[index];    can=canvas[index];
   if(!can->window)return -1;    if(!can->window)return -1;
   else {    else {
Line 345  int draw_obj(NODE arg){
Line 345  int draw_obj(NODE arg){
   RealVect *vect;    RealVect *vect;
   struct canvas *can;    struct canvas *can;
   
   index=QTOS((Q)ARG0(arg));    index=ZTOS((Q)ARG0(arg));
   can=canvas[index];    can=canvas[index];
   if(!can && closed_canvas[index]){    if(!can && closed_canvas[index]){
     canvas[index]=closed_canvas[index];      canvas[index]=closed_canvas[index];
Line 359  int draw_obj(NODE arg){
Line 359  int draw_obj(NODE arg){
   }    }
   
   obj=BDY((LIST)ARG1(arg));    obj=BDY((LIST)ARG1(arg));
   if(argc(arg)== 3) color=QTOS((Q)ARG2(arg));    if(argc(arg)== 3) color=ZTOS((Q)ARG2(arg));
   else color=0; // black    else color=0; // black
   switch(len=length(obj)){    switch(len=length(obj)){
     case 2: // point      case 2: // point
Line 398  int draw_string(NODE arg){
Line 398  int draw_string(NODE arg){
   NODE pos;    NODE pos;
   struct canvas *can;    struct canvas *can;
   
   index=QTOS((Q)ARG0(arg));    index=ZTOS((Q)ARG0(arg));
   can=canvas[index];    can=canvas[index];
   if(!can && closed_canvas[index]){    if(!can && closed_canvas[index]){
     canvas[index]=closed_canvas[index];      canvas[index]=closed_canvas[index];
Line 413  int draw_string(NODE arg){
Line 413  int draw_string(NODE arg){
   
   pos=BDY((LIST)ARG1(arg));    pos=BDY((LIST)ARG1(arg));
   str=BDY((STRING)ARG2(arg));    str=BDY((STRING)ARG2(arg));
   if(argc(arg)==4)color=QTOS((Q)ARG3(arg));    if(argc(arg)==4)color=ZTOS((Q)ARG3(arg));
   else color=0; // black    else color=0; // black
   x=(int)ToReal((Q)ARG0(pos));    x=(int)ToReal((Q)ARG0(pos));
   y=(int)ToReal((Q)ARG1(pos));    y=(int)ToReal((Q)ARG1(pos));
Line 428  int clear_canvas(NODE arg){
Line 428  int clear_canvas(NODE arg){
   int index;    int index;
   struct canvas *can;    struct canvas *can;
   
   index=QTOS((Q)ARG0(arg));    index=ZTOS((Q)ARG0(arg));
   can=canvas[index];    can=canvas[index];
   if(!can||!can->window) return -1;    if(!can||!can->window) return -1;
   clear_pixmap(can);    clear_pixmap(can);
Line 461  int arrayplot(NODE arg){
Line 461  int arrayplot(NODE arg){
     can->width=DEFAULTWIDTH;      can->width=DEFAULTWIDTH;
     can->height=DEFAULTHEIGHT;      can->height=DEFAULTHEIGHT;
   } else {    } else {
     can->width=QTOS((Q)BDY(BDY(wsize)));      can->width=ZTOS((Q)BDY(BDY(wsize)));
     can->height=QTOS((Q)BDY(NEXT(BDY(wsize))));      can->height=ZTOS((Q)BDY(NEXT(BDY(wsize))));
   }    }
   can->wname=wname; can->formula=0; can->mode=modeNO(PLOT);    can->wname=wname; can->formula=0; can->mode=modeNO(PLOT);
   create_canvas(can);    create_canvas(can);
Line 538  void ifplot_resize(struct canvas *can,POINT spos,POINT
Line 538  void ifplot_resize(struct canvas *can,POINT spos,POINT
       ncan->height=m;        ncan->height=m;
     }      }
     if(can->wide){      if(can->wide){
       STOQ(10,ten);        STOZ(10,ten);
       STOQ(2,two);        STOZ(2,two);
       subq(can->qxmax,can->qxmin,&t);        subq(can->qxmax,can->qxmin,&t);
       mulq(t,ten,&dx);        mulq(t,ten,&dx);
       subq(can->qymax,can->qymin,&t);        subq(can->qymax,can->qymin,&t);
Line 562  void ifplot_resize(struct canvas *can,POINT spos,POINT
Line 562  void ifplot_resize(struct canvas *can,POINT spos,POINT
       ymin=can->qymin;        ymin=can->qymin;
       ymax=can->qymax;        ymax=can->qymax;
     }      }
     STOQ(XC(spos),sx); STOQ(YC(spos),sy); STOQ(XC(epos),ex); STOQ(YC(epos),ey);      STOZ(XC(spos),sx); STOZ(YC(spos),sy); STOZ(XC(epos),ex); STOZ(YC(epos),ey);
     STOQ(can->width,cw); STOQ(can->height,ch);      STOZ(can->width,cw); STOZ(can->height,ch);
     mulq(sx,dx,&t); divq(t,cw,&s); addq(xmin,s,&ncan->qxmin);      mulq(sx,dx,&t); divq(t,cw,&s); addq(xmin,s,&ncan->qxmin);
     mulq(ex,dx,&t); divq(t,cw,&s); addq(xmin,s,&ncan->qxmax);      mulq(ex,dx,&t); divq(t,cw,&s); addq(xmin,s,&ncan->qxmax);
     mulq(ey,dy,&t); divq(t,ch,&s); subq(ymax,s,&ncan->qymin);      mulq(ey,dy,&t); divq(t,ch,&s); subq(ymax,s,&ncan->qymin);
Line 616  void plot_resize(struct canvas *can,POINT spos,POINT e
Line 616  void plot_resize(struct canvas *can,POINT spos,POINT e
       ncan->height=m;        ncan->height=m;
     }      }
     if( can->wide ){      if( can->wide ){
       STOQ(10,ten); STOQ(2,two);        STOZ(10,ten); STOZ(2,two);
       subq(can->qxmax,can->qxmin,&t); mulq(t,(Q)ten,&dx);        subq(can->qxmax,can->qxmin,&t); mulq(t,(Q)ten,&dx);
       addq(can->qxmax,can->qxmin,&t); divq(t,(Q)two,&xmid);        addq(can->qxmax,can->qxmin,&t); divq(t,(Q)two,&xmid);
       divq(dx,(Q)two,&dx2); subq(xmid,dx2,&xmin); addq(xmid,dx2,&xmax);        divq(dx,(Q)two,&dx2); subq(xmid,dx2,&xmin); addq(xmid,dx2,&xmax);
Line 631  void plot_resize(struct canvas *can,POINT spos,POINT e
Line 631  void plot_resize(struct canvas *can,POINT spos,POINT e
       ymin=can->ymin;        ymin=can->ymin;
       ymax=can->ymax;        ymax=can->ymax;
     }      }
     STOQ(XC(spos),sx); STOQ(XC(epos),ex); STOQ(can->width,cw);      STOZ(XC(spos),sx); STOZ(XC(epos),ex); STOZ(can->width,cw);
     mulq((Q)sx,dx,&t); divq(t,(Q)cw,&s); addq(xmin,s,&ncan->qxmin);      mulq((Q)sx,dx,&t); divq(t,(Q)cw,&s); addq(xmin,s,&ncan->qxmin);
     mulq((Q)ex,dx,&t); divq(t,(Q)cw,&s); addq(xmin,s,&ncan->qxmax);      mulq((Q)ex,dx,&t); divq(t,(Q)cw,&s); addq(xmin,s,&ncan->qxmax);
     ncan->xmin=ToReal(ncan->qxmin); ncan->xmax=ToReal(ncan->qxmax);      ncan->xmin=ToReal(ncan->qxmin); ncan->xmax=ToReal(ncan->qxmax);
Line 733  int ifplotNG(NODE arg,int func){
Line 733  int ifplotNG(NODE arg,int func){
   
   can=canvas[id=search_canvas()];    can=canvas[id=search_canvas()];
   formula=(P)ARG0(arg);    formula=(P)ARG0(arg);
   can->color=QTOS((Q)ARG1(arg));    can->color=ZTOS((Q)ARG1(arg));
   xrange=(LIST)ARG2(arg);    xrange=(LIST)ARG2(arg);
   yrange=(LIST)ARG3(arg);    yrange=(LIST)ARG3(arg);
   zrange=(LIST)ARG4(arg);    zrange=(LIST)ARG4(arg);
Line 754  int ifplotNG(NODE arg,int func){
Line 754  int ifplotNG(NODE arg,int func){
   if(zrange){    if(zrange){
     n=BDY(zrange); can->zmin=ToReal(BDY(n));      n=BDY(zrange); can->zmin=ToReal(BDY(n));
     n=NEXT(n); can->zmax=ToReal(BDY(n));      n=NEXT(n); can->zmax=ToReal(BDY(n));
     n=NEXT(n); can->nzstep=QTOS((Q)BDY(n));      n=NEXT(n); can->nzstep=ZTOS((Q)BDY(n));
   }    }
   if(!wsize){    if(!wsize){
     can->width=DEFAULTWIDTH;      can->width=DEFAULTWIDTH;
     can->height=DEFAULTHEIGHT;      can->height=DEFAULTHEIGHT;
   } else {    } else {
     can->width=QTOS((Q)BDY(BDY(wsize)));      can->width=ZTOS((Q)BDY(BDY(wsize)));
     can->height=QTOS((Q)BDY(NEXT(BDY(wsize))));      can->height=ZTOS((Q)BDY(NEXT(BDY(wsize))));
   }    }
   if(wname) can->wname=BDY(wname);    if(wname) can->wname=BDY(wname);
   else can->wname="";    else can->wname="";
Line 783  int ifplotOP(NODE arg,int func){
Line 783  int ifplotOP(NODE arg,int func){
   VL vl,vl0;    VL vl,vl0;
   NODE n;    NODE n;
   
   index=QTOS((Q)ARG0(arg));    index=ZTOS((Q)ARG0(arg));
   formula=(P)ARG1(arg);    formula=(P)ARG1(arg);
   color=QTOS((Q)ARG2(arg));    color=ZTOS((Q)ARG2(arg));
   // set canvas data    // set canvas data
   can=canvas[index];    can=canvas[index];
   orgcolor=can->color;    orgcolor=can->color;
Line 923  int objcp(NODE arg){
Line 923  int objcp(NODE arg){
   int idsrc, idtrg, op_code;    int idsrc, idtrg, op_code;
   struct canvas *cansrc, *cantrg;    struct canvas *cansrc, *cantrg;
   
   idsrc=QTOS((Q)ARG0(arg));    idsrc=ZTOS((Q)ARG0(arg));
   idtrg=QTOS((Q)ARG1(arg));    idtrg=ZTOS((Q)ARG1(arg));
   op_code=QTOS((Q)ARG2(arg));    op_code=ZTOS((Q)ARG2(arg));
   cansrc=canvas[idsrc];    cansrc=canvas[idsrc];
   cantrg=canvas[idtrg];    cantrg=canvas[idtrg];
   obj_op(cansrc, cantrg, op_code);    obj_op(cansrc, cantrg, op_code);
Line 1030  int polarplotNG(NODE arg){
Line 1030  int polarplotNG(NODE arg){
   can=canvas[id];    can=canvas[id];
   can->mode=modeNO(POLARPLOTD);    can->mode=modeNO(POLARPLOTD);
   can->formula=(P)ARG0(arg);    can->formula=(P)ARG0(arg);
   can->color=QTOS((Q)ARG1(arg));    can->color=ZTOS((Q)ARG1(arg));
   range=(LIST)ARG2(arg);    range=(LIST)ARG2(arg);
   geom=(LIST)ARG3(arg);    geom=(LIST)ARG3(arg);
   wname=(STRING)ARG4(arg);    wname=(STRING)ARG4(arg);
Line 1041  int polarplotNG(NODE arg){
Line 1041  int polarplotNG(NODE arg){
     n=NEXT(n);can->zmax=ToReal(BDY(n));      n=NEXT(n);can->zmax=ToReal(BDY(n));
     n=NEXT(n);      n=NEXT(n);
     can->vx=VR((P)BDY(BDY(range)));      can->vx=VR((P)BDY(BDY(range)));
     can->nzstep=n?QTOS((Q)BDY(n)):DEFAULTPOLARSTEP;      can->nzstep=n?ZTOS((Q)BDY(n)):DEFAULTPOLARSTEP;
   }    }
   if(geom){    if(geom){
     can->width=width=QTOS((Q)BDY(BDY(geom)));      can->width=width=ZTOS((Q)BDY(BDY(geom)));
     can->height=height=QTOS((Q)BDY(NEXT(BDY(geom))));      can->height=height=ZTOS((Q)BDY(NEXT(BDY(geom))));
   }    }
   if(wname)can->wname=BDY(wname);    if(wname)can->wname=BDY(wname);
   else can->wname="";    else can->wname="";

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

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