=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/plot/if.c,v retrieving revision 1.32 retrieving revision 1.36 diff -u -p -r1.32 -r1.36 --- OpenXM_contrib2/asir2000/plot/if.c 2014/08/20 16:51:34 1.32 +++ OpenXM_contrib2/asir2000/plot/if.c 2017/09/04 01:57:53 1.36 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/plot/if.c,v 1.31 2014/07/05 03:55:42 saito Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/plot/if.c,v 1.35 2017/09/01 01:48:40 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -128,6 +128,8 @@ int plot(NODE arg,int fn){ LIST xrange,yrange,zrange,wsize; STRING wname; V v; + Real r; + double rr; formula=(P)ARG0(arg); xrange=(LIST)ARG1(arg); @@ -145,7 +147,10 @@ int plot(NODE arg,int fn){ n=BDY(yrange);can->vy=VR((P)BDY(n));n=NEXT(n); can->qymin=(Q)BDY(n);n=NEXT(n);can->qymax=(Q)BDY(n); can->ymin=ToReal(can->qymin);can->ymax=ToReal(can->qymax); - } + } else if ( !formula || NUM(formula) ) { + devalr(CO,(Obj)formula,(Obj *)&r); rr = ToReal(r); + can->ymin=rr-1; can->ymax=rr+1; + } can->mode=fn; if(zrange){ n=NEXT(BDY(zrange)); @@ -170,6 +175,7 @@ int plot(NODE arg,int fn){ can->formula=formula; if(can->mode==modeNO(PLOT)){ //plot + can->prec=argc(arg)==7 ? QTOS((Q)ARG6(arg)) : 0; plotcalc(can); create_canvas(can); plot_print(display,can); @@ -210,7 +216,7 @@ int memory_plot(NODE arg,LIST *bytes){ double **tabe; int i; BYTEARRAY barray; - Q qw,qh; + Q qw,qh,prec; formula=(P)ARG0(arg); xrange=(LIST)ARG1(arg); @@ -247,6 +253,7 @@ int memory_plot(NODE arg,LIST *bytes){ can->wname=""; can->formula=formula; if( can->mode==modeNO(PLOT)){ + can->prec = argc(arg)==6 ? QTOS((Q)ARG5(arg)) : 0; plotcalc(can); memory_print(can,&barray); STOQ(can->width,qw); STOQ(can->height,qh); @@ -283,25 +290,26 @@ int plotover(NODE arg){ for(vl0=vl;vl0;vl0=NEXT(vl0)) if(vl0->v->attr==(pointer)V_IND) if(vl->v!=can->vx && vl->v!=can->vy)return -1; -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif current_can=can; can->formula=formula; if(can->mode==modeNO(PLOT)){ + can->prec = argc(arg)==3 ? QTOS((Q)ARG2(arg)) : 0; plotcalc(can); plot_print(display,can); } else ifplotmain(can); copy_to_canvas(can); can->color=orgcolor; -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif return id; } int drawcircle(NODE arg){ -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) int id,index,wx,wy,wr; unsigned int c; pointer ptr; @@ -377,7 +385,7 @@ int draw_obj(NODE arg){ set_lasterror("draw_obj : invalid request"); return -1; } -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif return 0; @@ -410,7 +418,7 @@ int draw_string(NODE arg){ x=(int)ToReal((Q)ARG0(pos)); y=(int)ToReal((Q)ARG1(pos)); draw_character_string(display,can,x,y,str,color); -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif return 0; @@ -565,7 +573,7 @@ void ifplot_resize(struct canvas *can,POINT spos,POINT if(can->precise && !can->wide){ current_can=can; alloc_pixmap(ncan); -#if defined(VISUAL) +#if defined(VISUAL) || defined(__MINGW32__) ncan->real_can=can; #endif qifplotmain(ncan); @@ -628,6 +636,7 @@ void plot_resize(struct canvas *can,POINT spos,POINT e ncan->xmin=ToReal(ncan->qxmin); ncan->xmax=ToReal(ncan->qxmax); ncan->ymin=ymax-YC(epos)*dy/can->height; ncan->ymax=ymax-YC(spos)*dy/can->height; + ncan->prec = can->prec; create_canvas(ncan); switch (ncan->mode){ @@ -786,7 +795,7 @@ int ifplotOP(NODE arg,int func){ for(vl0=vl;vl0;vl0=NEXT(vl0)) if(vl0->v->attr==(pointer)V_IND) if(vl->v!=can->vx && vl->v!=can->vy)return -1; -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif can->mode=func; @@ -795,7 +804,7 @@ int ifplotOP(NODE arg,int func){ set_drawcolor(orgcolor); copy_to_canvas(can); can->color=orgcolor; -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) set_drawcolor(can->color); #endif return index; @@ -908,7 +917,7 @@ void ifplotmainNG(struct canvas *can){ define_cursor(can->window,normalcur); } -#if !defined(VISUAL) +#if !defined(VISUAL) && !defined(__MINGW32__) int objcp(NODE arg){ int idsrc, idtrg, op_code; struct canvas *cansrc, *cantrg;