Mercurial > hg > jslab
annotate src/samer/units/SignalWindow.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
rev | line source |
---|---|
samer@0 | 1 package samer.units; |
samer@0 | 2 import samer.tools.*; |
samer@0 | 3 import samer.maths.*; |
samer@0 | 4 |
samer@0 | 5 public class SignalWindow extends AnonymousTask |
samer@0 | 6 { |
samer@0 | 7 Generator gen; |
samer@0 | 8 VVector output; |
samer@0 | 9 double out[], buf[]; |
samer@0 | 10 int size, count; |
samer@0 | 11 |
samer@0 | 12 public SignalWindow(Generator g, int size) { |
samer@0 | 13 this(g,size,size); |
samer@0 | 14 } |
samer@0 | 15 |
samer@0 | 16 public SignalWindow(Generator g, int size, int step) |
samer@0 | 17 { |
samer@0 | 18 output=new VVector("signalBlock", size); |
samer@0 | 19 out=output.array(); |
samer@0 | 20 buf=new double[step]; |
samer@0 | 21 this.size=size; |
samer@0 | 22 gen=g; |
samer@0 | 23 } |
samer@0 | 24 |
samer@0 | 25 public VVector output() { return output; } |
samer@0 | 26 public void starting() { count=0; } |
samer@0 | 27 public void run() { buf[count++]=gen.next(); } |
samer@0 | 28 public void flush() { |
samer@0 | 29 System.arraycopy(out,count,out,0,size-count); |
samer@0 | 30 System.arraycopy(buf,0,out,size-count,count); |
samer@0 | 31 count=0; |
samer@0 | 32 output.changed(); |
samer@0 | 33 } |
samer@0 | 34 |
samer@0 | 35 public Task flushTask() { |
samer@0 | 36 return new NullTask() { public void run() { flush(); } }; |
samer@0 | 37 } |
samer@0 | 38 } |
samer@0 | 39 |