diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2012-04-25 21:21:59 +0000 |
|---|---|---|
| committer | Johan B. C. Engelen <j.b.c.engelen@alumnus.utwente.nl> | 2012-04-25 21:21:59 +0000 |
| commit | 94dbdb9de139aa064e745630bb7bc6ed6d399730 (patch) | |
| tree | eb4606f0d33e7bb6301a066506d94c98a06053a4 /src | |
| parent | buildtool: update help message (diff) | |
| download | inkscape-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.cpp | 12 |
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() ); |
