summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2012-04-25 21:21:59 +0000
committerJohan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl>2012-04-25 21:21:59 +0000
commit94dbdb9de139aa064e745630bb7bc6ed6d399730 (patch)
treeeb4606f0d33e7bb6301a066506d94c98a06053a4 /src
parentbuildtool: update help message (diff)
downloadinkscape-94dbdb9de139aa064e745630bb7bc6ed6d399730.tar.gz
inkscape-94dbdb9de139aa064e745630bb7bc6ed6d399730.zip
powerstroke: add errorhandling for rounded corners.
Fixed bugs: - https://launchpad.net/bugs/986394 (bzr r11295)
Diffstat (limited to 'src')
-rw-r--r--src/live_effects/lpe-powerstroke.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp
index 3b6af3cb6..6f803c4ff 100644
--- a/src/live_effects/lpe-powerstroke.cpp
+++ b/src/live_effects/lpe-powerstroke.cpp
@@ -258,7 +258,17 @@ Geom::Path path_from_piecewise_fix_cusps( Geom::Piecewise<Geom::D2<Geom::SBasis>
break;
}
- Geom::Ellipse ellipse = find_ellipse(B[prev_i].at1(), B[i].at0(), *O);
+ Geom::Ellipse ellipse;
+ try {
+ ellipse = find_ellipse(B[prev_i].at1(), B[i].at0(), *O);
+ }
+ catch (Geom::LogicalError &e) {
+ // 2geom did not find a fitting ellipse, this happens for weird thick paths :)
+ // do bevel, and break
+ pb.lineTo(B[i].at0());
+ break;
+ }
+
pb.arcTo( ellipse.ray(Geom::X), ellipse.ray(Geom::Y), ellipse.rot_angle(),
false, width < 0, B[i].at0() );