Browse Source

Saving and loading presets properly

master
Krisjanis Rijnieks 9 years ago
parent
commit
a96d7c8f7a
  1. 62
      example/bin/data/defaultSurfaces.xml
  2. 17
      src/Application/SettingsLoader.cpp
  3. 2
      src/Application/SettingsLoader.h
  4. 15
      src/Surfaces/SurfaceManager.cpp
  5. 2
      src/Surfaces/SurfaceManager.h

62
example/bin/data/defaultSurfaces.xml

@ -2,15 +2,15 @@
<surface type="0"> <surface type="0">
<vertices> <vertices>
<vertex> <vertex>
<x>144.596435547</x> <x>155.596435547</x>
<y>350.618133545</y> <y>350.618133545</y>
</vertex> </vertex>
<vertex> <vertex>
<x>334.612976074</x> <x>345.612976074</x>
<y>138.055999756</y> <y>138.055999756</y>
</vertex> </vertex>
<vertex> <vertex>
<x>93.018066406</x> <x>104.018066406</x>
<y>109.018371582</y> <y>109.018371582</y>
</vertex> </vertex>
</vertices> </vertices>
@ -33,25 +33,23 @@
<source-name>Custom FBO Source</source-name> <source-name>Custom FBO Source</source-name>
</source> </source>
</surface> </surface>
</surfaces>
<surfaces>
<surface type="1"> <surface type="1">
<vertices> <vertices>
<vertex> <vertex>
<x>370.015960693</x> <x>393.015960693</x>
<y>71.820503235</y> <y>110.820503235</y>
</vertex> </vertex>
<vertex> <vertex>
<x>426.714202881</x> <x>449.714202881</x>
<y>137.484405518</y> <y>176.484405518</y>
</vertex> </vertex>
<vertex> <vertex>
<x>404.540893555</x> <x>425.000000000</x>
<y>250.199127197</y> <y>292.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>176.995574951</x> <x>199.995574951</x>
<y>287.742950439</y> <y>326.742950439</y>
</vertex> </vertex>
</vertices> </vertices>
<texCoords> <texCoords>
@ -80,45 +78,43 @@
<perspectiveWarping>1</perspectiveWarping> <perspectiveWarping>1</perspectiveWarping>
</properties> </properties>
</surface> </surface>
</surfaces>
<surfaces>
<surface type="2"> <surface type="2">
<vertices> <vertices>
<vertex> <vertex>
<x>429.168884277</x> <x>448.000000000</x>
<y>232.234344482</y> <y>201.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>493.644958496</x> <x>536.000000000</x>
<y>218.507308960</y> <y>149.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>573.095703125</x> <x>623.000000000</x>
<y>218.091369629</y> <y>166.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>419.185028076</x> <x>449.000000000</x>
<y>282.983367920</y> <y>263.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>485.740966797</x> <x>534.000000000</x>
<y>285.063232422</y> <y>226.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>576.008056641</x> <x>662.000000000</x>
<y>274.663574219</y> <y>240.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>431.248046875</x> <x>477.000000000</x>
<y>324.164886475</y> <y>322.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>504.876403809</x> <x>554.000000000</x>
<y>327.908752441</y> <y>337.000000000</y>
</vertex> </vertex>
<vertex> <vertex>
<x>591.815185547</x> <x>648.000000000</x>
<y>310.437927246</y> <y>306.000000000</y>
</vertex> </vertex>
</vertices> </vertices>
<texCoords> <texCoords>

17
src/Application/SettingsLoader.cpp

@ -144,15 +144,21 @@ bool SettingsLoader::load(
} }
// TODO: Save all presets, not just the active one. // TODO: Save all presets, not just the active one.
bool SettingsLoader::save(SurfaceStack & surfaces, string fileName){ bool SettingsLoader::save(SurfaceManager & surfaceManager, string fileName){
ofxXmlSettings * xmlSettings = new ofxXmlSettings(); ofxXmlSettings * xmlSettings = new ofxXmlSettings();
unsigned int numPresets = surfaceManager.getNumPresets();
for(unsigned int i = 0; i < numPresets; ++i){
SurfaceStack * surfaces = surfaceManager.getPresetAt(i);
// Save surfaces // Save surfaces
xmlSettings->addTag("surfaces"); xmlSettings->addTag("surfaces");
xmlSettings->pushTag("surfaces"); xmlSettings->pushTag("surfaces", i);
for(int i = 0; i < surfaces.size(); i++){ for(int i = 0; i < surfaces->size(); i++){
BaseSurface * surface = surfaces[i]; BaseSurface * surface = surfaces->at(i);
xmlSettings->addTag("surface"); xmlSettings->addTag("surface");
xmlSettings->addAttribute("surface", "type", surface->getType(), i); xmlSettings->addAttribute("surface", "type", surface->getType(), i);
@ -219,6 +225,9 @@ bool SettingsLoader::save(SurfaceStack & surfaces, string fileName){
xmlSettings->popTag(); // surface xmlSettings->popTag(); // surface
} }
xmlSettings->popTag(); // surfaces xmlSettings->popTag(); // surfaces
} // for
xmlSettings->save(fileName); xmlSettings->save(fileName);
} }

2
src/Application/SettingsLoader.h

@ -18,7 +18,7 @@ class SettingsLoader {
static SettingsLoader * instance(); static SettingsLoader * instance();
bool load(SurfaceManager & surfaceManager, MediaServer & mediaServer, string fileName); bool load(SurfaceManager & surfaceManager, MediaServer & mediaServer, string fileName);
bool save(SurfaceStack & surfaces, string fileName); bool save(SurfaceManager & surfaceManager, string fileName);
string getLastLoadedFilename(){ return _lastLoadedFilename; }; string getLastLoadedFilename(){ return _lastLoadedFilename; };

15
src/Surfaces/SurfaceManager.cpp

@ -107,7 +107,7 @@ void SurfaceManager::saveXmlSettings(string fileName){
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
SettingsLoader::instance()->save(*_presets[_activePresetIndex], fileName); SettingsLoader::instance()->save(*this, fileName);
} }
// TODO: We need to load all presets. Not just the active one. // TODO: We need to load all presets. Not just the active one.
@ -358,7 +358,11 @@ int SurfaceManager::getSelectedVertexIndex(){
} }
int SurfaceManager::getActivePresetIndex(){ int SurfaceManager::getActivePresetIndex(){
return 0; return _activePresetIndex;
}
unsigned int SurfaceManager::getNumPresets(){
return _presets.size();
} }
void SurfaceManager::onVertexChanged(int & i){ void SurfaceManager::onVertexChanged(int & i){
@ -402,6 +406,13 @@ SurfaceStack * SurfaceManager::createPreset(){
// TODO: Create command for this. And what not. // TODO: Create command for this. And what not.
} }
SurfaceStack * SurfaceManager::getPresetAt(unsigned int i){
if(i >= _presets.size()){
throw runtime_error("SurfaceManager::getPresetAt index out of bounds.");
}
return _presets[i];
}
void SurfaceManager::setNextPreset(){ void SurfaceManager::setNextPreset(){
if(_presets.size() <= 1){ if(_presets.size() <= 1){
return; return;

2
src/Surfaces/SurfaceManager.h

@ -61,6 +61,7 @@ class SurfaceManager {
int size(); int size();
int getSelectedVertexIndex(); int getSelectedVertexIndex();
int getActivePresetIndex(); int getActivePresetIndex();
unsigned int getNumPresets();
ofEvent <int> vertexChangedEvent; ofEvent <int> vertexChangedEvent;
ofEvent <vector<ofVec3f>> verticesChangedEvent; ofEvent <vector<ofVec3f>> verticesChangedEvent;
@ -73,6 +74,7 @@ class SurfaceManager {
SurfaceStack * getActivePreset(); SurfaceStack * getActivePreset();
SurfaceStack * createPreset(); SurfaceStack * createPreset();
SurfaceStack * getPresetAt(unsigned int i);
void setNextPreset(); void setNextPreset();

Loading…
Cancel
Save