From 94dbdb9de139aa064e745630bb7bc6ed6d399730 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Wed, 25 Apr 2012 23:21:59 +0200 Subject: powerstroke: add errorhandling for rounded corners. Fixed bugs: - https://launchpad.net/bugs/986394 (bzr r11295) --- src/live_effects/lpe-powerstroke.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'src') 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 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() ); -- cgit v1.2.3