src/lib/VSDContentCollector.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-)
New commits: commit c3cd48cd4c896a77a07dcca0d0b01c067013e47f Author: Fridrich Å trba <fridrich.st...@bluewin.ch> Date: Sat Jan 2 15:58:58 2016 +0100 Try to look a bit more like visio rounding Change-Id: I3ab893ec2e8851c93dc2882c73535e7a3955f9bb diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index 9560500..583ab9a 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -38,17 +38,22 @@ void computeRounding(double &prevX, double &prevY, double x0, double y0, double double &newX0, double &newY0, double &newX, double &newY, double &maxRounding) { double prevHalfLength = sqrt((y0-prevY)*(y0-prevY)+(x0-prevX)*(x0-prevX)) / 2.0; - if (maxRounding > prevHalfLength) - maxRounding = prevHalfLength; double halfLength = sqrt((y-y0)*(y-y0)+(x-x0)*(x-x0)) / 2.0; + maxRounding = prevHalfLength; if (maxRounding > halfLength) maxRounding = halfLength; - if (maxRounding > rounding) - maxRounding = rounding; double lambda1 = atan2(y0-prevY, x0-prevX); + double lambda2 = atan2(y-y0, x-x0); + double angle = M_PI - lambda2 + lambda1; + if (angle < 0.0) + angle += 2.0*M_PI; + if (angle > M_PI) + angle -= M_PI; + double q = fabs(rounding / tan(angle / 2.0)); + if (maxRounding > q) + maxRounding = q; newX0 = x0-maxRounding*cos(lambda1); newY0 = y0-maxRounding*sin(lambda1); - double lambda2 = atan2(y-y0, x-x0); newX = x0+maxRounding*cos(lambda2); newY = y0+maxRounding*sin(lambda2); prevX = x0; commit 70f19aebaa21586aa2833b2685dc12fbfaea1923 Author: Fridrich Å trba <fridrich.st...@bluewin.ch> Date: Sat Jan 2 15:02:54 2016 +0100 Small improvement Change-Id: Id5832d351fb39c2d0889dbcecd12b1228e1a3e9b diff --git a/src/lib/VSDContentCollector.cpp b/src/lib/VSDContentCollector.cpp index 8ded8c8..9560500 100644 --- a/src/lib/VSDContentCollector.cpp +++ b/src/lib/VSDContentCollector.cpp @@ -37,6 +37,9 @@ namespace void computeRounding(double &prevX, double &prevY, double x0, double y0, double x, double y, double rounding, double &newX0, double &newY0, double &newX, double &newY, double &maxRounding) { + double prevHalfLength = sqrt((y0-prevY)*(y0-prevY)+(x0-prevX)*(x0-prevX)) / 2.0; + if (maxRounding > prevHalfLength) + maxRounding = prevHalfLength; double halfLength = sqrt((y-y0)*(y-y0)+(x-x0)*(x-x0)) / 2.0; if (maxRounding > halfLength) maxRounding = halfLength; @@ -48,10 +51,9 @@ void computeRounding(double &prevX, double &prevY, double x0, double y0, double double lambda2 = atan2(y-y0, x-x0); newX = x0+maxRounding*cos(lambda2); newY = y0+maxRounding*sin(lambda2); - prevX = newX; - prevY = newY; + prevX = x0; + prevY = y0; maxRounding = halfLength; - } } // anonymous namespace
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits