package de.tu.darmstadt.seemoo.ansian.model; import java.util.Arrays; import de.tu.darmstadt.seemoo.ansian.control.StateHandler; public class WaveformBuffer { private ObjectRingBuffer<SamplePacket> origPackets; private ObjectRingBuffer<WaveformDrawData> drawPackets; public WaveformBuffer() { origPackets = new ObjectRingBuffer<SamplePacket>(SamplePacket.class, 300); drawPackets = new ObjectRingBuffer<WaveformDrawData>(WaveformDrawData.class, 20); } public void clearDrawData() { drawPackets = new ObjectRingBuffer<WaveformDrawData>(WaveformDrawData.class, 10); } public void addDrawData(WaveformDrawData wfDrawData) { drawPackets.add(wfDrawData); } public void addPacket(SamplePacket packet, boolean isdemodulatedPacket) { origPackets.add(packet); // TODO if back from pause, remove old drawdata if (!StateHandler.isPaused()) { if (isdemodulatedPacket) { drawPackets.add(new WaveformDrawData(Arrays.copyOf(packet.getRe(), packet.getRe().length / 2), Arrays.copyOf(packet.getIm(), packet.getIm().length / 2), isdemodulatedPacket)); } else { drawPackets .add(new WaveformDrawData(packet.getRe().clone(), packet.getIm().clone(), isdemodulatedPacket)); } } } public WaveformDrawData[] getDrawData(int amount) { // TODO amount may be wrong (pixels) return drawPackets.getLast(amount); // SamplePacket[] usedPackets = new SamplePacket[5]; // // float[] data = new float[amount]; // // WaveformDrawData res = new WaveformDrawData(); } }