diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp index e5567d696778474389572d5dc7b392df57f502ff..ae5f5aae37d4a409e1a0acde926dee21f7b1e1d7 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.cpp +++ b/Source/Processors/Visualization/SpikeDisplayCanvas.cpp @@ -300,7 +300,7 @@ void SpikeDisplayCanvas::processSpikeEvents() simSpike.nSamples = 40; - //spikeDisplay->plotSpike(simSpike); + spikeDisplay->plotSpike(simSpike); } @@ -316,8 +316,21 @@ void SpikeDisplayCanvas::processSpikeEvents() SpikeDisplay::SpikeDisplay(SpikeDisplayCanvas* sdc, Viewport* v) : canvas(sdc), viewport(v) { + + minWidth = 300; + maxWidth = 500; + minHeight = 100; + maxHeight = 200; + totalHeight = 1000; + for (int i = 0; i < 10; i++) + { + SpikePlot* spikePlot = new SpikePlot(canvas, i, 2); + spikePlots.add(spikePlot); + addAndMakeVisible(spikePlot); + } + } SpikeDisplay::~SpikeDisplay() @@ -339,6 +352,41 @@ void SpikeDisplay::paint(Graphics& g) void SpikeDisplay::resized() { + int w = getWidth(); + + int numColumns = w / minWidth; + int column, row; + + float width = (float) w / (float) numColumns; + float height = width * 0.75; + + for (int i = 0; i < spikePlots.size(); i++) + { + + column = i % numColumns; + row = i / numColumns; + spikePlots[i]->setBounds(width*column,row*height,width,height); + + } + + totalHeight = (int) height*(float(row)+1); + + if (totalHeight < getHeight()) + { + canvas->resized(); + } + + //setBounds(0,0,getWidth(), totalHeight); + + + // layoutManagerX.layOutComponents((Component**) spikePlots.getRawDataPointer(), + // spikePlots.size(), + // 0, + // 0, + // getWidth(), + // getHeight(), + // false, + // false); } void SpikeDisplay::mouseDown(const MouseEvent& event) @@ -346,6 +394,11 @@ void SpikeDisplay::mouseDown(const MouseEvent& event) } +void SpikeDisplay::plotSpike(const SpikeObject& spike) +{ + +} + @@ -367,7 +420,14 @@ SpikePlot::~SpikePlot() void SpikePlot::paint(Graphics& g) { - g.fillAll(Colours::yellow); + g.setColour(Colours::yellow); + g.fillRect(10, 10, getWidth()-20, getHeight()-20); + + g.setColour(Colours::black); + + g.drawLine(0, 0, getWidth(), getHeight()); + g.drawLine(0, getHeight(), getWidth(), 0); + } void SpikePlot::select() diff --git a/Source/Processors/Visualization/SpikeDisplayCanvas.h b/Source/Processors/Visualization/SpikeDisplayCanvas.h index 68309cc4ff30b426889ec5dec3f6af7038ea868c..e8032209960a6b7158a78e4d08cd41b163f87928 100755 --- a/Source/Processors/Visualization/SpikeDisplayCanvas.h +++ b/Source/Processors/Visualization/SpikeDisplayCanvas.h @@ -102,7 +102,7 @@ public: void mouseDown(const MouseEvent& event); - //void plotSpike(const SpikeObject& spike); + void plotSpike(const SpikeObject& spike); int getTotalHeight() {return totalHeight;} @@ -120,7 +120,9 @@ private: SpikeDisplayCanvas* canvas; Viewport* viewport; - Array<SpikePlot*> spikePlots; + OwnedArray<SpikePlot> spikePlots; + + int maxWidth, maxHeight, minWidth, minHeight; };