summaryrefslogtreecommitdiffstats
path: root/src/splivarot.cpp
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-08-03 18:21:33 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-08-03 18:21:33 +0000
commit9937a690699427e230534c54bfb1c8d2a68ecfb5 (patch)
tree6b3bdb8f3d5676d9a8f382bc6d7c3d364ba2cca8 /src/splivarot.cpp
parentfix arc conversion to livarot (diff)
downloadinkscape-9937a690699427e230534c54bfb1c8d2a68ecfb5.tar.gz
inkscape-9937a690699427e230534c54bfb1c8d2a68ecfb5.zip
convert path to linears and cubics only before creating outline. (workaround for a bug in livarot)
(bzr r6548)
Diffstat (limited to 'src/splivarot.cpp')
-rw-r--r--src/splivarot.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/splivarot.cpp b/src/splivarot.cpp
index 6d592f662..b8c2bb2f0 100644
--- a/src/splivarot.cpp
+++ b/src/splivarot.cpp
@@ -54,6 +54,7 @@
#include <libnr/nr-matrix-translate-ops.h>
#include <libnr/nr-scale-matrix-ops.h>
#include <libnr/n-art-bpath-2geom.h>
+#include "helper/geom.h"
#include "livarot/Path.h"
#include "livarot/Shape.h"
@@ -730,11 +731,17 @@ sp_selected_path_outline()
o_miter = i_style->stroke_miterlimit.value * o_width;
}
- Path *orig = Path_for_item(item, false);
- if (orig == NULL) {
+ SPCurve *curvetemp = curve_for_item(item);
+ if (curvetemp == NULL) {
curve->unref();
continue;
}
+ // Livarots outline of arcs is broken. So convert the path to linear and cubics only, for which the outline is created correctly.
+ Geom::PathVector pathv = pathv_to_linear_and_cubic_beziers( curvetemp->get_pathvector() );
+ curvetemp->unref();
+
+ Path *orig = new Path;
+ orig->LoadPathVector(pathv);
Path *res = new Path;
res->SetBackData(false);