From 52725a033e13f40b2263471f3a85cc59f0ecde6b Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Thu, 6 Oct 2016 16:45:59 +0200 Subject: [PATCH] Add cloneActivePreset() --- src/Surfaces/SurfaceManager.cpp | 10 ++++++++++ src/Surfaces/SurfaceManager.h | 1 + src/Surfaces/SurfaceStack.cpp | 9 +++++++++ src/Surfaces/SurfaceStack.h | 2 ++ src/ofxPiMapper.cpp | 5 +++++ src/ofxPiMapper.h | 1 + 6 files changed, 28 insertions(+) diff --git a/src/Surfaces/SurfaceManager.cpp b/src/Surfaces/SurfaceManager.cpp index 8822429..1a9aae2 100644 --- a/src/Surfaces/SurfaceManager.cpp +++ b/src/Surfaces/SurfaceManager.cpp @@ -434,5 +434,15 @@ void SurfaceManager::setActivePreset(unsigned int i){ _activePresetIndex = i; } +void SurfaceManager::cloneActivePreset(){ + if(_presets.size() <= 1){ + return; + } + + SurfaceStack * preset = _presets[_activePresetIndex]->clone(); + _presets.push_back(preset); + _activePresetIndex = _presets.size() - 1; +} + } // namespace piMapper } // namespace ofx diff --git a/src/Surfaces/SurfaceManager.h b/src/Surfaces/SurfaceManager.h index 7f52ac4..4c60854 100644 --- a/src/Surfaces/SurfaceManager.h +++ b/src/Surfaces/SurfaceManager.h @@ -72,6 +72,7 @@ class SurfaceManager { void setNextPreset(); void setActivePreset(unsigned int i); + void cloneActivePreset(); private: BaseSurface * selectedSurface; diff --git a/src/Surfaces/SurfaceStack.cpp b/src/Surfaces/SurfaceStack.cpp index ca26b9b..e0e9e30 100644 --- a/src/Surfaces/SurfaceStack.cpp +++ b/src/Surfaces/SurfaceStack.cpp @@ -67,5 +67,14 @@ void SurfaceStack::onVertexChanged(int & i){ ofNotifyEvent(vertexChangedEvent, i, this); } +SurfaceStack * SurfaceStack::clone(){ + SurfaceStack * stack = new SurfaceStack(); + for(unsigned int i = 0; i < _surfaces.size(); ++i){ + BaseSurface * surface = _surfaces[i]->clone(); + stack->push_back(surface); + } + return stack; +} + } // namespace piMapper } // namespace ofx diff --git a/src/Surfaces/SurfaceStack.h b/src/Surfaces/SurfaceStack.h index 702c15f..843dbcc 100644 --- a/src/Surfaces/SurfaceStack.h +++ b/src/Surfaces/SurfaceStack.h @@ -29,6 +29,8 @@ class SurfaceStack { vector & getSurfaces(){ return _surfaces; }; + SurfaceStack * clone(); + private: vector _surfaces; }; diff --git a/src/ofxPiMapper.cpp b/src/ofxPiMapper.cpp index 8d36498..c05331e 100644 --- a/src/ofxPiMapper.cpp +++ b/src/ofxPiMapper.cpp @@ -31,6 +31,11 @@ void ofxPiMapper::setNextPreset(){ _application.getSurfaceManager()->setNextPreset(); } +void ofxPiMapper::cloneActivePreset(){ + _application.getSurfaceManager()->deselectSurface(); + _application.getSurfaceManager()->cloneActivePreset(); +} + bool ofxPiMapper::loadXmlSettings(string fileName){ return _application.loadXmlSettings(fileName); } diff --git a/src/ofxPiMapper.h b/src/ofxPiMapper.h index ab9b0e8..e70108c 100644 --- a/src/ofxPiMapper.h +++ b/src/ofxPiMapper.h @@ -40,6 +40,7 @@ class ofxPiMapper { void registerFboSource(ofx::piMapper::FboSource * fboSource); void setActivePreset(unsigned int i); void setNextPreset(); + void cloneActivePreset(); bool loadXmlSettings(string fileName);