summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter/powerstrokepointarray.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/live_effects/parameter/powerstrokepointarray.cpp')
-rw-r--r--src/live_effects/parameter/powerstrokepointarray.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/live_effects/parameter/powerstrokepointarray.cpp b/src/live_effects/parameter/powerstrokepointarray.cpp
index bc06e42ca..7e2da4cfd 100644
--- a/src/live_effects/parameter/powerstrokepointarray.cpp
+++ b/src/live_effects/parameter/powerstrokepointarray.cpp
@@ -89,6 +89,21 @@ PowerStrokePointArrayParam::recalculate_controlpoints_for_new_pwd2(Geom::Piecewi
}
}
+/** call this method to recalculate the controlpoints when path is reversed.*/
+void
+PowerStrokePointArrayParam::reverse_controlpoints()
+{
+ if (!last_pwd2.empty()) {
+ Geom::Piecewise<Geom::D2<Geom::SBasis> > 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);
+ _vector[i][Geom::X] = new_pos;
+ }
+ write_to_SVG();
+ }
+}
+
float PowerStrokePointArrayParam::median_width()
{
size_t size = _vector.size();