samer@0: package samer.units; samer@0: import samer.tools.*; samer@0: import samer.maths.*; samer@0: samer@0: public class SignalWindow extends AnonymousTask samer@0: { samer@0: Generator gen; samer@0: VVector output; samer@0: double out[], buf[]; samer@0: int size, count; samer@0: samer@0: public SignalWindow(Generator g, int size) { samer@0: this(g,size,size); samer@0: } samer@0: samer@0: public SignalWindow(Generator g, int size, int step) samer@0: { samer@0: output=new VVector("signalBlock", size); samer@0: out=output.array(); samer@0: buf=new double[step]; samer@0: this.size=size; samer@0: gen=g; samer@0: } samer@0: samer@0: public VVector output() { return output; } samer@0: public void starting() { count=0; } samer@0: public void run() { buf[count++]=gen.next(); } samer@0: public void flush() { samer@0: System.arraycopy(out,count,out,0,size-count); samer@0: System.arraycopy(buf,0,out,size-count,count); samer@0: count=0; samer@0: output.changed(); samer@0: } samer@0: samer@0: public Task flushTask() { samer@0: return new NullTask() { public void run() { flush(); } }; samer@0: } samer@0: } samer@0: