summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-10-14 18:42:56 +0000
committerjabiertxof <jabier.arraiza@marker.es>2015-10-14 18:42:56 +0000
commitd6926d4ffcd9fdf0c1e69fb3bf9397eac0f54f81 (patch)
tree6c9f1c162cc62019f9203250c4089f1aaf68a835 /src
parentFix from Johan to prevent referencing null C++ pointer. Found via Clang scan ... (diff)
downloadinkscape-d6926d4ffcd9fdf0c1e69fb3bf9397eac0f54f81.tar.gz
inkscape-d6926d4ffcd9fdf0c1e69fb3bf9397eac0f54f81.zip
improved results of roughen LPE
(bzr r14410)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-roughen.cpp44
1 files changed, 18 insertions, 26 deletions
diff --git a/src/live_effects/lpe-roughen.cpp b/src/live_effects/lpe-roughen.cpp
index 6f24c288d..dec3f955f 100644
--- a/src/live_effects/lpe-roughen.cpp
+++ b/src/live_effects/lpe-roughen.cpp
@@ -314,23 +314,19 @@ SPCurve const * LPERoughen::addNodesAndJitter(Geom::Curve const * A, Geom::Point
if(prev == Geom::Point(0,0)){
point_a1 = randomize(max_lenght);
}
- if(last){
- prev = A->pointAt(1 - (t / 3)) + point_b2;
- } else {
- point_b3 = Geom::Point(0,0);
- point_b2 = Geom::Point(0,0);
- }
- Geom::Ray ray2(seg2[1] + point_b1, seg1[3] + point_a3);
- point_a2 = Geom::Point::polar(ray2.angle(), max_lenght);
+ ray.setPoints(seg2[1] + point_a3 + point_b1, seg1[3] + point_a3);
+ point_a2 = Geom::Point::polar(ray.angle(), max_lenght);
if(!last){
prev = seg1[3] + point_a3 + point_a2;
+ } else {
+ prev = A->pointAt(1 - (t / 3)) + point_b2 + point_b3;
}
out->moveto(seg1[0]);
- out->curveto(seg1[0] + point_a1, seg1[3] + point_a3 + point_a2, seg1[3] + point_a3);
+ out->curveto(seg1[0] + point_a1, seg1[2] + point_a3 + point_a2, seg1[3] + point_a3);
if(last){
- out->curveto(seg2[1] + point_b1, A->pointAt(1 - (t / 3)) + point_b2, seg2[3] + point_b3);
+ out->curveto(seg2[1] + point_a3 + point_b1, A->pointAt(1 - (t / 3)) + point_b2 + point_b3, seg2[3] + point_b3);
} else {
- out->curveto(seg2[1] + point_b1, seg2[2] + point_b2, seg2[3] + point_b3);
+ out->curveto(seg2[1] + point_a3 + point_b1, seg2[2] + point_b2 + point_b3, seg2[3] + point_b3);
}
} else if(shift_handles_sym && !cubic) {
Geom::Ray ray(prev,A->initialPoint());
@@ -338,35 +334,31 @@ SPCurve const * LPERoughen::addNodesAndJitter(Geom::Curve const * A, Geom::Point
if(prev==Geom::Point(0,0)){
point_a1 = randomize(max_lenght);
}
- if(last){
- prev = A->pointAt(1 - (t / 3)) + point_b2;
- } else {
- point_b3 = Geom::Point(0,0);
- point_b2 = Geom::Point(0,0);
- }
- Geom::Ray ray2(A->pointAt(t + (t / 3)) + point_b1, A->pointAt(t) + point_a3);
- point_a2 = Geom::Point::polar(ray2.angle(), max_lenght);
+ ray.setPoints(A->pointAt(t + (t / 3)) + point_a3 + point_b1, A->pointAt(t) + point_a3);
+ point_a2 = Geom::Point::polar(ray.angle(), max_lenght);
if(!last){
prev = A->pointAt((t / 3) * 2) + point_a2;
+ } else {
+ prev = A->pointAt(1 - (t / 3)) + point_b2 + point_b3;
}
out->moveto(A->initialPoint());
- out->curveto(A->initialPoint() + point_a1, A->pointAt(t) + point_a3 + point_a2, A->pointAt(t) + point_a3);
+ out->curveto(A->initialPoint() + point_a1, A->pointAt((t / 3) * 2) + point_a3 + point_a2, A->pointAt(t) + point_a3);
if(last){
- out->curveto(A->pointAt(t + (t / 3)) + point_b1, A->pointAt(1 - (t / 3)) + point_b2, A->finalPoint() + point_b3);
+ out->curveto(A->pointAt(t + (t / 3)) + point_a3 + point_b1, A->pointAt(1 - (t / 3)) + point_b2 + point_b3, A->finalPoint() + point_b3);
} else {
- out->curveto(A->pointAt(t + (t / 3)) + point_b1, A->pointAt(t +((t / 3) * 2)) + point_b2, A->finalPoint() + point_b3);
+ out->curveto(A->pointAt(t + (t / 3)) + point_a3 + point_b1, A->pointAt(t +((t / 3) * 2)) + point_b2 + point_b3, A->finalPoint() + point_b3);
}
} else if (cubic) {
std::pair<Geom::CubicBezier, Geom::CubicBezier> div = cubic->subdivide(t);
std::vector<Geom::Point> seg1 = div.first.controlPoints(),
seg2 = div.second.controlPoints();
out->moveto(seg1[0]);
- out->curveto(seg1[1] + point_a1, seg1[2] + point_a2, seg1[3] + point_a3);
- out->curveto(seg2[1] + point_b1, seg2[2] + point_b2, seg2[3] + point_b3);
+ out->curveto(seg1[1] + point_a1, seg1[2] + point_a2 + point_a3, seg1[3] + point_a3);
+ out->curveto(seg2[1] + point_a3 + point_b1, seg2[2] + point_b2 + point_b3, seg2[3] + point_b3);
} else if (shift_handles) {
out->moveto(A->initialPoint());
- out->curveto(A->pointAt(t / 3) + point_a1, A->pointAt((t / 3) * 2) + point_a2, A->pointAt(t) + point_a3);
- out->curveto(A->pointAt(t + (t / 3)) + point_b1, A->pointAt(t +((t / 3) * 2)) + point_b2, A->finalPoint() + point_b3);
+ out->curveto(A->pointAt(t / 3) + point_a1, A->pointAt((t / 3) * 2) + point_a2 + point_a3, A->pointAt(t) + point_a3);
+ out->curveto(A->pointAt(t + (t / 3)) + point_a3 + point_b1, A->pointAt(t +((t / 3) * 2)) + point_b2 + point_b3, A->finalPoint() + point_b3);
} else {
out->moveto(A->initialPoint());
out->lineto(A->pointAt(t) + point_a3);