annotate arrows/@aconnect/construct.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents 672052bd81f8
children
rev   line source
samer@0 1 % construct - construct unit for serial connection of two arrows
samer@0 2 function u=construct(o,sizes_in)
samer@0 3 u1=[]; u2=[];
samer@0 4 try
samer@0 5 u1=construct(o.unit1,sizes_in);
samer@0 6 u2=construct(o.unit2,u1.sizes_out);
samer@0 7 n_int=nargout(o.unit1);
samer@0 8 n_out=nargout(o.unit2);
samer@0 9 catch ex
samer@0 10 if ~isempty(u2), u2.dispose(); end
samer@0 11 if ~isempty(u1), u1.dispose(); end
samer@0 12 rethrow(ex);
samer@0 13 end
samer@0 14
samer@0 15
samer@0 16 u=mkunit(o);
samer@0 17 u.starting= @starting;
samer@0 18 u.stopping= @stopping;
samer@0 19 u.dispose = @dispose;
samer@0 20 if n_int==1
samer@0 21 if n_out==1
samer@0 22 if nargin(o.unit1)==1
samer@0 23 u.process = @proc_111;
samer@0 24 else
samer@0 25 u.process = @proc_n11;
samer@0 26 end
samer@0 27 else
samer@0 28 if nargin(o.unit1)==1
samer@0 29 u.process = @proc_11n;
samer@0 30 else
samer@0 31 u.process = @proc_n1n;
samer@0 32 end
samer@0 33 end
samer@0 34 else
samer@0 35 if nargin(o.unit1)==1 && n_out==1
samer@0 36 u.process = @proc_1n1;
samer@0 37 else
samer@0 38 u.process = @proc_val;
samer@0 39 end
samer@0 40 end
samer@0 41 u.get_state = @get_state;
samer@0 42 u.set_state = @set_state;
samer@0 43 u.sizes_out = u2.sizes_out;
samer@0 44 u.viewables = [u1.viewables;u2.viewables];
samer@0 45
samer@0 46 function y=proc_111(x), y=u2.process(u1.process(x)); end
samer@0 47 function y=proc_n11(varargin), y=u2.process(u1.process(varargin{:})); end
samer@0 48 function varargout=proc_11n(x), [varargout{1:n_out}]=u2.process(u1.process(x)); end
samer@0 49 function varargout=proc_n1n(varargin)
samer@0 50 [varargout{1:n_out}] = u2.process(u1.process(varargin{:}));
samer@0 51 end
samer@0 52
samer@0 53 function y=proc_1n1(x)
samer@0 54 [tempvals{1:n_int}] = u1.process(x);
samer@0 55 y=u2.process(tempvals{:});
samer@0 56 end
samer@0 57
samer@0 58 function varargout=proc_val(varargin)
samer@0 59 [tempvals{1:n_int}] = u1.process(varargin{:});
samer@0 60 [varargout{1:n_out}] = u2.process(tempvals{:});
samer@0 61 end
samer@0 62
samer@0 63
samer@0 64 function dispose, u1.dispose(); u2.dispose(); end
samer@0 65 function starting, u1.starting(); u2.starting(); end
samer@0 66 function stopping, u1.stopping(); u2.stopping(); end
samer@0 67
samer@0 68 function s=get_state, s = {u1.get_state(),u2.get_state()}; end
samer@0 69 function set_state(s), u1.set_state(s{1}); u2.set_state(s{2}); end
samer@0 70 end