From f3e293c238d8903cad9abe84028595b7d2806f44 Mon Sep 17 00:00:00 2001 From: jsiegle <jsiegle@mit.edu> Date: Sun, 11 Mar 2012 17:48:13 -0400 Subject: [PATCH] VisualizerEditor is now the base class for all editors involving visualization --- Builds/Linux/Makefile | 6 ++++++ Builds/MacOSX/open-ephys.xcodeproj/project.pbxproj | 8 ++++++++ Source/Processors/Editors/LfpDisplayEditor.h | 1 + Source/Processors/Editors/VisualizerEditor.cpp | 8 +++++--- Source/Processors/Editors/VisualizerEditor.h | 10 +++++----- Source/Processors/LfpDisplayNode.h | 1 + Source/Processors/Visualization/LfpDisplayCanvas.h | 9 ++------- Source/Processors/Visualization/Visualizer.h | 6 ++---- open-ephys.jucer | 5 +++++ 9 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Builds/Linux/Makefile b/Builds/Linux/Makefile index ade31750e..fed02a124 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 cc8e44707..ee69144ac 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 9afc37c74..934cf40dc 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 0f2ad7992..5af749cf2 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 257f0c81d..f31a553fa 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 898cf978a..8fb4439cd 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 87a918ab3..60f6b8075 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 28ca53b8f..f037917ce 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 58e9e746e..78f67747a 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"/> -- GitLab