diff --git a/src/Application/SettingsLoader.cpp b/src/Application/SettingsLoader.cpp index aa62f84..af56a7a 100644 --- a/src/Application/SettingsLoader.cpp +++ b/src/Application/SettingsLoader.cpp @@ -69,26 +69,26 @@ bool SettingsLoader::load(SurfaceStack & surfaces, MediaServer & mediaServer, st xmlSettings->popTag(); // source } + int vertexCount = 0; + if(xmlSettings->tagExists("vertices", 0)){ xmlSettings->pushTag("vertices"); - int vertexCount = xmlSettings->getNumTags("vertex"); + vertexCount = xmlSettings->getNumTags("vertex"); + xmlSettings->popTag(); // vertices + } - if(vertexCount == 3){ - BaseSurface * triangleSurface = getTriangleSurface(xmlSettings); - if(sourceName != "none" && source != 0){ - triangleSurface->setSource(source); - } - surfaces.push_back(triangleSurface); - }else if(vertexCount == 4){ - BaseSurface * quadSurface = getQuadSurface(xmlSettings); - if(sourceName != "none" && source != 0){ - quadSurface->setSource(source); - } - surfaces.push_back(quadSurface); + if(vertexCount == 3){ + BaseSurface * triangleSurface = getTriangleSurface(xmlSettings); + if(sourceName != "none" && source != 0){ + triangleSurface->setSource(source); } - - //xmlSettings->popTag(); // vertices - // this is done in getTriangleSurface and getQuadSurface + surfaces.push_back(triangleSurface); + }else if(vertexCount == 4){ + BaseSurface * quadSurface = getQuadSurface(xmlSettings); + if(sourceName != "none" && source != 0){ + quadSurface->setSource(source); + } + surfaces.push_back(quadSurface); } xmlSettings->popTag(); // surface @@ -171,28 +171,32 @@ bool SettingsLoader::save(SurfaceStack & surfaces, string fileName){ BaseSurface * SettingsLoader::getTriangleSurface(ofxXmlSettings * xmlSettings){ vector vertices; - if(xmlSettings->tagExists("vertex", 0)){ - xmlSettings->pushTag("vertex", 0); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), - xmlSettings->getValue("y", 0.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertices")){ + xmlSettings->pushTag("vertices"); - if(xmlSettings->tagExists("vertex", 1)){ - xmlSettings->pushTag("vertex", 1); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), - xmlSettings->getValue("y", 0.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertex", 0)){ + xmlSettings->pushTag("vertex", 0); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), + xmlSettings->getValue("y", 0.0f))); + xmlSettings->popTag(); + } + + if(xmlSettings->tagExists("vertex", 1)){ + xmlSettings->pushTag("vertex", 1); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), + xmlSettings->getValue("y", 0.0f))); + xmlSettings->popTag(); + } - if(xmlSettings->tagExists("vertex", 2)){ - xmlSettings->pushTag("vertex", 2); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), - xmlSettings->getValue("y", 100.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertex", 2)){ + xmlSettings->pushTag("vertex", 2); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), + xmlSettings->getValue("y", 100.0f))); + xmlSettings->popTag(); + } - xmlSettings->popTag(); // vertices + xmlSettings->popTag(); // vertices + } vector texCoords; @@ -236,35 +240,39 @@ BaseSurface * SettingsLoader::getTriangleSurface(ofxXmlSettings * xmlSettings){ BaseSurface * SettingsLoader::getQuadSurface(ofxXmlSettings * xmlSettings){ vector vertices; - if(xmlSettings->tagExists("vertex", 0)){ - xmlSettings->pushTag("vertex", 0); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), - xmlSettings->getValue("y", 0.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertices")){ + xmlSettings->pushTag("vertices"); + + if(xmlSettings->tagExists("vertex", 0)){ + xmlSettings->pushTag("vertex", 0); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), + xmlSettings->getValue("y", 0.0f))); + xmlSettings->popTag(); + } - if(xmlSettings->tagExists("vertex", 1)){ - xmlSettings->pushTag("vertex", 1); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), - xmlSettings->getValue("y", 0.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertex", 1)){ + xmlSettings->pushTag("vertex", 1); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), + xmlSettings->getValue("y", 0.0f))); + xmlSettings->popTag(); + } - if(xmlSettings->tagExists("vertex", 2)){ - xmlSettings->pushTag("vertex", 2); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), - xmlSettings->getValue("y", 100.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertex", 2)){ + xmlSettings->pushTag("vertex", 2); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 100.0f), + xmlSettings->getValue("y", 100.0f))); + xmlSettings->popTag(); + } - if(xmlSettings->tagExists("vertex", 3)){ - xmlSettings->pushTag("vertex", 3); - vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), - xmlSettings->getValue("y", 100.0f))); - xmlSettings->popTag(); - } + if(xmlSettings->tagExists("vertex", 3)){ + xmlSettings->pushTag("vertex", 3); + vertices.push_back(ofVec2f(xmlSettings->getValue("x", 0.0f), + xmlSettings->getValue("y", 100.0f))); + xmlSettings->popTag(); + } - xmlSettings->popTag(); // vertices + xmlSettings->popTag(); // vertices + } vector texCoords;