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

17
src/Application/SettingsLoader.cpp

@ -144,15 +144,21 @@ bool SettingsLoader::load(
}
// 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();
unsigned int numPresets = surfaceManager.getNumPresets();
for(unsigned int i = 0; i < numPresets; ++i){
SurfaceStack * surfaces = surfaceManager.getPresetAt(i);
// Save surfaces
xmlSettings->addTag("surfaces");
xmlSettings->pushTag("surfaces");
for(int i = 0; i < surfaces.size(); i++){
BaseSurface * surface = surfaces[i];
xmlSettings->pushTag("surfaces", i);
for(int i = 0; i < surfaces->size(); i++){
BaseSurface * surface = surfaces->at(i);
xmlSettings->addTag("surface");
xmlSettings->addAttribute("surface", "type", surface->getType(), i);
@ -219,6 +225,9 @@ bool SettingsLoader::save(SurfaceStack & surfaces, string fileName){
xmlSettings->popTag(); // surface
}
xmlSettings->popTag(); // surfaces
} // for
xmlSettings->save(fileName);
}

2
src/Application/SettingsLoader.h

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

15
src/Surfaces/SurfaceManager.cpp

@ -107,7 +107,7 @@ void SurfaceManager::saveXmlSettings(string fileName){
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.
@ -358,7 +358,11 @@ int SurfaceManager::getSelectedVertexIndex(){
}
int SurfaceManager::getActivePresetIndex(){
return 0;
return _activePresetIndex;
}
unsigned int SurfaceManager::getNumPresets(){
return _presets.size();
}
void SurfaceManager::onVertexChanged(int & i){
@ -402,6 +406,13 @@ SurfaceStack * SurfaceManager::createPreset(){
// 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(){
if(_presets.size() <= 1){
return;

2
src/Surfaces/SurfaceManager.h

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

Loading…
Cancel
Save