Partiel fix of bug 4658
Pierre LANDO [Tue, 6 Oct 2009 11:38:56 +0000 (13:38 +0200)]
18 files changed:
scilab/modules/graphics/macros/addcolor.sci
scilab/modules/graphics/macros/autumncolormap.sci
scilab/modules/graphics/macros/bonecolormap.sci
scilab/modules/graphics/macros/color.sci
scilab/modules/graphics/macros/colorbar.sci
scilab/modules/graphics/macros/colordef.sci
scilab/modules/graphics/macros/contour.sci
scilab/modules/graphics/macros/contour2d.sci
scilab/modules/graphics/macros/contourf.sci
scilab/modules/graphics/macros/coolcolormap.sci
scilab/modules/graphics/macros/coppercolormap.sci
scilab/modules/graphics/macros/dragrect.sci
scilab/modules/graphics/macros/edit_curv.sci
scilab/modules/graphics/macros/errbar.sci
scilab/modules/graphics/macros/eval3d.sci
scilab/modules/graphics/macros/eval3dp.sci
scilab/modules/graphics/macros/fac3d.sci
scilab/modules/graphics/macros/fac3d1.sci

index a97e9df..02e2f34 100644 (file)
@@ -7,14 +7,20 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 
-function new=addcolor(c)
-// add colors to the current colormap
+// addcolor : add colors to the current colormap
+function new=addcolor(varargin)
 
-//Modif. to accept 3x1 column vector
+  // Check number of unput argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "addcolor", 1));
+  end
+  c=varargin(1);
+  
+  //Modif. to accept 3x1 column vector
   if or(size(c)==1) then c=matrix(c,1,-1),end
   
   if size(c,'c')<>3 | max(c)>1 | min(c)<0 then
-    error('addcolor : argument is not a color table')
+               error(msprintf(gettext("%s: Wrong type for input argument #%d: %s data structure expected.\n"), "addcolor", 1, "color_map"));
   end
   f=gcf();
   cmap=f.color_map;
index 5158821..64ad166 100644 (file)
@@ -6,14 +6,21 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function cmap = autumncolormap(n)
-       
-       //autumncolormap : Orange to yellow.
+//autumncolormap : Orange to yellow.
+function cmap = autumncolormap(varargin)
        
+  // Check number of input argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "autumncolormap", 1));
+  end
+  n=varargin(1);
+
+  // Check size of input argument
        if size(n,'*')<>1 then
                error(msprintf(gettext("%s: Wrong size for input argument #%d: An integer expected.\n"),"autumncolormap",1));
        end
-       
+
+  // Check value of input argument
        if n<3 then
                error(msprintf(gettext("%s: Wrong value for input argument #%d: An integer greater or equal than %d expected.\n"),"autumncolormap",1,3));
        end
index 936968c..a3ccc5f 100644 (file)
@@ -6,14 +6,22 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function cmap = bonecolormap(n)
+function cmap = bonecolormap(varargin)
        
        //bonecolormap : Gray colormap with a light blue tone.
        
+  // Check number of input argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "bonecolormap", 1));
+  end
+  n=varargin(1);
+
+  // Check size of input argument
        if size(n,'*')<>1 then
-               error(msprintf(gettext("%s: Wrong size for input argument #%d: An integer expected.\n"),"bonecolormap",1));
+               error(msprintf(gettext("%s: Wrong size for input argument #%d: A scalar expected.\n"),"bonecolormap",1));
        end
-       
+
+  // Check value of input argument
        if n<3 then
                error(msprintf(gettext("%s: Wrong value for input argument #%d: An integer greater or equal than %d expected.\n"),"bonecolormap",1,3));
        end
index 76d48b5..10685dc 100644 (file)
@@ -6,31 +6,36 @@
 // are also available at    
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function id=color(c1,c2,c3)
+function id=color(varargin)
 // get a color from the current colormap
 // or add it to current colormap if it does not exist
 
-[lhs,rhs]=argn(0)
-if rhs==1 then 
+if size(varargin)==1 then 
+  c1=varargin(1);
   if (type(c1)<>10 | size(c1,"*")<>1) then
-    error("color: argument must be a string")
+    error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"), "color", 1));
   else
     c=name2rgb(c1);
     if c==[] then
-      error(""""+c1+""" is not a known color")
+      error(msprintf(gettext("%s: Wrong values for input argument #%d: ''%s'' expected.\n"), "color", 1, "know color"));
     end
     c=c/255;
   end
-elseif rhs==3 then
-  if (type(c1)<>1 | type(c2)<>1 | type(c3)<>1 | size(c1,"*")<>1 | size(c2,"*")<>1 | size(c3,"*")<>1) then
-    error("color: arguments must be integers")
-  end
-  if (c1>255 | c1<0 | c2>255 | c2<0 | c3>255 | c3<0) then
-    error("color: arguments must be integers between 0 and 255")
+elseif size(varargin)==3 then
+  for i=1:3,
+    if type(varargin(i))<>1 then
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: A real expected.\n"), "color", i));
+    end
+    if size(varargin(i),"*")<>1 then 
+      error(msprintf(gettext("%s: Wrong size for input argument #%d: A scalar expected.\n"), "color", i));
+    end
+    if varargin(i)<0 | varargin(i)>255 then
+      error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the interval [%s, %s].\n"),"color",i,"0","255"));
+    end
   end
-  c=[c1,c2,c3]/255;
+  c=[varargin(1),varargin(2),varargin(3)]/255;
 else
-  error("function ""color"" must have 1 or 3 arguments")
+    error(msprintf(gettext("%s: Wrong number of input arguments: %d or %d expected.\n"), "color", 1, 3));
 end
 
 f=gcf();
index 8cc7b0c..7c00ab8 100644 (file)
@@ -7,7 +7,7 @@
 // are also available at    
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function colorbar(umin, umax, colminmax,fmt)
+function colorbar(varargin)
 
 //  PURPOSE
 //     Draw a colorbar for a plot3d, fec, Sgrayplot, etc...
@@ -35,13 +35,26 @@ function colorbar(umin, umax, colminmax,fmt)
 //
 //  EXAMPLES
 //     see the help page
+
+  // Check number of input argument
+  if size(varargin)<2 | size(varargin)>4 then
+    error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "colorbar", 2, 4));
+  end
+  umin=varargin(1);
+  umax=varargin(2);
+  if size(varargin) > 2 then
+    colminmax=varargin(3);
+  end
+  if size(varargin) > 3 then
+    fmt=varargin(4);
+  end
   
   nb_grad = 5
   if ~exists("fmt","local") then 
     fmt='%-5.2g'
   else
     if type(fmt)<>10|size(fmt,'*')<>1 then 
-      error("colorbar: the fmt argument should be a string containing a C format")
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: %s data structure expected.\n"), "colorbar", 4, "string (containing a C format)"));
     end
   end
   
index 5ecd3b9..b427b98 100644 (file)
@@ -6,21 +6,47 @@
 // are also available at    
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function colordef(a1,a2)
-  if type(a1)==9 then //a handle
-    f=gcf();a=gca();a1=a2
-    if f.type<>'Figure' then 
-      error('First argument shoud be a handle on a figure'),
+function colordef(varargin)
+//Set default color values to display different color schemes
+
+  if size(varargin)<1 | size(varargin)>2 then
+    error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "colordef", 1, 2));
+  end
+  a1=varargin(1);
+  if size(varargin) == 1 then //Only one argument
+    if type(a1)<>10 then //the first argument should be a string
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"), "colordef", 1));
+    end
+    f=gdf(); a=gda();
+  end
+
+  if size(varargin) == 2 then //Two arguments
+    a2=varargin(2);
+    if type(a2)<>10 then //the second argument should be a string
+      error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"), "colordef", 2));
+    end
+
+    if type(a1)==9 then //First argument is an handle
+      f=a1;
+      a1=a2;
+      if f.type<>'Figure' then 
+        error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "colordef", 1,"handle on a figure, ""new"""));
+      end
+      scf(f);
+      a=gca();
+    elseif a1=='new' then //First argument is "new"
+      n=winsid();
+      if n==[] then
+        n=0;
+      else
+        n=max(n+1);
+      end
+    f=scf(n);
+    a=gca();a1=a2;
+    else  //First argument is NOT an handle and is not "new"
+        error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "colordef", 1,"handle on a figure, ""new"""));
     end
-  elseif a1=='new' then
-    n=winsid();if n==[] then n=0;else n=max(n+1),end
-    f=scf(n)
-    a=gca();a1=a2
-  else
-    f=gdf();a=gda();
   end
-  
-  if type(a1)<>10 then  error(44,1),  end
 
   select convstr(a1)
   case 'white'
@@ -43,6 +69,6 @@ function colordef(a1,a2)
     a.font_color=a.foreground;
     a.mark_foreground=a.foreground;
   else
-    error('Unknown color default option '+a1)
+    error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "colordef", size(varargin),"""white"", ""black"", ""none"""));
   end
 endfunction
index bc1e6a1..93bae74 100644 (file)
@@ -27,7 +27,9 @@ function contour(x,y,z,nz,theta,alpha,leg,flag,ebox,zlev)
                return
        end
        
-  if rhs<4, error('contour requires at least 4 arguments'),end;
+  if rhs<4
+    error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "contour", 4));
+  end
   levels=[]
 
   opts=[]
index a0c654c..4461668 100644 (file)
@@ -7,6 +7,12 @@
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
 function levels=contour2d(x,y,z,nz,style,strf,leg,rect,nax,void)
+
+[lhs,rhs]=argn(0)
+if rhs<4 then
+  error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "contour2d", 4));
+end
+
 opts=[]
 levels=[]
 if ~exists('style','local')==1 then 
index 9443d5c..2c03fee 100644 (file)
@@ -10,23 +10,21 @@ function contourf(x,y,z,nv,style,strf,leg,rect,nax)
        
        [nout,nin]=argn(0);
        
-       newstyle = get('figure_style')=='new'
-       
        if nin == 0 then   // demo
                t = -%pi:0.1:%pi;
                m = sin(t)'*cos(t);
                contourf(t,t,m);
                return;
-       end
+  end
 
-if nin <= 8 then nax=[1,10,1,10];end 
+if nin <= 0 then x=1:10;end
+if nin <= 1 then y=1:10;end
+if nin <= 2 then z=rand(size(x,'*'),size(y,'*'));end
+if nin <= 3 then zmin=mini(z);zmax=maxi(z);nv = zmin + (1:10)*(zmax-zmin)/(11);end
+if nin <= 5 then strf="121";end
+if nin <= 6 then leg=" ";end
 if nin <= 7 then rect=[0,0,1,1];end
-if nin <= 6 then leg=" ";end 
-if nin <= 5 then strf="121";end 
-if nin <= 3 then zmin=mini(z);zmax=maxi(z);nv = zmin + (1:10)*(zmax-zmin)/(11);end 
-if nin <= 2 then z=rand(size(x,'*'),size(y,'*'));end 
-if nin <= 1 then y=1:10;end 
-if nin <= 0 then x=1:10;end 
+if nin <= 8 then nax=[1,10,1,10];end
 if x==[] then x=1:size(z,'r');end 
 if y==[] then y=1:size(z,'c');end 
 
@@ -92,7 +90,6 @@ draw_min=1;
 H=[];
 [FA,IA]=sort(abs(Area));
 
-if newstyle then
   drawlater(); // postpon the drawing here
   a=gca();
   old_foreground = a.foreground;
@@ -114,24 +111,5 @@ if newstyle then
   end
   a.foreground = old_foreground;
   drawnow(); // draw all now!
-else
-  pat=xget('pattern');
-  for jj=IA',
-    nl=CS(2,I(jj));
-    lev1=CS(1,I(jj));
-    if (lev1 ~= minz | draw_min),
-      xp=CS(1,I(jj)+(1:nl));  
-      yp=CS(2,I(jj)+(1:nl)); 
-      pat=size(find( nv <= lev1),'*');
-      xset("pattern",pat);
-      xfpoly(xp,yp)
-    end;
-  end
-  
-  xset('pattern',pat);
-  if style(1)<>-1 then 
-    contour2d(xx,yy,zz,nv,style,"000",leg,rect,nax);
-  end
-end
 
 endfunction
index a78f413..8b179ab 100644 (file)
@@ -6,14 +6,22 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function cmap = coolcolormap(n)
+function cmap = coolcolormap(varargin)
        
        //coolcolormap : consists of colors that are shades of blue and green.
        
+  // Check number of input argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "coolcolormap", 1));
+  end
+  n=varargin(1);
+
+  // Check size of input argument
        if size(n,'*')<>1 then
                error(msprintf(gettext("%s: Wrong size for input argument #%d: An integer expected.\n"),"coolcolormap",1));
        end
-       
+
+  // Check value of input argument
        if n<3 then
                error(msprintf(gettext("%s: Wrong value for input argument #%d: An integer greater or equal than %d expected.\n"),"coolcolormap",1,3));
        end
index 01d9b73..94765e2 100644 (file)
@@ -6,14 +6,22 @@
 // are also available at
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function cmap = coppercolormap(n)
+function cmap = coppercolormap(varargin)
        
        //coppercolormap : Black to a light copper tone.
        
+  // Check number of input argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "coppercolormap", 1));
+  end
+  n=varargin(1);
+
+  // Check size of input argument
        if size(n,'*')<>1 then
                error(msprintf(gettext("%s: Wrong size for input argument #%d: An integer expected.\n"),"coppercolormap",1));
        end
-       
+
+  // Check value of input argument
        if n<3 then
                error(msprintf(gettext("%s: Wrong value for input argument #%d: An integer greater or equal than %d expected.\n"),"coppercolormap",1,3));
        end
index f12b50b..f037cb9 100644 (file)
@@ -6,7 +6,14 @@
 // are also available at    
 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
 
-function [rects,btn]=dragrect(rects)
+function [rects,btn]=dragrect(varargin)
+
+  // Check number of input argument
+  if size(varargin)<>1 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "dragrect", 1));
+  end
+  rects=varargin(1);
+
   if size(rects,1)==1 then rects=rects(:),end
   n=size(rects,2)
   f=gcf();pix=f.pixmap;f.pixmap='on';
index 7433cc0..9efa84f 100644 (file)
@@ -66,7 +66,7 @@ function [x,y,ok,gc]=edit_curv(x,y,job,tit,gc)
     case 'a' then add = 1,
     case 'x' then modx= 1
     case 'y' then mody= 1
-    else error("[job] parameter is not correct")
+    else error(msprintf(gettext("%s: Wrong value for input argument #%d: Must be in the set {%s}.\n"), "edit_curv", 3, "a, x, y"));
     end
   end
   eps = 0.03
index 7e5bd75..f584db1 100644 (file)
@@ -28,7 +28,11 @@ function []=errbar(x,y,em,ep)
                plot2d(x,y);
                errbar(x,y,0.05*ones(x),0.03*ones(x));
                return;
-       end
+  else
+    if rhs<4 then
+      error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "errbar", 4));
+    end
+  end
        
        xselect();
        [n1,n2] = size(x);
index 1a1e349..ecf90b4 100644 (file)
@@ -15,12 +15,14 @@ function [z]=eval3d(fun,x,y)
 //  feval(x,y,fun) 
 //Si y n'est pas fourni il est suppose identique a x
 //!
-[lhs,rhs]=argn(0)
-if rhs==3 then
-  nx=prod(size(x));ny=prod(size(y))
-  z=matrix(fun(ones(1,ny).*.matrix(x,1,nx),matrix(y,1,ny).*.ones(1,nx)),nx,ny)
-else
-  nx=prod(size(x))
-  z=matrix(fun(ones(1,nx).*.matrix(x,1,nx),matrix(x,1,nx).*.ones(1,nx)),nx,nx)
-end
+  [lhs,rhs]=argn(0)
+  if rhs==3 then
+    nx=prod(size(x));ny=prod(size(y))
+    z=matrix(fun(ones(1,ny).*.matrix(x,1,nx),matrix(y,1,ny).*.ones(1,nx)),nx,ny)
+  elseif rhs==2 then
+    nx=prod(size(x))
+    z=matrix(fun(ones(1,nx).*.matrix(x,1,nx),matrix(x,1,nx).*.ones(1,nx)),nx,nx)
+  else
+    error(msprintf(gettext("%s: Wrong number of input arguments: %d or %d expected.\n"), "eval3d", 2, 3));
+  end
 endfunction
index ca9297b..c396ac1 100644 (file)
@@ -37,6 +37,11 @@ function [x,y,z]=eval3dp(fun,p1,p2)
 // plot3d eval3d fac3d
 //!
 
+       [lhs,rhs]=argn(0)
+  if rhs<3 then
+    error(msprintf(gettext("%s: Wrong number of input argument(s): %d expected.\n"), "eval3dp", 3));
+  end
+
 n1=prod(size(p1))
 n2=prod(size(p2))
 //on calcule la valeur de la fonction en tous le couples (p1(i),p2(j))
index edf621b..38c69f4 100644 (file)
@@ -37,6 +37,7 @@ function fac3d(x,y,z,T,A,leg,flags,ebox)
                case 5 then plot3d(x,y,z,T,A) 
                case 6 then plot3d(x,y,z,T,A,leg) 
                case 7 then plot3d(x,y,z,T,A,leg,flags) 
-               case 8 then plot3d(x,y,z,T,A,leg,flags,ebox) 
+               case 8 then plot3d(x,y,z,T,A,leg,flags,ebox)
+    else error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "fac3d", 3, 8));
        end
 endfunction
index 342158a..4cc00fd 100644 (file)
@@ -39,7 +39,8 @@ function fac3d1(x,y,z,T,A,leg,flags,ebox)
                case 5 then plot3d1(x,y,z,T,A) 
                case 6 then plot3d1(x,y,z,T,A,leg) 
                case 7 then plot3d1(x,y,z,T,A,leg,flags) 
-               case 8 then plot3d1(x,y,z,T,A,leg,flags,ebox) 
+               case 8 then plot3d1(x,y,z,T,A,leg,flags,ebox)
+    else error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "fac3d1", 3, 8));
        end
        
 endfunction