src/lib/VSDContentCollector.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-)
New commits: commit 5a38774b5f9bfc2d58e8a7a06effb0bbe7d0debd Author: Fridrich Å trba <[email protected]> Date: Wed Jul 10 10:43:03 2013 +0200 Try not to go out of bonds diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index 5057370..09fc553 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -1392,24 +1392,23 @@ void libvisio::VSDContentCollector::_generateBezierSegmentsFromNURBS(unsigned de * The NURBS Book, 2nd Edition, 1997 */ - unsigned m = controlPoints.size() + degree + 1; unsigned a = degree; unsigned b = degree + 1; std::vector< std::pair<double, double> > points(degree + 1), nextPoints(degree + 1); unsigned i = 0; for (; i <= degree; i++) points[i] = controlPoints[i]; - while (b < m) + while (b < knotVector.size() - 1) { i = b; - while (b < m && knotVector[b+1] == knotVector[b]) + while (b < knotVector.size() - 1 && knotVector[b+1] == knotVector[b]) b++; unsigned mult = b - i + 1; if (mult < degree) { double numer = (double)(knotVector[b] - knotVector[a]); unsigned j = degree; - std::map<unsigned, double> alphas; + std::vector<double> alphas(degree - 1, 0.0); for (; j >mult; j--) alphas[j-mult-1] = numer/double(knotVector[a+j]-knotVector[a]); unsigned r = degree - mult; @@ -1423,7 +1422,7 @@ void libvisio::VSDContentCollector::_generateBezierSegmentsFromNURBS(unsigned de points[k].first = alpha*points[k].first + (1.0-alpha)*points[k-1].first; points[k].second = alpha*points[k].second + (1.0-alpha)*points[k-1].second; } - if (b < m) + if (b < knotVector.size() - 1) { nextPoints[save].first = points[degree].first; nextPoints[save].second = points[degree].second; @@ -1449,7 +1448,7 @@ void libvisio::VSDContentCollector::_generateBezierSegmentsFromNURBS(unsigned de std::swap(points, nextPoints); - if (b < m) + if (b < knotVector.size() - 1) { for (i=degree-mult; i <= degree; i++) { commit e7974026dd728d2882962de803c0cfbc29057283 Author: Fridrich Å trba <[email protected]> Date: Wed Jul 10 10:09:50 2013 +0200 Fixing back some mistakes paid cash to valgrind diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index b5bb7d4..5057370 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -989,7 +989,6 @@ void libvisio::VSDContentCollector::collectRelCubBezTo(unsigned /* id */, unsign transformPoint(x, y); m_x = x; m_y = y; - WPXPropertyList node; node.insert("libwpg:path-action", "C"); node.insert("svg:x",m_scale*x); @@ -1272,11 +1271,11 @@ void libvisio::VSDContentCollector::collectArcTo(unsigned /* id */, unsigned lev transformPoint(x2, y2); double angle = 0.0; transformAngle(angle); - m_x = x2; - m_y = y2; if (bow == 0) { + m_x = x2; + m_y = y2; WPXPropertyList end; end.insert("svg:x", m_scale*m_x); end.insert("svg:y", m_scale*m_y); @@ -1295,6 +1294,8 @@ void libvisio::VSDContentCollector::collectArcTo(unsigned /* id */, unsigned lev bool sweep = (bow < 0); transformFlips(sweep, sweep); + m_x = x2; + m_y = y2; arc.insert("svg:rx", m_scale*radius); arc.insert("svg:ry", m_scale*radius); arc.insert("libwpg:rotate", angle*180/M_PI, WPX_GENERIC); @@ -2083,9 +2084,9 @@ void libvisio::VSDContentCollector::collectSplineEnd() return; } m_splineKnotVector.push_back(m_splineLastKnot); - std::vector<double> weights; + std::vector<double> weights(m_splineControlPoints.size()+2); for (unsigned i=0; i < m_splineControlPoints.size()+2; i++) - weights.push_back(1.0); + weights[i] = 1.0; collectNURBSTo(0, m_splineLevel, m_splineX, m_splineY, 1, 1, m_splineDegree, m_splineControlPoints, m_splineKnotVector, weights); m_splineKnotVector.clear(); m_splineControlPoints.clear();
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
