Code

add test for config
[inkscape.git] / src / object-snapper.cpp
index 3d583b70950e2959efe7c8b6bdd466b369549558..9439fea8b0d854e526c7ccbc2763b456ee17ae14 100644 (file)
@@ -78,10 +78,10 @@ void Inkscape::ObjectSnapper::_snapNodes(Inkscape::SnappedPoint &s,
                 int j = 0;
                 NR::Matrix const i2doc = sp_item_i2doc_affine(*i);
 
-                while (sh->curve->bpath[j].code != NR_END) {
+                while (SP_CURVE_BPATH(sh->curve)[j].code != NR_END) {
 
                     /* Get this node in desktop coordinates */
-                    NArtBpath const &bp = sh->curve->bpath[j];
+                    NArtBpath const &bp = SP_CURVE_BPATH(sh->curve)[j];
                     NR::Point const n = desktop->doc2dt(bp.c(3) * i2doc);
 
                     /* Try to snap to this node of the path */
@@ -116,8 +116,10 @@ void Inkscape::ObjectSnapper::_snapPaths(Inkscape::SnappedPoint &s,
         NR::Point const p_it = p_doc * i2doc.inverse();
 
         Path *livarot_path = Path_for_item(*i, true, true);
-        if (livarot_path)
-            livarot_path->ConvertWithBackData(0.01);
+        if (!livarot_path)
+            continue;
+
+        livarot_path->ConvertWithBackData(0.01);
 
         /* Look for the nearest position on this SPItem to our snap point */
         NR::Maybe<Path::cut_position> const o = get_nearest_position_on_Path(livarot_path, p_it);
@@ -142,6 +144,10 @@ void Inkscape::ObjectSnapper::_snapPaths(Inkscape::SnappedPoint &s,
 Inkscape::SnappedPoint Inkscape::ObjectSnapper::_doFreeSnap(NR::Point const &p,
                                                             std::list<SPItem const *> const &it) const
 {
+    if ( NULL == _named_view ) {
+        return SnappedPoint(p, NR_HUGE);
+    }
+
     /* Get a list of all the SPItems that we will try to snap to */
     std::list<SPItem*> cand;
     _findCandidates(cand, sp_document_root(_named_view->document), it, p);
@@ -161,7 +167,7 @@ Inkscape::SnappedPoint Inkscape::ObjectSnapper::_doFreeSnap(NR::Point const &p,
 
 
 Inkscape::SnappedPoint Inkscape::ObjectSnapper::_doConstrainedSnap(NR::Point const &p,
-                                                                   NR::Point const &c,
+                                                                   ConstraintLine const &c,
                                                                    std::list<SPItem const *> const &it) const
 {
     /* FIXME: this needs implementing properly; I think we have to do the