src/lib/VSDContentCollector.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-)
New commits: commit 20e3d231bed64917a9f683541100cf53e98c26c5 Author: David Tardon <[email protected]> Date: Tue Oct 17 10:36:06 2017 +0200 drop always-true tests Change-Id: I1788036303edb2837bbb1d77dbbc5a431f3293c3 diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index f6a7e73..4d0bde7 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -2085,9 +2085,9 @@ void libvisio::VSDContentCollector::_generatePolylineFromNURBS(unsigned degree, node.insert("svg:x", m_scale*x); node.insert("svg:y", m_scale*y); - if (!m_noFill && !m_noShow) + if (!m_noFill) m_currentFillGeometry.push_back(node); - if (!m_noLine && !m_noShow) + if (!m_noLine) m_currentLineGeometry.push_back(node); } } commit 329afd8d1461b28a0ef5fcf9da21bec960eb7257 Author: David Tardon <[email protected]> Date: Tue Oct 17 10:26:23 2017 +0200 avoid needless reallocations Change-Id: Id6af494bb71734f52a4d8c3ac094f917ff448538 diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index da19cf5..f6a7e73 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -2139,11 +2139,9 @@ void libvisio::VSDContentCollector::collectNURBSTo(unsigned /* id */, unsigned l std::vector<double> knotVector(kntVec); // Fill in end knots + knotVector.reserve(controlPoints.size() + degree + 1); while (knotVector.size() < (controlPoints.size() + degree + 1)) - { - double tmpBack = knotVector.back(); - knotVector.push_back(tmpBack); - } + knotVector.push_back(knotVector.back()); // Let knotVector run from 0 to 1 double firstKnot = knotVector[0]; commit 879c3044e33c1b971cf9146a3ea4571a9ae60b4d Author: David Tardon <[email protected]> Date: Tue Oct 17 10:23:35 2017 +0200 this cannot happen here Change-Id: Ibecaa5e63fee6ee23657ef395b6fe5aa920a7da1 diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index e5ef1f6..da19cf5 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -1953,7 +1953,7 @@ void libvisio::VSDContentCollector::_outputLinearBezierSegment(const std::vector void libvisio::VSDContentCollector::_generateBezierSegmentsFromNURBS(unsigned degree, const std::vector<std::pair<double, double> > &controlPoints, const std::vector<double> &knotVector) { - if (controlPoints.size() <= degree || knotVector.empty() || degree == 0 || degree > 3) + if (controlPoints.size() <= degree || knotVector.empty() || degree == 0) return; /* Decomposition of a uniform spline of a given degree into Bezier segments commit dc367e0d199940c55469dcb73649f326872375f3 Author: David Tardon <[email protected]> Date: Tue Oct 17 10:09:40 2017 +0200 ofz#3520 limit the possible NURBS degree Change-Id: If64244416d30e6356828c68e95cb22f318afeea9 diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index 6f4e85d..e5ef1f6 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -2107,6 +2107,8 @@ bool libvisio::VSDContentCollector::_isUniform(const std::vector<double> &weight return true; } +#define MAX_ALLOWED_NURBS_DEGREE 16 + void libvisio::VSDContentCollector::collectNURBSTo(unsigned /* id */, unsigned level, double x2, double y2, unsigned char xType, unsigned char yType, unsigned degree, const std::vector<std::pair<double, double> > &ctrlPnts, const std::vector<double> &kntVec, const std::vector<double> &weights) @@ -2117,6 +2119,9 @@ void libvisio::VSDContentCollector::collectNURBSTo(unsigned /* id */, unsigned l // Here, maybe we should just draw line to (x2,y2) return; + if (degree > MAX_ALLOWED_NURBS_DEGREE) + degree = MAX_ALLOWED_NURBS_DEGREE; + std::vector<std::pair<double, double> > controlPoints(ctrlPnts); // Convert control points to static co-ordinates _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
