From bdda1cad52c9fe447028bdcea90166cdc2ac8799 Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sat, 7 Apr 2012 21:57:31 +0200 Subject: powerstroke: use path's strokewidth on applying powerstroke effect (bzr r11175) --- src/live_effects/lpe-powerstroke.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp index d3843dc92..8edee1744 100644 --- a/src/live_effects/lpe-powerstroke.cpp +++ b/src/live_effects/lpe-powerstroke.cpp @@ -14,6 +14,7 @@ #include "live_effects/lpe-powerstroke-interpolators.h" #include "sp-shape.h" +#include "style.h" #include "display/curve.h" #include <2geom/path.h> @@ -182,11 +183,21 @@ LPEPowerStroke::doOnApply(SPLPEItem *lpeitem) { if (SP_IS_SHAPE(lpeitem)) { std::vector points; - Geom::PathVector pathv = SP_SHAPE(lpeitem)->_curve->get_pathvector(); - Geom::Path::size_type size = pathv.empty() ? 1 : pathv.front().size_open(); - points.push_back( Geom::Point(0,0) ); - points.push_back( Geom::Point(0.5*size,0) ); - points.push_back( Geom::Point(size,0) ); + Geom::PathVector const &pathv = SP_SHAPE(lpeitem)->_curve->get_pathvector(); + double width = (lpeitem && lpeitem->style) ? lpeitem->style->stroke_width.computed : 1.; + if (pathv.empty()) { + points.push_back( Geom::Point(0.,width) ); + points.push_back( Geom::Point(0.5,width) ); + points.push_back( Geom::Point(1.,width) ); + } else { + Geom::Path const &path = pathv.front(); + Geom::Path::size_type const size = path.size_default(); + points.push_back( Geom::Point(0.,width) ); + points.push_back( Geom::Point(0.5*size,width) ); + if (!path.closed()) { + points.push_back( Geom::Point(size,width) ); + } + } offset_points.param_set_and_write_new_value(points); } else { g_warning("LPE Powerstroke can only be applied to shapes (not groups)."); -- cgit v1.2.3