1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
function [x,y,typ]=SCOPE_f(job,arg1,arg2)
// Copyright INRIA
x=[];y=[];typ=[]
select job
case 'plot' then
standard_draw(arg1)
case 'getinputs' then
[x,y,typ]=standard_inputs(o)
case 'getoutputs' then
x=[];y=[];typ=[];
case 'getorigin' then
[x,y]=standard_origin(arg1)
case 'set' then
x=arg1;
graphics=arg1(2);label=graphics(4)
if size(label)<9 then label(9)='0',end // compatibility
model=arg1(3);
state=model(2)
while %t do
[ok,clrs,win,wpos,wdim,ymin,ymax,per,N,heritance,label]=getvalue(..
'Set Scope parameters',..
['Color (>0) or mark (<0) vector (8 entries)';
'Output window number';
'Output window position';
'Output window sizes';
'Ymin';
'Ymax';
'Refresh period';
'Buffer size'
'Accept herited events 0/1'],..
list('vec',8,'vec',1,'vec',-1,'vec',-1,'vec',1,..
'vec',1,'vec',1,'vec',1,'vec',1),..
label)
if ~ok then break,end //user cancel modification
mess=[]
if size(wpos,'*')<>0 &size(wpos,'*')<>2 then
mess=[mess;'Window position must be [] or a 2 vector';' ']
ok=%f
end
if size(wdim,'*')<>0 &size(wdim,'*')<>2 then
mess=[mess;'Window dim must be [] or a 2 vector';' ']
ok=%f
end
if win<0 then
mess=[mess;'Window number can''t be negative';' ']
ok=%f
end
if per<=0 then
mess=[mess;'Refresh period must be positive';' ']
ok=%f
end
if N<2 then
mess=[mess;'Buffer size must be at least 2';' ']
ok=%f
end
if ymin>=ymax then
mess=[mess;'Ymax must be greater than Ymin';' ']
ok=%f
end
if ~or(heritance==[0 1]) then
mess=[mess;'Accept herited events must be 0 or 1';' ']
ok=%f
end
if ~ok then
message(['Some specified values are inconsistent:';
' ';mess])
end
if ok then
[model,graphics,ok]=check_io(model,graphics,-1,[],ones(1-heritance,1),[])
end
if ok then
if wpos==[] then wpos=[-1;-1];end
if wdim==[] then wdim=[-1;-1];end
rpar=[0;ymin;ymax;per]
ipar=[win;1;N;clrs(:);wpos(:);wdim(:);heritance]
if prod(size(state))<>(8+1)*N+1 then state=-eye((8+1)*N+1,1),end
model(7)=state;model(8)=rpar;model(9)=ipar
model(4)=ones(1-heritance,1)
model(11)=[] //compatibility
model(12)=[%t %f] //compatibility
graphics(4)=label;
x(2)=graphics;x(3)=model
break
end
end
case 'define' then
win=1;
wdim=[600;400]
wpos=[-1;-1]
clrs=[1;3;5;7;9;11;13;15];
N=2;
ipar=[win;1;N;clrs;wpos;wdim;0]
ymin=-15;ymax=+15;per=30;
rpar=[0;ymin;ymax;per]
state=-eye((8+1)*N+1,1)
model=list(list('scope',1),-1,[],1,[],[],state,rpar,ipar,'c',..
[],[%t %f],' ',list())
label=[strcat(string(clrs),' ');
string(win);
sci2exp([]);
sci2exp(wdim);
string(ymin);
string(ymax);
string(per);
string(N);
string(0)];
gr_i=['thick=xget(''thickness'');xset(''thickness'',2);';
'xrect(orig(1)+sz(1)/10,orig(2)+(1-1/10)*sz(2),sz(1)*8/10,sz(2)*8/10);';
'xx=[orig(1)+sz(1)/5,orig(1)+sz(1)/5;';
'orig(1)+(1-1/4)*sz(1),orig(1)+sz(1)/5];';
'yy=[orig(2)+sz(2)/5,orig(2)+sz(2)/5;';
'orig(2)+sz(2)/5,orig(2)+(1-1/3)*sz(2)];';
'xarrows(xx,yy);';
't=(0:0.3:2*%pi)'';';
'xx=orig(1)+(1/5+3*t/(10*%pi))*sz(1);';
'yy=orig(2)+(1/4.3+(sin(t)+1)*3/10)*sz(2);';
'xpoly(xx,yy,''lines'');';
'xset(''thickness'',thick)']
x=standard_define([2 2],model,label,gr_i)
end
|