From b5d0fbfc03f51829bb73bf70fb3c09d7652a3812 Mon Sep 17 00:00:00 2001 From: Krisjanis Rijnieks Date: Fri, 4 Mar 2016 21:21:08 +0100 Subject: [PATCH] Add `duplicateSurface()` method to `SurfaceManager` --- src/Surfaces/SurfaceManager.cpp | 15 +++++++++++++++ src/Surfaces/SurfaceManager.h | 2 ++ 2 files changed, 17 insertions(+) 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();