summaryrefslogtreecommitdiffstats
path: root/src/knot-holder-entity.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/knot-holder-entity.cpp')
-rw-r--r--src/knot-holder-entity.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/knot-holder-entity.cpp b/src/knot-holder-entity.cpp
index df58d356a..4225dd9e3 100644
--- a/src/knot-holder-entity.cpp
+++ b/src/knot-holder-entity.cpp
@@ -97,6 +97,18 @@ KnotHolderEntity::snap_knot_position(Geom::Point const &p)
return s * i2d.inverse();
}
+Geom::Point
+KnotHolderEntity::snap_knot_position_constrained(Geom::Point const &p, Inkscape::Snapper::ConstraintLine const &constraint)
+{
+ Geom::Matrix const i2d (sp_item_i2d_affine(item));
+ Geom::Point s = p * i2d;
+ Inkscape::Snapper::ConstraintLine transformed_constraint = Inkscape::Snapper::ConstraintLine(constraint.getPoint() * i2d, (constraint.getPoint() + constraint.getDirection()) * i2d - constraint.getPoint() * i2d);
+ SnapManager &m = desktop->namedview->snap_manager;
+ m.setup(desktop, true, item);
+ m.constrainedSnapReturnByRef(Inkscape::SnapPreferences::SNAPPOINT_NODE, s, Inkscape::SNAPSOURCE_HANDLE, transformed_constraint);
+ return s * i2d.inverse();
+}
+
/* Pattern manipulation */