Code

update 2geom
[inkscape.git] / src / sp-namedview.cpp
index a890f9754254f23743b9b83c3f9c1f0423b2ba95..54e84927a768c73995bdbc3529042aa6e91d6314 100644 (file)
@@ -53,7 +53,7 @@ static void sp_namedview_release(SPObject *object);
 static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *value);
 static void sp_namedview_child_added(SPObject *object, Inkscape::XML::Node *child, Inkscape::XML::Node *ref);
 static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *child);
-static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Node *repr, guint flags);
+static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
 
 static void sp_namedview_setup_guides(SPNamedView * nv);
 
@@ -459,7 +459,7 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va
             object->requestModified(SP_OBJECT_MODIFIED_FLAG);
             break;
     case SP_ATTR_INKSCAPE_SNAP_INDICATOR:
-            nv->snapindicator = (value) ? sp_str_to_bool (value) : FALSE;
+            nv->snapindicator = (value) ? sp_str_to_bool (value) : TRUE;
             object->requestModified(SP_OBJECT_MODIFIED_FLAG);
             break;
     case SP_ATTR_INKSCAPE_SNAP_BBOX:
@@ -687,7 +687,7 @@ static void sp_namedview_remove_child(SPObject *object, Inkscape::XML::Node *chi
     }
 }
 
-static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Node *repr, guint flags)
+static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags)
 {
     if ( ( flags & SP_OBJECT_WRITE_EXT ) &&
          repr != SP_OBJECT_REPR(object) )
@@ -695,8 +695,7 @@ static Inkscape::XML::Node *sp_namedview_write(SPObject *object, Inkscape::XML::
         if (repr) {
             repr->mergeFrom(SP_OBJECT_REPR(object), "id");
         } else {
-             /// \todo FIXME:  Plumb an appropriate XML::Document into this
-             repr = SP_OBJECT_REPR(object)->duplicate(NULL);
+             repr = SP_OBJECT_REPR(object)->duplicate(doc);
         }
     }
 
@@ -766,9 +765,9 @@ void sp_namedview_window_from_document(SPDesktop *desktop)
     }
 
     // restore zoom and view
-    if (nv->zoom != 0 && nv->zoom != HUGE_VAL && !isNaN(nv->zoom)
-        && nv->cx != HUGE_VAL && !isNaN(nv->cx)
-        && nv->cy != HUGE_VAL && !isNaN(nv->cy)) {
+    if (nv->zoom != 0 && nv->zoom != HUGE_VAL && !IS_NAN(nv->zoom)
+        && nv->cx != HUGE_VAL && !IS_NAN(nv->cx)
+        && nv->cy != HUGE_VAL && !IS_NAN(nv->cy)) {
         desktop->zoom_absolute(nv->cx, nv->cy, nv->zoom);
     } else if (sp_desktop_document(desktop)) { // document without saved zoom, zoom to its page
         desktop->zoom_page();
@@ -1063,6 +1062,23 @@ Inkscape::CanvasGrid * sp_namedview_get_first_enabled_grid(SPNamedView *namedvie
     return NULL;
 }
 
+void SPNamedView::translateGuides(NR::translate const &tr) {
+    for (GSList *l = guides; l != NULL; l = l->next) {
+        SPGuide &guide = *SP_GUIDE(l->data);
+        Geom::Point point_on_line = guide.point_on_line;
+        point_on_line[0] += tr[0];
+        point_on_line[1] += tr[1];
+        sp_guide_moveto(guide, point_on_line, true);
+    }
+}
+
+void SPNamedView::scrollAllDesktops(double dx, double dy, bool is_scrolling) {
+        for(GSList *l = views; l; l = l->next) {
+            SPDesktop *desktop = static_cast<SPDesktop *>(l->data);
+            desktop->scroll_world_in_svg_coords(dx, dy, is_scrolling);
+        }
+}
+
 
 /*
   Local Variables: