Code

fix transformation of LPECurveStitch when "Scale width relative" is set
[inkscape.git] / src / guide-snapper.cpp
index 9fd13705c26cb2ff12ded4e823a534a69e3145fb..41e2cdb0708bc480366cda9317277bb9570ec661 100644 (file)
@@ -22,23 +22,17 @@ Inkscape::GuideSnapper::GuideSnapper(SPNamedView const *nv, NR::Coord const d) :
 
 }
 
-Inkscape::GuideSnapper::LineList Inkscape::GuideSnapper::_getSnapLines(NR::Point const &p) const
+Inkscape::GuideSnapper::LineList Inkscape::GuideSnapper::_getSnapLines(NR::Point const &/*p*/) const
 {
     LineList s;
 
-    if ( NULL == _named_view || willSnapSomething() == false) {
+    if ( NULL == _named_view || ThisSnapperMightSnap() == false) {
         return s;
     }
 
     for (GSList const *l = _named_view->guides; l != NULL; l = l->next) {
         SPGuide const *g = SP_GUIDE(l->data);
-
-        /* We assume here that guides are horizontal or vertical */
-        if (g->normal == component_vectors[NR::X]) {
-            s.push_back(std::make_pair(NR::X, g->position));
-        } else {
-            s.push_back(std::make_pair(NR::Y, g->position));
-        }
+        s.push_back(std::make_pair(g->normal_to_line, g->point_on_line)); 
     }
 
     return s;
@@ -47,9 +41,15 @@ Inkscape::GuideSnapper::LineList Inkscape::GuideSnapper::_getSnapLines(NR::Point
 /**
  *  \return true if this Snapper will snap at least one kind of point.
  */
-bool Inkscape::GuideSnapper::willSnapSomething() const
+bool Inkscape::GuideSnapper::ThisSnapperMightSnap() const
+{
+    return _named_view == NULL ? false : (_snap_enabled && _snap_from != 0 && _named_view->showguides);
+}
+
+void Inkscape::GuideSnapper::_addSnappedLine(SnappedConstraints &sc, NR::Point const snapped_point, NR::Coord const snapped_distance, NR::Point const normal_to_line, NR::Point const point_on_line) const
 {
-    return _named_view == NULL ? false : (_enabled && _snap_to != 0 && _named_view->showguides);
+    SnappedLine dummy = SnappedLine(snapped_point, snapped_distance, getSnapperTolerance(), getSnapperAlwaysSnap(), normal_to_line, point_on_line);
+    sc.guide_lines.push_back(dummy);
 }
 
 /*