Demo mode : remove console prints
[scilab.git] / scilab / modules / graphics / macros / contour.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) INRIA
3 // This file must be used under the terms of the CeCILL.
4 // This source file is licensed as described in the file COPYING, which
5 // you should have received as part of this distribution.  The terms
6 // are also available at    
7 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
8
9 function contour(x,y,z,nz,theta,alpha,leg,flag,ebox,zlev)
10         
11         rhs=argn(2);
12         
13         if rhs == 0 then   // demo
14                 deff('[z]=Surf1(x,y)','z=x^2+y^3');
15                 x=-1:0.1:1;
16                 y=x;
17                 subplot(211);
18                 contour(x,y,Surf1,10);
19                 z=eval3d(Surf2,x,y)
20                 subplot(212);
21                 plot3d(x,y,z);
22                 contour(x,y,z+0.1,10,flag=[0 2 4]);
23                 return
24         end
25         
26   if rhs<4, error('contour requires at least 4 arguments'),end;
27   levels=[]
28
29   opts=[]
30   if exists('theta','local')==1 then opts=[opts,'theta=theta'],end
31   if exists('alpha','local')==1 then opts=[opts,'alpha=alpha'],end
32   if exists('leg'  ,'local')==1 then opts=[opts,'leg=leg']    ,end
33   if exists('ebox' ,'local')==1 then opts=[opts,'ebox=ebox']  ,end
34   if exists('flag' ,'local')==0 then flag=[2 2 3], end
35   if exists('zlev' ,'local')==0 then zlev=0  ,end
36   
37   if or(type(z)==[11 13]) then 
38     fun=z;clear z //to avoid redfinition warning
39     if type(fun)==11 then comp(fun),end
40     z=feval(x,y,fun)
41   end
42   
43   job=flag(1)
44   if rhs==4|job==2 then  
45     contour2d(x,y,z,nz);
46     return,
47   end
48     
49   if size(nz,'*')==1 then
50     style=1:nz,
51   else
52     style=1:size(nz,'*')
53   end
54   
55   opts=strcat([opts,'flag=flag(2:3)'],',');
56
57   [xc,yc]=contour2di(x,y,z,nz);
58
59
60   fig=gcf();
61   autoc=fig.auto_clear;
62   if autoc=="on" then, xbasc(),end
63   a=gca();
64   fg=a.foreground
65   v=fig.immediate_drawing;
66   fig.immediate_drawing="off"
67   fig.auto_clear="off"
68   cnt=0
69
70   fpf=xget("fpf");if fpf=='' then fpf='%.2g',end
71   k=1;n=yc(k); c=0; level = %inf;
72   while k < length(xc)
73     n = yc(k)
74     if xc(k) ~= level then 
75       c = c+1; level = xc(k),levels=[level levels];
76       a.foreground=c;
77       if cnt>0 then glue(a.children(1:cnt)),cnt=0,end
78     end
79     
80     if job==1 then zz=zlev,else zz=level,end
81     execstr('param3d(xc(k+(1:n)),yc(k+(1:n)),zz*ones(1,n),'+opts+')')
82     
83     cnt = cnt+1
84     if stripblanks(fpf)<>'' then
85       xstring(xc(k+1+n/2),yc(k+1+n/2)," "+msprintf(fpf,level))
86       e=gce();e.data(3)=zz
87       cnt=cnt+1
88     end
89     k=k+n+1;
90   end
91   if cnt>0 then glue(a.children(1:cnt)),cnt=0,end
92   set('current_obj',a);
93   a.foreground=fg
94   if flag(3) == 0 then
95     a.axes_visible='off';
96     a.box='off';
97   elseif flag(3) == 1 then
98     a.axes_visible='off';
99     a.box='off';
100   elseif flag(3) == 2 then
101     a.axes_visible='off';
102     a.box='back_half';
103   elseif flag(3)==3 then
104     a.axes_visible='off';
105     a.box='on';
106    elseif flag(3)>=4 then
107     a.axes_visible='on';
108     a.box='on';
109   end
110   fig.immediate_drawing=v;
111   fig.auto_clear=autoc;
112 endfunction
113