bug 7566 fix: The cacsd module graphic functions (bode, black, nyquist,...) 76/1376/5
Serge Steer [Tue, 20 Jul 2010 08:23:38 +0000 (10:23 +0200)]
did not preserve the immediate_drawing property value.

Change-Id: Ife49641b2cd38b6b1a0554a7be72fe49fbea8d53

16 files changed:
scilab/CHANGES_5.3.X
scilab/modules/cacsd/macros/black.sci
scilab/modules/cacsd/macros/bode.sci
scilab/modules/cacsd/macros/chart.sci
scilab/modules/cacsd/macros/evans.sci
scilab/modules/cacsd/macros/gainplot.sci
scilab/modules/cacsd/macros/hallchart.sci
scilab/modules/cacsd/macros/m_circle.sci
scilab/modules/cacsd/macros/nicholschart.sci
scilab/modules/cacsd/macros/nyquist.sci
scilab/modules/cacsd/macros/plzr.sci
scilab/modules/cacsd/macros/sgrid.sci
scilab/modules/cacsd/macros/show_margins.sci
scilab/modules/cacsd/macros/zgrid.sci
scilab/modules/cacsd/tests/nonreg_tests/bug_7566.dia.ref [new file with mode: 0644]
scilab/modules/cacsd/tests/nonreg_tests/bug_7566.tst [new file with mode: 0644]

index e0d1cc0..4ba9de1 100644 (file)
@@ -131,10 +131,12 @@ Bug Fixes:
 * bug 7551 fixed - An Xcos block could not change the type of a port when it was
                    already present.
 
+* bug 7566 fixed - The cacsd module graphic functions (bode, black, nyquist,...) 
+                   did not preserve the immediate_drawing property value.
+
 * bug 7568 fixed - In the completion window, an exception was thrown when an
                    item was selected.
 
-
            Changes between version 5.2.X and 5.3.0-beta1 of Scilab
            =======================================================
 
index 487a23b..f8f026d 100644 (file)
@@ -140,7 +140,10 @@ function black(varargin)
     end
   end
   kf=1
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   if size(ax.children,"*")==0 then
     ax.data_bounds=[xmn ymn;xmx ymx];
@@ -211,8 +214,9 @@ function black(varargin)
     c=[];for k=1:mn,c=[E(k).children(1),c];end
     legend([c e]',["2.3"+_("dB");comments(:)])
   end
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
 endfunction
+
 function str=formatBlackTip(curve,pt,index)
 //This function is called by the datatip mechanism to format the tip
 //string for black curves.
index 7001da4..450f378 100644 (file)
@@ -79,7 +79,10 @@ function []=bode(varargin)
     hx=0.43
   end;
 
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   sciCurAxes=gca();
   axes=sciCurAxes;
   wrect=axes.axes_bounds;
@@ -140,16 +143,18 @@ function []=bode(varargin)
     c=captions(ephi.children,comments,"lower_caption")
     c.background=get(gcf(),"background")
   end
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
   // return to the previous scale
   set( "current_axes", sciCurAxes ) ;
 
 endfunction
+
 function str=formatBodeMagTip(curve,pt,index)
 //this function is called by the datatips mechanism to format the tip
 //string for the magnitude bode curves
   str=msprintf("%.4g"+_("Hz")+"\n%.4g"+_("dB"), pt(1),pt(2))
 endfunction
+
 function str=formatBodePhaseTip(curve,pt,index)
 //this function is called by the datatip mechanism to format the tip
 //string for the bode phase curves
index 7100001..83c786f 100644 (file)
@@ -80,7 +80,11 @@ function chart(attenu,angl,flags)
   k1=floor(phi_min/180)
   k2=ceil(phi_max/180)
   //
-  drawlater()
+  
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   if flags(2) then xtitle(titre,_("phase(y) (degree)"),_("magnitude(y) (Db)")),end
   llrect=xstringl(0,0,'1')
   
@@ -163,5 +167,5 @@ function chart(attenu,angl,flags)
   end;
   glue(ax.children(size(angl,'*'):-1:1))
   end
-  drawnow() ;
+  fig.immediate_drawing=immediate_drawing;
 endfunction
index 69751e0..17bc789 100644 (file)
@@ -117,9 +117,9 @@ function evans(n,d,kmax)
   if dy<1d-10, dy=0.01,end
   legs=[],lstyle=[];lhandle=[]
   rect=[xmin-dx;ymin-dy;xmax+dx;ymax+dy];
-  f=gcf();
-  cur_im_dr= f.immediate_drawing;
-  f.immediate_drawing = 'off';
+  fig=gcf();
+  immediate_drawing = fig.immediate_drawing;
+  fig.immediate_drawing = 'off';
   a=gca()
   a.data_bounds=[rect(1) rect(2);rect(3) rect(4)]
   if nroots<>[] then 
@@ -175,10 +175,9 @@ function evans(n,d,kmax)
   [n1,n2]=size(racines);
 
   plot2d(real(racines)',imag(racines)',style=2+(1:n2));
-  legend(lhandle,legs,1);
+  legend(lhandle,legs);
   xtitle(_("Evans root locus"),_("Real axis"),_("Imaginary axis"));
-  f=gcf();
-  if(cur_im_dr=="on") then f.immediate_drawing = 'on';end
+  fig.immediate_drawing = immediate_drawing;
 
   if fin=='nptmax' then
     warning(msprintf(gettext("%s: Curve truncated to the first %d discretization points.\n"),"evans",nptmax))
index 6a1bd2d..2338b01 100644 (file)
@@ -72,7 +72,10 @@ function []=gainplot(varargin)
   end
 
   //
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   axes = gca() ;
   if size(axes.children,"*")==0 then
     axes.data_bounds=[min(frq),min(d);max(frq),max(d)]
@@ -100,8 +103,9 @@ function []=gainplot(varargin)
   if comments<>[] then
     legend(comments)
   end
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
 endfunction
+
 function str=formatGainplotTip(curve,pt,index)
 //this function is called by the datatips mechanism to format the tip
 //string for the magnitude bode curves
index fcf50f1..9839a48 100644 (file)
@@ -38,7 +38,10 @@ function hallchart(modules,args,colors)
     end
   end
 
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   nc=size(ax.children,"*")
   if nc==0 then
@@ -117,15 +120,16 @@ function hallchart(modules,args,colors)
   for k=1:nc
     swap_handles(ax.children(k),ax.children(k+1))
   end
-
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
 endfunction
+
 function str=formatHallModuleTip(curve,pt,index)
 //this function is called by the datatip mechanism to format the tip
 //string for the Hall charts iso module curves
   ud=datatipGetStruct(curve);
   str=msprintf("%.2g"+_("dB"), ud.module);
 endfunction
+
 function str=formatHallPhaseTip(curve,pt,index)
 //This function is called by the datatip mechanism to format the tip
 //string for the Hall charts iso phase curves
index d2ff918..778e9be 100644 (file)
@@ -27,7 +27,10 @@ function []=m_circle(gain)
   rayon=abs(rayon)
   rect=[min(centre-rayon),min(-rayon),max(centre+rayon),max(rayon)];
   //
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   llrect=xstringl(0,0,'1')
   hx=llrect(3);
@@ -49,6 +52,6 @@ function []=m_circle(gain)
     xpoly([real(rf) real(rf($:-1:1))],[imag(rf)  -imag(rf($:-1:1))])
     e=gce();e.foreground=3;e.clip_state='clipgrf'
   end;
-  drawnow();
+  fig.immediate_drawing=immediate_drawing;
 
 endfunction
index e4cb7c7..c239eed 100644 (file)
@@ -11,7 +11,10 @@ function nicholschart(modules,args,colors)
   l10=log(10);
   ratio=%pi/180;
 
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   nc=size(ax.children,"*")
   if nc==0 then
@@ -178,14 +181,16 @@ function nicholschart(modules,args,colors)
     swap_handles(ax.children(k),ax.children(k+1))
   end
 
-  drawnow() ;
+   fig.immediate_drawing=immediate_drawing;
 endfunction
+
 function str=formatNicholsGainTip(curve,pt,index)
 //This function is called by the datatip mechanism to format the tip
 //string for the Nichols chart iso gain curves.
   ud=datatipGetStruct(curve);
   str=msprintf("%.2g"+_("dB"),ud.gain);
 endfunction
+
 function str=formatNicholsPhaseTip(curve,pt,index)
 //This function is called by the datatip mechanism to format the tip
 //string for the Nichols chart iso phase curves.
index 49487e2..5aa3275 100644 (file)
@@ -94,7 +94,10 @@ function nyquist(varargin)
   dy=(mxy-mny)/30;
   rect=[mnx-dx,mny-dy;mxx+dx,mxy+dy];
 
-  drawlater()
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   if ax.children==[] then
     ax.data_bounds=rect;
@@ -220,8 +223,9 @@ function nyquist(varargin)
   if comments<>[] then
     legend(Curves($:-1:1),comments);
   end
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
 endfunction
+
 function str=formatNyquistTip(curve,pt,index)
 //This function is called by the datatip mechanism to format the tip
 //string for the nyquist curves.
index 0c2b351..a95bed0 100644 (file)
@@ -72,7 +72,11 @@ function plzr(a,b,c,d)
     my=my+ay
   end
   rect=[mnx, -my, mxx, my];
-  drawlater()
+  
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
   ax=gca();
   ax.data_bounds=[mnx, -my; mxx, my];
   ax.axes_visible='on';
@@ -98,6 +102,6 @@ function plzr(a,b,c,d)
   xtitle(gettext("Transmission zeros and poles"),gettext("Real axis"), ...
         gettext("Imaginary axis"));
   if legs<>[] then legend(lhandle,legs,1),end
-  drawnow()
+  fig.immediate_drawing=immediate_drawing;
   show_window();
 endfunction
index 9a2ab3f..763ef0c 100644 (file)
@@ -14,6 +14,10 @@ function [] = sgrid(zeta,wn,col)
 // sgrid(Z,Wn)
 // sgrid('new') 
   [lhs,rhs]=argn(0)
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+  
   axes=gca();
   select rhs
   case 0 then 
@@ -75,5 +79,5 @@ function [] = sgrid(zeta,wn,col)
   axes.clip_state = "clipgrf";
   xnumb(re(:,$)',im(:,$)',zeta);
   axes.clip_state = "off";
-  
+   fig.immediate_drawing=immediate_drawing;
 endfunction
index a9e37f5..2bbfe55 100644 (file)
@@ -13,7 +13,12 @@ function show_margins(h,typ)
     error(msprintf(_("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"),..
                   "show_margins",2,'""nyquist"", ""bode""'))
   end
-  drawlater();clf();
+  
+  fig=gcf();
+  immediate_drawing=fig.immediate_drawing;
+  fig.immediate_drawing="off";
+
+  clf();
   if typ=="bode" then
     bode(h)
     f=gcf();
@@ -80,7 +85,6 @@ function show_margins(h,typ)
       e=gce();e.foreground=color('red');e.thickness=2;
     end
   end
-  
-  
-  drawnow()
+  fig.immediate_drawing=immediate_drawing; 
+
 endfunction
index 7c10d48..ef5a7e9 100644 (file)
@@ -8,10 +8,10 @@
 
 function []=zgrid()
        
-       my_figure = gcf();
+       fig = gcf();
        show_window();
-       
-       my_figure.immediate_drawing = "off";
+       immediate_drawing=fig.immediate_drawing;
+       fig.immediate_drawing = "off";
        
        square(-1.1,-1.1,1.1,1.1);
        xtitle( ["loci with constant damping and constant frequencies";"in discrete plane"]," "," ");
@@ -44,6 +44,6 @@ function []=zgrid()
        plot2d(real(zw),imag(zw),1*ones(1,nr),"001");
        plot2d(real(zw),-imag(zw),1*ones(1,nr),"001");
        
-       my_figure.immediate_drawing = "on";
+       fig.immediate_drawing = immediate_drawing;
        
 endfunction
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_7566.dia.ref b/scilab/modules/cacsd/tests/nonreg_tests/bug_7566.dia.ref
new file mode 100644 (file)
index 0000000..8266b20
--- /dev/null
@@ -0,0 +1,43 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+// <-- Non-regression test for bug 6829 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6829
+//
+// <-- Short Description -->
+// The cacsd module graphic function (bode, black, nyquist,...) do not preserve the immediate_drawing property value.
+fig=gcf();
+s=poly(0,'s');
+h=syslin('c',(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01));
+clf();fig.immediate_drawing="off";
+bode(h);
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+gainplot(h);
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+show_margins(h);
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+black(h);
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+nyquist(h);
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+hallchart();
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+nicholschart();
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+sgrid();
+if fig.immediate_drawing=="on" then bugmes();quit;end
+clf();fig.immediate_drawing="off";
+zgrid();
+if fig.immediate_drawing=="on" then bugmes();quit;end
diff --git a/scilab/modules/cacsd/tests/nonreg_tests/bug_7566.tst b/scilab/modules/cacsd/tests/nonreg_tests/bug_7566.tst
new file mode 100644 (file)
index 0000000..358c642
--- /dev/null
@@ -0,0 +1,56 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2009 - INRIA - Serge Steer
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- Non-regression test for bug 6829 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=6829
+//
+// <-- Short Description -->
+// The cacsd module graphic function (bode, black, nyquist,...) do not preserve the immediate_drawing property value.
+
+fig=gcf();
+s=poly(0,'s');
+h=syslin('c',(s^2+2*0.9*10*s+100)/(s^2+2*0.3*10.1*s+102.01));
+
+
+clf();fig.immediate_drawing="off";
+bode(h);
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+gainplot(h);
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+show_margins(h);
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+black(h);
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+nyquist(h);
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+hallchart();
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+nicholschart();
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+sgrid();
+if fig.immediate_drawing=="on" then pause,end
+
+clf();fig.immediate_drawing="off";
+zgrid();
+if fig.immediate_drawing=="on" then pause,end
+