diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.cpp b/Source/Processors/Visualization/LfpDisplayCanvas.cpp index 7bbfe9dc243cf99e6016435b80eb8c3d44d4c2f7..dce90aaf12f1ebff28e471bde7a92c1be0c4f08c 100755 --- a/Source/Processors/Visualization/LfpDisplayCanvas.cpp +++ b/Source/Processors/Visualization/LfpDisplayCanvas.cpp @@ -69,6 +69,15 @@ LfpDisplayCanvas::LfpDisplayCanvas(LfpDisplayNode* processor_) : timebases.add("5.0"); timebases.add("10.0"); + + spreads.add("10"); + spreads.add("20"); + spreads.add("30"); + spreads.add("40"); + spreads.add("50"); + spreads.add("60"); + + rangeSelection = new ComboBox("Voltage range"); rangeSelection->addItemList(voltageRanges, 1); rangeSelection->setSelectedId(4,false); @@ -81,6 +90,14 @@ LfpDisplayCanvas::LfpDisplayCanvas(LfpDisplayNode* processor_) : timebaseSelection->addListener(this); addAndMakeVisible(timebaseSelection); + + spreadSelection = new ComboBox("Spread"); + spreadSelection->addItemList(spreads, 1); + spreadSelection->setSelectedId(5,false); + spreadSelection->addListener(this); + addAndMakeVisible(spreadSelection); + + lfpDisplay->setNumChannels(nChans); lfpDisplay->setRange(1000.0f); @@ -102,6 +119,7 @@ void LfpDisplayCanvas::resized() rangeSelection->setBounds(5,getHeight()-30,100,25); timebaseSelection->setBounds(175,getHeight()-30,100,25); + spreadSelection->setBounds(345,getHeight()-30,100,25); } @@ -152,6 +170,13 @@ void LfpDisplayCanvas::comboBoxChanged(ComboBox* cb) lfpDisplay->setRange(voltageRanges[cb->getSelectedId()-1].getFloatValue()); //std::cout << "Setting range to " << voltageRanges[cb->getSelectedId()-1].getFloatValue() << std::endl; } + else if (cb == spreadSelection) + { + //spread = spreads[cb->getSelectedId()-1].getFloatValue(); + lfpDisplay->setChannelHeight(spreads[cb->getSelectedId()-1].getFloatValue()); + lfpDisplay->resized(); + std::cout << "Setting spread to " << spreads[cb->getSelectedId()-1].getFloatValue() << std::endl; + } timescale->setTimebase(timebase); } @@ -333,6 +358,7 @@ void LfpDisplayCanvas::paint(Graphics& g) g.drawText("Voltage range (uV)",5,getHeight()-55,300,20,Justification::left, false); g.drawText("Timebase (s)",175,getHeight()-55,300,20,Justification::left, false); + g.drawText("Spread (px)",345,getHeight()-55,300,20,Justification::left, false); } @@ -351,8 +377,10 @@ void LfpDisplayCanvas::saveVisualizerParameters(XmlElement* xml) XmlElement* xmlNode = xml->createNewChildElement("LFPDISPLAY"); + xmlNode->setAttribute("Range",rangeSelection->getSelectedId()); xmlNode->setAttribute("Timebase",timebaseSelection->getSelectedId()); + xmlNode->setAttribute("Spread",spreadSelection->getSelectedId()); xmlNode->setAttribute("ScrollX",viewport->getViewPositionX()); xmlNode->setAttribute("ScrollY",viewport->getViewPositionY()); @@ -367,6 +395,8 @@ void LfpDisplayCanvas::loadVisualizerParameters(XmlElement* xml) { rangeSelection->setSelectedId(xmlNode->getIntAttribute("Range")); timebaseSelection->setSelectedId(xmlNode->getIntAttribute("Timebase")); + spreadSelection->setSelectedId(xmlNode->getIntAttribute("Spread")); + viewport->setViewPosition(xmlNode->getIntAttribute("ScrollX"), xmlNode->getIntAttribute("ScrollY")); } @@ -559,6 +589,18 @@ void LfpDisplay::setRange(float r) } +void LfpDisplay::setChannelHeight(float r) +{ + + for (int i = 0; i < numChans; i++) + { + + channels[i]->setChannelHeight(r); + + } + +} + void LfpDisplay::mouseDown(const MouseEvent& event) { //int x = event.getMouseDownX(); diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.h b/Source/Processors/Visualization/LfpDisplayCanvas.h index 6c30c3b98aac9eb0e81183dac567f81e9b88fb52..89cca530a457fcf80f417b7a8fd4ff5811b68109 100755 --- a/Source/Processors/Visualization/LfpDisplayCanvas.h +++ b/Source/Processors/Visualization/LfpDisplayCanvas.h @@ -85,6 +85,7 @@ private: float timebase; float displayGain; float timeOffset; + float spread ; // vertical spacing between channels static const int MAX_N_CHAN = 256; // maximum number of channels static const int MAX_N_SAMP = 5000; // maximum display size in pixels @@ -101,9 +102,11 @@ private: ScopedPointer<ComboBox> timebaseSelection; ScopedPointer<ComboBox> rangeSelection; + ScopedPointer<ComboBox> spreadSelection; StringArray voltageRanges; StringArray timebases; + StringArray spreads; // option for vertical spacing between channels void refreshScreenBuffer(); void updateScreenBuffer(); @@ -162,6 +165,7 @@ public: void mouseDown(const MouseEvent& event); void setRange(float range); + void setChannelHeight(float r); private: int numChans;