File: MSCOPE_f.sci

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (136 lines) | stat: -rw-r--r-- 3,654 bytes parent folder | download | duplicates (2)
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
126
127
128
129
130
131
132
133
134
135
136
function [x,y,typ]=MSCOPE_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)<10 then label(10)='0',end // compatibility
  model=arg1(3);
  state=model(2)
  while %t do
    [ok,in,clrs,win,wpos,wdim,ymin,ymax,per,N,heritance,label]=getvalue(..
	'Set Scope parameters',..
	['Input ports sizes';
	'Drawing colors (>0) or mark (<0)';
	'Output window number';
	'Output window position';
	'Output window sizes';
	'Ymin vector';
	'Ymax vector';
	'Refresh period';
	'Buffer size';
        'Accept herited events 0/1'],..
	 list('vec',-1,'vec',-1,'vec',1,'vec',-1,'vec',-1,..
	 'vec','size(x1,''*'')','vec','size(x1,''*'')','vec',1,..
         'vec',1,'vec',1),label)
    if ~ok then break,end //user cancel modification
    mess=[]
    if size(in,'*')<=0 then
      mess=[mess;'Block must have at least one input port';' ']
      ok=%f
    end
    if mini(in)<=0 then
      mess=[mess;'Port sizes must be positive';' ']
      ok=%f
    end
    if size(clrs,'*')<sum(in) then 
      mess=[mess;'Not enough colors defined (at least '+string(sum(in))+')';' ']
      ok=%f
    end
    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 or(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,in,[],ones(1-heritance,1),[])
    end
    if ok then
      if wpos==[] then wpos=[-1;-1];end
      if wdim==[] then wdim=[-1;-1];end
//      [model,graphics,ok]=check_io(model,graphics,in,[],1,[])
      if ok then
	yy=[ymin(:)';ymax(:)']
	rpar=[0;per;yy(:)]
	clrs=clrs(1:sum(in))
	ipar=[win;size(in,'*');N;wpos(:);wdim(:);in(:);clrs(:);heritance]
	if prod(size(state))<>(sum(in)+1)*N+1 then 
	  state=-eye((sum(in)+1)*N+1,1),
	end
        model(4)=ones(1-heritance,1)
	model(7)=state;model(8)=rpar;model(9)=ipar
	model(11)=[] //compatibility
        model(12)=[%t %f] //compatibility
	graphics(4)=label;
	x(2)=graphics;x(3)=model
	break
      end
    end
  end
case 'define' then
  win=1;
  in=[1;1]
  wdim=[-1;-1]
  wpos=[-1;-1]
  clrs=[1;3;5;7;9;11;13;15];
  N=2;
  ipar=[win;size(in,'*');N;wpos(:);wdim(:);in(:);clrs(1:sum(in));0]
  ymin=[-1;-5];ymax=[1;5];per=30;
  yy=[ymin(:)';ymax(:)']
  rpar=[0;per;yy(:)]
  state=-eye((sum(in)+1)*N+1,1)
  model=list('mscope',[1;1],[],1,[],[],state,rpar,ipar,'c',..
      [],[%t %f],' ',list())
  label=[strcat(string(in),' ');
         strcat(string(clrs),' ');
	 string(win);
	 sci2exp([]);
	 sci2exp([]);
	 strcat(string(ymin),' ');
	 strcat(string(ymax),' ');
	 string(per);
	 string(N);
         string(0)];
   gr_i='xstringb(orig(1),orig(2),''MScope'',sz(1),sz(2),''fill'')'
   x=standard_define([2 2],model,label,gr_i)
end