summaryrefslogtreecommitdiffstats
path: root/src/knot-holder-entity.cpp
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2009-03-13 20:15:31 +0000
committerdvlierop2 <dvlierop2@users.sourceforge.net>2009-03-13 20:15:31 +0000
commit66a5d8abdc01c524d02064b537d7b0d167b15dda (patch)
tree0101736dd4665e61682f965fc76d54c60779ceb7 /src/knot-holder-entity.cpp
parentremove desktop-affine.h and refactor sp_desktop_dt2doc_* calls (diff)
downloadinkscape-66a5d8abdc01c524d02064b537d7b0d167b15dda.tar.gz
inkscape-66a5d8abdc01c524d02064b537d7b0d167b15dda.zip
* 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)
Diffstat (limited to '')
-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 */