From: Fridrich S. <str...@us...> - 2008-12-03 11:04:15
|
Update of /cvsroot/libwpg/libwpg/src/lib In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv23810/src/lib Modified Files: WPGSVGGenerator.cpp Log Message: small changes that prevent some crashes and produce a more efficient svg Index: WPGSVGGenerator.cpp =================================================================== RCS file: /cvsroot/libwpg/libwpg/src/lib/WPGSVGGenerator.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -u -d -r1.23 -r1.24 --- WPGSVGGenerator.cpp 28 Nov 2008 12:25:45 -0000 1.23 +++ WPGSVGGenerator.cpp 3 Dec 2008 11:04:09 -0000 1.24 @@ -145,8 +145,8 @@ { m_outputSink << "<rect "; m_outputSink << "x=\"" << doubleToString(72*propList["svg:x"]->getFloat()) << "\" y=\"" << doubleToString(72*propList["svg:y"]->getFloat()) << "\" "; - m_outputSink << "width=\"" << doubleToString(72*propList["svg:width"]->getFloat()) << "\" height=\"" << doubleToString(72*propList["svg:width"]->getFloat()) << "\" "; - if((propList["svg:rx"] && propList["svg:rx"]->getInt() !=0) || (propList["svg:ry"]->getInt() !=0)) + m_outputSink << "width=\"" << doubleToString(72*propList["svg:width"]->getFloat()) << "\" height=\"" << doubleToString(72*propList["svg:height"]->getFloat()) << "\" "; + if((propList["svg:rx"] && propList["svg:rx"]->getInt() !=0) || (propList["svg:ry"] && propList["svg:ry"]->getInt() !=0)) m_outputSink << "rx=\"" << doubleToString(72*propList["svg:rx"]->getFloat()) << "\" ry=\"" << doubleToString(72*propList["svg:ry"]->getFloat()) << "\" "; writeStyle(); m_outputSink << "/>\n"; @@ -199,10 +199,11 @@ m_outputSink << "points=\""; WPXPropertyListVector::Iter i(vertices); - for(i.rewind(); i.next();) + for(unsigned i = 0; i < vertices.count(); i++) { - m_outputSink << doubleToString(72*(i()["svg:x"]->getFloat())) << " " << doubleToString(72*(i()["svg:y"]->getFloat())); - if(!i.last()) m_outputSink << ", "; + m_outputSink << doubleToString(72*(vertices[i]["svg:x"]->getFloat())) << " " << doubleToString(72*(vertices[i]["svg:y"]->getFloat())); + if (i < vertices.count()-1) + m_outputSink << ", "; } m_outputSink << "\"\n"; writeStyle(); @@ -212,30 +213,30 @@ void libwpg::WPGSVGGenerator::drawPath(const ::WPXPropertyListVector& path) { - m_outputSink << "<path d=\""; + m_outputSink << "<path d=\" "; WPXPropertyListVector::Iter i(path); - for(i.rewind(); i.next();) + for(unsigned i=0; i < path.count(); i++) { - WPXPropertyList propList = i(); + WPXPropertyList propList = path[i]; if (propList["libwpg:path-action"] && propList["libwpg:path-action"]->getStr() == "M") { - m_outputSink << "\n M"; - m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())) << " "; + m_outputSink << "\nM"; + m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())); } else if (propList["libwpg:path-action"] && propList["libwpg:path-action"]->getStr() == "L") { - m_outputSink << "\n L"; - m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())) << " "; + m_outputSink << "\nL"; + m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())); } else if (propList["libwpg:path-action"] && propList["libwpg:path-action"]->getStr() == "C") { - m_outputSink << "C"; + m_outputSink << "\nC"; m_outputSink << doubleToString(72*(propList["svg:x1"]->getFloat())) << "," << doubleToString(72*(propList["svg:y1"]->getFloat())) << " "; m_outputSink << doubleToString(72*(propList["svg:x2"]->getFloat())) << "," << doubleToString(72*(propList["svg:y2"]->getFloat())) << " "; - m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())) << " "; + m_outputSink << doubleToString(72*(propList["svg:x"]->getFloat())) << "," << doubleToString(72*(propList["svg:y"]->getFloat())); } - else if (propList["libwpg:path-action"] && propList["libwpg:path-action"]->getStr() == "Z") - m_outputSink << "Z"; + else if ((i >= path.count()-1) && propList["libwpg:path-action"] && propList["libwpg:path-action"]->getStr() == "Z" ) + m_outputSink << "\nZ"; } m_outputSink << "\" \n"; |