static nserror svg_create_svg_data(svg_content *c) { union content_msg_data msg_data; c->diagram = svgtiny_create(); if (c->diagram == NULL) goto no_memory; c->current_width = INT_MAX; c->current_height = INT_MAX; return NSERROR_OK; no_memory: msg_data.error = messages_get("NoMemory"); content_broadcast(&c->base, CONTENT_MSG_ERROR, msg_data); return NSERROR_NOMEM; }
void ofxSVG::load(string path){ path = ofToDataPath(path); if(path.compare("") == 0){ ofLogError("ofxSVG") << "load(): path does not exist: \"" << path << "\""; return; } ofBuffer buffer = ofBufferFromFile(path); size_t size = buffer.size(); struct svgtiny_diagram * diagram = svgtiny_create(); svgtiny_code code = svgtiny_parse(diagram, buffer.getText().c_str(), size, path.c_str(), 0, 0); if(code != svgtiny_OK){ string msg; switch(code){ case svgtiny_OUT_OF_MEMORY: msg = "svgtiny_OUT_OF_MEMORY"; break; case svgtiny_LIBXML_ERROR: msg = "svgtiny_LIBXML_ERROR"; break; case svgtiny_NOT_SVG: msg = "svgtiny_NOT_SVG"; break; case svgtiny_SVG_ERROR: msg = "svgtiny_SVG_ERROR: line " + ofToString(diagram->error_line) + ": " + diagram->error_message; break; default: msg = "unknown svgtiny_code " + ofToString(code); break; } ofLogError("ofxSVG") << "load(): couldn't parse \"" << path << "\": " << msg; } setupDiagram(diagram); svgtiny_free(diagram); }
//-------------------------------------------------------------- void Svg::loadData(string aFormat, string aData){ string dummy = "smth"; // string xml = "<svg><path fill=\"#FF00FF\" stroke=\"#00FF00\" stroke-width=\"0.172\" d=\"" + aData + "\"/></svg>"; string xml = "<svg><path " + aFormat + " d=\"" + aData + "\"/></svg>"; // string xml = "<svg><path " + aFormat + " stroke-width=\"1\" d=\"" + aData + "\"/></svg>"; // struct svgtiny_diagram * diagram = svgtiny_create(); auto diagram = svgtiny_create(); auto code = svgtiny_parse(diagram, xml.c_str(), xml.size(), dummy.c_str(), 0, 0); if (code == svgtiny_OK){ setupDiagram(diagram); svgtiny_free(diagram); // ofLogVerbose() << "loaded"; } }