diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile index ade31750e62655e49440e6decbdb79c491ae136a..fed02a124cf915eb93054787d945aae751d76c86 100644 --- a/Builds/Linux/Makefile +++ b/Builds/Linux/Makefile @@ -73,6 +73,7 @@ OBJECTS := \ $(OBJDIR)/SpikeDetector_300d85e7.o \ $(OBJDIR)/AudioNode_94606ff3.o \ $(OBJDIR)/EventNode_95c842b7.o \ + $(OBJDIR)/VisualizerEditor_3672b003.o \ $(OBJDIR)/MergerEditor_d1fcc0df.o \ $(OBJDIR)/ImageIcon_c89b23a6.o \ $(OBJDIR)/WiFiOutputEditor_1d3ba5bb.o \ @@ -283,6 +284,11 @@ $(OBJDIR)/EventNode_95c842b7.o: ../../Source/Processors/EventNode.cpp @echo "Compiling EventNode.cpp" @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" +$(OBJDIR)/VisualizerEditor_3672b003.o: ../../Source/Processors/Editors/VisualizerEditor.cpp + -@mkdir -p $(OBJDIR) + @echo "Compiling VisualizerEditor.cpp" + @$(CXX) $(CXXFLAGS) -o "$@" -c "$<" + $(OBJDIR)/MergerEditor_d1fcc0df.o: ../../Source/Processors/Editors/MergerEditor.cpp -@mkdir -p $(OBJDIR) @echo "Compiling MergerEditor.cpp" diff --git a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj index cc8e44707063c1fe600def6b1003e6ad1f36c2a1..ee69144acc43aad435966f07e4be818c9e6e6d77 100644 --- a/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj +++ b/Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj @@ -47,6 +47,7 @@ 4BE0DDA01B73223EF0BD934A = { isa = PBXBuildFile; fileRef = 3DD0741FCFBC7563EC722D9B; }; 08B501E0D7764C6B613AF529 = { isa = PBXBuildFile; fileRef = B7750B27E4F3748ECCCCF69D; }; 9CBA3837CC8CAA03A03F2D9C = { isa = PBXBuildFile; fileRef = FA57CE4F63FF1592D6B3F9B5; }; + F4CEF74DDCD7EFA0891249B5 = { isa = PBXBuildFile; fileRef = 9A3976537C96B39716B5312D; }; 93A3E6284F2DAED3F491332B = { isa = PBXBuildFile; fileRef = AD73EA6B24378294003DC2D0; }; CB77C89226102EF30F85E3EC = { isa = PBXBuildFile; fileRef = 544DA1EF90EBBDB6FF2DE0A5; }; A126280FF39A61DEFD3ABFE5 = { isa = PBXBuildFile; fileRef = 2B11714BCE362D4EA7E377F5; }; @@ -187,6 +188,7 @@ 7977CAB4A151C41F4140FE1A = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Merger.h; path = ../../Source/Processors/Utilities/Merger.h; sourceTree = SOURCE_ROOT; }; 9A47B52E5E1CD17DC9C72B53 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Splitter.cpp; path = ../../Source/Processors/Utilities/Splitter.cpp; sourceTree = SOURCE_ROOT; }; B92E8189F69E0B926C73B654 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Splitter.h; path = ../../Source/Processors/Utilities/Splitter.h; sourceTree = SOURCE_ROOT; }; + 9ACFB6A181D09434268CE006 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Visualizer.h; path = ../../Source/Processors/Visualization/Visualizer.h; sourceTree = SOURCE_ROOT; }; ED179D5A10DD051DDB3ECB8B = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = DataWindow.cpp; path = ../../Source/Processors/Visualization/DataWindow.cpp; sourceTree = SOURCE_ROOT; }; 63C18F4066C75D3C312877D8 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataWindow.h; path = ../../Source/Processors/Visualization/DataWindow.h; sourceTree = SOURCE_ROOT; }; 2E96DA81EE37A0ECE471A928 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LfpDisplayCanvas.cpp; path = ../../Source/Processors/Visualization/LfpDisplayCanvas.cpp; sourceTree = SOURCE_ROOT; }; @@ -199,6 +201,8 @@ 12866D44BE115E8837468F48 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = AudioNode.h; path = ../../Source/Processors/AudioNode.h; sourceTree = SOURCE_ROOT; }; FA57CE4F63FF1592D6B3F9B5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = EventNode.cpp; path = ../../Source/Processors/EventNode.cpp; sourceTree = SOURCE_ROOT; }; 32163C956C8A6F5C1DD7FE7F = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = EventNode.h; path = ../../Source/Processors/EventNode.h; sourceTree = SOURCE_ROOT; }; + 9A3976537C96B39716B5312D = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = VisualizerEditor.cpp; path = ../../Source/Processors/Editors/VisualizerEditor.cpp; sourceTree = SOURCE_ROOT; }; + C546D55EDE65ADDD95C6A6F5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VisualizerEditor.h; path = ../../Source/Processors/Editors/VisualizerEditor.h; sourceTree = SOURCE_ROOT; }; AD73EA6B24378294003DC2D0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = MergerEditor.cpp; path = ../../Source/Processors/Editors/MergerEditor.cpp; sourceTree = SOURCE_ROOT; }; B7FD86B9DA02771D3519FAA0 = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = MergerEditor.h; path = ../../Source/Processors/Editors/MergerEditor.h; sourceTree = SOURCE_ROOT; }; 544DA1EF90EBBDB6FF2DE0A5 = { isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = ImageIcon.cpp; path = ../../Source/Processors/Editors/ImageIcon.cpp; sourceTree = SOURCE_ROOT; }; @@ -376,6 +380,7 @@ 9A47B52E5E1CD17DC9C72B53, B92E8189F69E0B926C73B654 ); name = Utilities; sourceTree = "<group>"; }; 15543D7982B26B70879960F4 = { isa = PBXGroup; children = ( + 9ACFB6A181D09434268CE006, ED179D5A10DD051DDB3ECB8B, 63C18F4066C75D3C312877D8, 2E96DA81EE37A0ECE471A928, @@ -383,6 +388,8 @@ 0C5335B0E57C9DC92FC57E5F, 7738F51AE0EC63D76EE0F761 ); name = Visualization; sourceTree = "<group>"; }; 953CC35B9116404D6AA8D1C7 = { isa = PBXGroup; children = ( + 9A3976537C96B39716B5312D, + C546D55EDE65ADDD95C6A6F5, AD73EA6B24378294003DC2D0, B7FD86B9DA02771D3519FAA0, 544DA1EF90EBBDB6FF2DE0A5, @@ -618,6 +625,7 @@ 4BE0DDA01B73223EF0BD934A, 08B501E0D7764C6B613AF529, 9CBA3837CC8CAA03A03F2D9C, + F4CEF74DDCD7EFA0891249B5, 93A3E6284F2DAED3F491332B, CB77C89226102EF30F85E3EC, A126280FF39A61DEFD3ABFE5, diff --git a/Source/Processors/Editors/LfpDisplayEditor.h b/Source/Processors/Editors/LfpDisplayEditor.h index 9afc37c749ca3e7b2f3524bce3dfcb3fbe36a814..934cf40dc9f802ea9999335c620ca83a28501926 100644 --- a/Source/Processors/Editors/LfpDisplayEditor.h +++ b/Source/Processors/Editors/LfpDisplayEditor.h @@ -31,6 +31,7 @@ #include "../Visualization/DataWindow.h" #include "../LfpDisplayNode.h" #include "../Visualization/LfpDisplayCanvas.h" +#include "VisualizerEditor.h" class Visualizer; diff --git a/Source/Processors/Editors/VisualizerEditor.cpp b/Source/Processors/Editors/VisualizerEditor.cpp index 0f2ad79929e19ac1b8faea83b219edd62622c541..5af749cf2888006ac1b31aca9d5c6e6166db2a02 100644 --- a/Source/Processors/Editors/VisualizerEditor.cpp +++ b/Source/Processors/Editors/VisualizerEditor.cpp @@ -52,7 +52,9 @@ void SelectorButton::paintButton(Graphics &g, bool isMouseOver, bool isButtonDow g.fillRect(0,0,getWidth(),3.0); } else { // tab icon - g.drawRect(0,0,10,getHeight()); + g.drawVerticalLine(5,0,getHeight()); + g.fillRoundedRectangle(5,2,4,getHeight()-4,4.0f); + g.fillRect(5,2,4,getHeight()-4); } } @@ -72,14 +74,14 @@ VisualizerEditor::VisualizerEditor (GenericProcessor* parentNode) windowSelector = new SelectorButton("window"); windowSelector->addListener(this); - windowSelector->setBounds(190,5,15,10); + windowSelector->setBounds(190,7,14,10); windowSelector->setToggleState(false,false); addAndMakeVisible(windowSelector); tabSelector = new SelectorButton("tab"); tabSelector->addListener(this); - tabSelector->setBounds(210,5,15,10); + tabSelector->setBounds(210,7,15,10); addAndMakeVisible(tabSelector); tabSelector->setToggleState(false,false); diff --git a/Source/Processors/Editors/VisualizerEditor.h b/Source/Processors/Editors/VisualizerEditor.h index 257f0c81d633a522f5d27184c64626a81fa48dd7..f31a553faf8c98bf391777a3de45e401df764ed3 100644 --- a/Source/Processors/Editors/VisualizerEditor.h +++ b/Source/Processors/Editors/VisualizerEditor.h @@ -62,11 +62,14 @@ public: virtual Visualizer* createNewCanvas() = 0; - void enable(); - void disable(); + virtual void enable(); + virtual void disable(); void updateVisualizer(); + ScopedPointer <DataWindow> dataWindow; + ScopedPointer <Visualizer> canvas; + private: bool isPlaying; @@ -74,9 +77,6 @@ private: SelectorButton* windowSelector; SelectorButton* tabSelector; - ScopedPointer <DataWindow> dataWindow; - ScopedPointer <Visualizer> canvas; - int tabIndex; JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (VisualizerEditor); diff --git a/Source/Processors/LfpDisplayNode.h b/Source/Processors/LfpDisplayNode.h index 898cf978aedbacbcf6caad04ce5463fa999b95be..8fb4439cd9614e7ed5b8998cd00b6c7c3dcee0db 100644 --- a/Source/Processors/LfpDisplayNode.h +++ b/Source/Processors/LfpDisplayNode.h @@ -26,6 +26,7 @@ #include "../../JuceLibraryCode/JuceHeader.h" #include "Editors/LfpDisplayEditor.h" +#include "Editors/VisualizerEditor.h" #include "GenericProcessor.h" /** diff --git a/Source/Processors/Visualization/LfpDisplayCanvas.h b/Source/Processors/Visualization/LfpDisplayCanvas.h index 87a918ab383461e8d6b30e8127ac089cf9247af9..60f6b8075e829a0634941f54b5e4c81c7f2ae1c5 100644 --- a/Source/Processors/Visualization/LfpDisplayCanvas.h +++ b/Source/Processors/Visualization/LfpDisplayCanvas.h @@ -23,15 +23,13 @@ #ifndef __LFPDISPLAYCANVAS_H_B711873A__ #define __LFPDISPLAYCANVAS_H_B711873A__ - #include "../../../JuceLibraryCode/JuceHeader.h" -#include "OpenGLCanvas.h" -#include "../../UI/Configuration.h" #include "../LfpDisplayNode.h" +#include "Visualizer.h" class LfpDisplayNode; -class LfpDisplayCanvas : public OpenGLCanvas +class LfpDisplayCanvas : public Visualizer { public: @@ -56,7 +54,6 @@ private: float sampleRate; float timebase; float displayGain; - //float ratio; LfpDisplayNode* processor; AudioSampleBuffer* displayBuffer; @@ -72,8 +69,6 @@ private: bool checkBounds(int chan); - - void updateScreenBuffer(); int screenBufferIndex; int displayBufferIndex; diff --git a/Source/Processors/Visualization/Visualizer.h b/Source/Processors/Visualization/Visualizer.h index 28ca53b8f357b76a3f797e51716c5d4436c0d029..f037917ceccdbba0bd4b5524a688b54a2d158926 100644 --- a/Source/Processors/Visualization/Visualizer.h +++ b/Source/Processors/Visualization/Visualizer.h @@ -36,6 +36,7 @@ public: virtual void newOpenGLContextCreated() = 0; virtual void renderOpenGL() = 0; + virtual void refreshState() = 0; virtual void update() = 0; @@ -44,11 +45,8 @@ public: virtual void beginAnimation() = 0; virtual void endAnimation() = 0; -private: - + virtual void setParameter(int, float) = 0; - JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Visualizer); - }; diff --git a/open-ephys.jucer b/open-ephys.jucer index 58e9e746e724640d85ae26ac05ad361384237962..78f67747a72f22c8c6a027b0607e293444fc1648 100644 --- a/open-ephys.jucer +++ b/open-ephys.jucer @@ -150,6 +150,7 @@ <FILE id="DXYynnz" name="Splitter.h" compile="0" resource="0" file="Source/Processors/Utilities/Splitter.h"/> </GROUP> <GROUP id="W4eqkOy" name="Visualization"> + <FILE id="yDPZGpt" name="Visualizer.h" compile="0" resource="0" file="Source/Processors/Visualization/Visualizer.h"/> <FILE id="BX1Vj3V" name="DataWindow.cpp" compile="1" resource="0" file="Source/Processors/Visualization/DataWindow.cpp"/> <FILE id="l2VKLuP" name="DataWindow.h" compile="0" resource="0" file="Source/Processors/Visualization/DataWindow.h"/> <FILE id="2rXPco7" name="LfpDisplayCanvas.cpp" compile="1" resource="0" @@ -169,6 +170,10 @@ <FILE id="hGnGAjh" name="EventNode.cpp" compile="1" resource="0" file="Source/Processors/EventNode.cpp"/> <FILE id="dUtRN6" name="EventNode.h" compile="0" resource="0" file="Source/Processors/EventNode.h"/> <GROUP id="AqvwO6w" name="Editors"> + <FILE id="2XqqPOS" name="VisualizerEditor.cpp" compile="1" resource="0" + file="Source/Processors/Editors/VisualizerEditor.cpp"/> + <FILE id="CUHGPJF" name="VisualizerEditor.h" compile="0" resource="0" + file="Source/Processors/Editors/VisualizerEditor.h"/> <FILE id="bsIZbuu" name="MergerEditor.cpp" compile="1" resource="0" file="Source/Processors/Editors/MergerEditor.cpp"/> <FILE id="vfmEY5L" name="MergerEditor.h" compile="0" resource="0" file="Source/Processors/Editors/MergerEditor.h"/>