#pragma once #include "BaseSurface.h" #include "TriangleSurface.h" #include "QuadSurface.h" #include "SurfaceType.h" #include "MediaServer.h" #include "BaseSource.h" #include "SourceType.h" #include "SurfaceStack.h" #include "SurfaceFactory.h" #include "ofEvents.h" #include "ofxXmlSettings.h" #include "SettingsLoader.h" using namespace std; namespace ofx { namespace piMapper { class SurfaceManager { public: SurfaceManager(); void draw(); void addSurface(BaseSurface * surface); void removeSelectedSurface(); void removeSurface(); void deleteSurface(BaseSurface * surface); void deselectSurface(); void saveXmlSettings(string fileName); void setMediaServer(MediaServer * newMediaServer); void clearPresets(); bool loadXmlSettings(string fileName); BaseSurface * getSurface(int index); BaseSurface * selectSurface(int index); BaseSurface * selectSurface(BaseSurface * surface); BaseSurface * selectNextSurface(); BaseSurface * selectPrevSurface(); BaseSurface * getSelectedSurface(); // These should trigger an event for the GUI layer to catch void selectNextVertex(); void selectPrevVertex(); void selectVertex(int i); void moveSelectionBy(ofVec2f v); void moveAllSurfacesBy(ofVec2f v); int size(); int getSelectedVertexIndex(); int getActivePresetIndex(); int getSelectedSurfaceIndex(); unsigned int getNumPresets(); ofEvent <int> vertexChangedEvent; ofEvent <vector<ofVec3f>> verticesChangedEvent; ofEvent <int> surfaceSelectedEvent; ofEvent <int> vertexSelectedEvent; ofEvent <int> vertexUnselectedEvent; void onVertexChanged(int & i); void onVerticesChanged(vector<ofVec3f> & vertices); SurfaceStack * getActivePreset(); SurfaceStack * createPreset(); SurfaceStack * getPresetAt(unsigned int i); void setNextPreset(); void setActivePreset(unsigned int i); void cloneActivePreset(); void eraseActivePreset(); private: BaseSurface * selectedSurface; ofxXmlSettings xmlSettings; MediaServer * mediaServer; int _selectedVertexIndex; int _activePresetIndex; vector <SurfaceStack *> _presets; }; } // namespace piMapper } // namespace ofx