From 66a5d8abdc01c524d02064b537d7b0d167b15dda Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Fri, 13 Mar 2009 20:15:31 +0000 Subject: * Implement constrained snapping of knots * Implement snapping of the rectangle's radius handles * Line snappers: set the snap target in the derived class instead of in findBestSnap() (bzr r7479) --- src/knot-holder-entity.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src/knot-holder-entity.cpp') 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 */ -- cgit v1.2.3