From d91112f7116f50489bd93047f6e7bc0985512c68 Mon Sep 17 00:00:00 2001 From: Jabier Arraiza Date: Sun, 19 Nov 2017 23:54:21 +0100 Subject: Working on coontinuing paths --- src/live_effects/parameter/powerstrokepointarray.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp') diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp index 7e2da4cfd..289498498 100644 --- a/src/live_effects/parameter/powerstrokepointarray.cpp +++ b/src/live_effects/parameter/powerstrokepointarray.cpp @@ -90,18 +90,28 @@ PowerStrokePointArrayParam::recalculate_controlpoints_for_new_pwd2(Geom::Piecewi } /** call this method to recalculate the controlpoints when path is reversed.*/ -void -PowerStrokePointArrayParam::reverse_controlpoints() +std::vector +PowerStrokePointArrayParam::reverse_controlpoints(bool write) { + std::vector controlpoints; if (!last_pwd2.empty()) { Geom::Piecewise > const & pwd2_in_reverse = reverse(last_pwd2); for (unsigned int i = 0; i < _vector.size(); ++i) { Geom::Point control_pos = last_pwd2.valueAt(_vector[i][Geom::X]); double new_pos = Geom::nearest_time(control_pos, pwd2_in_reverse); + controlpoints.push_back(Geom::Point(new_pos,_vector[i][Geom::Y])); _vector[i][Geom::X] = new_pos; } - write_to_SVG(); + if (write) { + write_to_SVG(); + _vector.clear(); + _vector = controlpoints; + controlpoints.clear(); + write_to_SVG(); + return _vector; + } } + return controlpoints; } float PowerStrokePointArrayParam::median_width() -- cgit v1.2.3