diff --git a/src/Surfaces/SurfaceManager.cpp b/src/Surfaces/SurfaceManager.cpp index 5b9c38b..0c6ab47 100644 --- a/src/Surfaces/SurfaceManager.cpp +++ b/src/Surfaces/SurfaceManager.cpp @@ -42,6 +42,15 @@ void SurfaceManager::removeSurface(){ _surfaces.pop_back(); } +void SurfaceManager::deleteSurface(ofx::piMapper::BaseSurface * surface){ + for(int i = 0; i < _surfaces.size(); ++i){ + if(_surfaces[i] == surface){ + _surfaces.erase(i); + break; + } + } +} + void SurfaceManager::clear(){ while(_surfaces.size()){ delete _surfaces.back(); @@ -157,6 +166,12 @@ BaseSurface * SurfaceManager::getSelectedSurface(){ return selectedSurface; } +BaseSurface * SurfaceManager::duplicateSurface(BaseSurface * surface){ + BaseSurface * duplicate = surface->clone(); + addSurface(duplicate); + return duplicate; +} + // TODO: select vertex should be implemented ad BaseSurface level void SurfaceManager::selectNextVertex(){ if(selectedSurface == 0){ diff --git a/src/Surfaces/SurfaceManager.h b/src/Surfaces/SurfaceManager.h index b452e91..82068ea 100644 --- a/src/Surfaces/SurfaceManager.h +++ b/src/Surfaces/SurfaceManager.h @@ -29,6 +29,7 @@ class SurfaceManager { void addSurface(BaseSurface * surface); void removeSelectedSurface(); void removeSurface(); + void deleteSurface(BaseSurface * surface); void deselectSurface(); void saveXmlSettings(string fileName); void setMediaServer(MediaServer * newMediaServer); @@ -42,6 +43,7 @@ class SurfaceManager { BaseSurface * selectNextSurface(); BaseSurface * selectPrevSurface(); BaseSurface * getSelectedSurface(); + BaseSurface * duplicateSurface(BaseSurface * surface); // These should trigger an event for the GUI layer to catch void selectNextVertex();