annotate arrows/@aparallel/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 function u=construct(s,sizes_in)
samer@0 2
samer@0 3 nin1=nargin(s.a1);
samer@0 4 nin2=nargin(s.a2);
samer@0 5
samer@0 6 u1=[]; u2=[];
samer@0 7 try
samer@0 8 u1=construct(s.a1,sizes_in(1:nin1));
samer@0 9 u2=construct(s.a2,sizes_in(nin1+(1:nin2)));
samer@0 10
samer@0 11 u.sizes_out = [u1.sizes_out,u2.sizes_out];
samer@0 12
samer@0 13 nout1=length(u1.sizes_out);
samer@0 14 nout2=length(u2.sizes_out);
samer@0 15
samer@0 16 ix1 = 1:nin1; ix2 = nin1+(1:nin2);
samer@0 17 ox1 = 1:nout1; ox2 = nout1+(1:nout2);
samer@0 18
samer@0 19 nout = length(u.sizes_out);
samer@0 20 if all([nin1,nin2,nout1,nout2]==[1,1,1,1]),
samer@0 21 u.process = @proc11;
samer@0 22 else
samer@0 23 u.process = @proc;
samer@0 24 end
samer@0 25 catch ex
samer@0 26 if ~isempty(u2), u2.dispose(); end
samer@0 27 if ~isempty(u1), u1.dispose(); end
samer@0 28 rethrow(ex);
samer@0 29 end
samer@0 30
samer@0 31 u.dispose = @dispose;
samer@0 32 u.starting= @starting;
samer@0 33 u.stopping= @starting;
samer@0 34 u.dispose = @dispose;
samer@0 35 u.get_state = @get_state;
samer@0 36 u.set_state = @set_state;
samer@0 37 u.viewables = [u1.viewables;u2.viewables];
samer@0 38
samer@0 39 function [y1,y2]=proc11(x1,x2)
samer@0 40 y1=u1.process(x1);
samer@0 41 y2=u2.process(x2);
samer@0 42 end
samer@0 43
samer@0 44 function varargout=proc(varargin)
samer@0 45 varargout=cell(1,nout);
samer@0 46 [varargout{ox1}]=u1.process(varargin{ix1});
samer@0 47 [varargout{ox2}]=u2.process(varargin{ix2});
samer@0 48 end
samer@0 49
samer@0 50 function dispose, u1.dispose(); u2.dispose(); end
samer@0 51 function starting, u1.starting(); u2.starting(); end
samer@0 52 function stopping, u1.stopping(); u2.stopping(); end
samer@0 53
samer@0 54 function s=get_state, s = {u1.get_state(),u2.get_state()}; end
samer@0 55 function set_state(s), u1.set_state(s{1}); u2.set_state(s{2}); end
samer@0 56 end
samer@0 57