summaryrefslogtreecommitdiffstats
path: root/src/snap.cpp
diff options
context:
space:
mode:
authorDiederik van Lierop <mail@diedenrezi.nl>2008-03-08 11:32:18 +0000
committerdvlierop2 <dvlierop2@users.sourceforge.net>2008-03-08 11:32:18 +0000
commit0a78ad638f3bbcd46631cb2c741fca031356b725 (patch)
treee7e0378939debb249a67c9e658bcef959b3b1a57 /src/snap.cpp
parentmake the infobox narrower and place add button above it (diff)
downloadinkscape-0a78ad638f3bbcd46631cb2c741fca031356b725.tar.gz
inkscape-0a78ad638f3bbcd46631cb2c741fca031356b725.zip
Node tool: snap to paths and their nodes, incl. to the path currently being edited
(bzr r4989)
Diffstat (limited to 'src/snap.cpp')
-rw-r--r--src/snap.cpp42
1 files changed, 38 insertions, 4 deletions
diff --git a/src/snap.cpp b/src/snap.cpp
index cb4ea3f58..093ae10e3 100644
--- a/src/snap.cpp
+++ b/src/snap.cpp
@@ -187,10 +187,35 @@ Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t,
std::vector<NR::Point> points_to_snap;
points_to_snap.push_back(p);
- return freeSnap(t, p, true, points_to_snap, lit);
+ return freeSnap(t, p, true, points_to_snap, lit, NULL);
}
/**
+ * Try to snap a point to any interested snappers.
+ *
+ * \param t Type of point.
+ * \param p Point.
+ * \param it Item to ignore when snapping.
+ * \return Snapped point.
+ */
+
+Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t,
+ NR::Point const &p,
+ SPItem const *it,
+ std::vector<NR::Point> *unselected_nodes) const
+
+{
+ std::list<SPItem const *> lit;
+ lit.push_back(it);
+
+ std::vector<NR::Point> points_to_snap;
+ points_to_snap.push_back(p);
+
+ return freeSnap(t, p, true, points_to_snap, lit, unselected_nodes);
+}
+
+
+/**
* Try to snap a point to any of the specified snappers.
*
* \param t Type of point.
@@ -206,7 +231,8 @@ Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t,
NR::Point const &p,
bool const &first_point,
std::vector<NR::Point> &points_to_snap,
- std::list<SPItem const *> const &it) const
+ std::list<SPItem const *> const &it,
+ std::vector<NR::Point> *unselected_nodes) const
{
if (!SomeSnapperMightSnap()) {
return Inkscape::SnappedPoint(p, NR_HUGE, 0, false);
@@ -217,7 +243,7 @@ Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t,
SnapperList const snappers = getSnappers();
for (SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) {
- (*i)->freeSnap(sc, t, p, first_point, points_to_snap, it);
+ (*i)->freeSnap(sc, t, p, first_point, points_to_snap, it, unselected_nodes);
}
return findBestSnap(p, sc, false);
@@ -414,7 +440,7 @@ std::pair<NR::Point, bool> SnapManager::_snapTransformed(
}
snapped = constrainedSnap(type, *j, i == points.begin(), transformed_points, dedicated_constraint, ignore);
} else {
- snapped = freeSnap(type, *j, i == points.begin(), transformed_points, ignore);
+ snapped = freeSnap(type, *j, i == points.begin(), transformed_points, ignore, NULL);
}
NR::Point result;
@@ -704,6 +730,14 @@ std::pair<NR::Coord, bool> SnapManager::freeSnapSkew(Inkscape::Snapper::PointTyp
Inkscape::SnappedPoint SnapManager::findBestSnap(NR::Point const &p, SnappedConstraints &sc, bool constrained) const
{
+ /*
+ std::cout << "Type and number of snapped constraints: " << std::endl;
+ std::cout << " Points : " << sc.points.size() << std::endl;
+ std::cout << " Lines : " << sc.lines.size() << std::endl;
+ std::cout << " Grid lines : " << sc.grid_lines.size()<< std::endl;
+ std::cout << " Guide lines : " << sc.guide_lines.size()<< std::endl;
+ */
+
// Store all snappoints
std::list<Inkscape::SnappedPoint> sp_list;