X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=inline;f=src%2Fsp-namedview.cpp;h=7caa9407cfef05de719503749dd831bae9ebb9eb;hb=26c12baed8601604d7ac40a91675b10fa6163331;hp=268150a16002816c7f8d95657251cf44c3d49659;hpb=871fccc39b870543073d7015a9d8c701252b68f9;p=inkscape.git diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 268150a16..7caa9407c 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -8,7 +8,7 @@ * bulia byak * * Copyright (C) 2006 Johan Engelen - * Copyright (C) 1999-2005 Authors + * Copyright (C) 1999-2008 Authors * Copyright (C) 2000-2001 Ximian, Inc. * * Released under GNU GPL, read the file 'COPYING' for more information @@ -34,7 +34,6 @@ #include "desktop.h" #include "conn-avoid-ref.h" // for defaultConnSpacing. -#include "isnan.h" //temp fix for isnan(). include last #define DEFAULTTOLERANCE 0.4 #define DEFAULTGRIDCOLOR 0x3f3fff25 @@ -53,7 +52,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); @@ -114,6 +113,7 @@ static void sp_namedview_init(SPNamedView *nv) nv->guides = NULL; nv->viewcount = 0; nv->grids = NULL; + nv->snapindicator = false; nv->default_layer_id = 0; @@ -246,6 +246,7 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape: sp_object_read_attr(object, "inkscape:window-x"); sp_object_read_attr(object, "inkscape:window-y"); sp_object_read_attr(object, "inkscape:snap-global"); + sp_object_read_attr(object, "inkscape:snap-indicator"); sp_object_read_attr(object, "inkscape:snap-bbox"); sp_object_read_attr(object, "inkscape:snap-nodes"); sp_object_read_attr(object, "inkscape:snap-guide"); @@ -256,6 +257,7 @@ static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape: sp_object_read_attr(object, "inkscape:object-nodes"); sp_object_read_attr(object, "inkscape:bbox-paths"); sp_object_read_attr(object, "inkscape:bbox-nodes"); + sp_object_read_attr(object, "inkscape:snap-page"); sp_object_read_attr(object, "inkscape:current-layer"); sp_object_read_attr(object, "inkscape:connector-spacing"); @@ -455,6 +457,10 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va nv->snap_manager.setSnapEnabledGlobally(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; + case SP_ATTR_INKSCAPE_SNAP_INDICATOR: + nv->snapindicator = (value) ? sp_str_to_bool (value) : TRUE; + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_SNAP_BBOX: nv->snap_manager.setSnapModeBBox(value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -495,6 +501,10 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va nv->snap_manager.object.setSnapToBBoxNode(value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; + case SP_ATTR_INKSCAPE_SNAP_PAGE: + nv->snap_manager.object.setSnapToPageBorder(value ? sp_str_to_bool(value) : FALSE); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; case SP_ATTR_INKSCAPE_CURRENT_LAYER: nv->default_layer_id = value ? g_quark_from_string(value) : 0; object->requestModified(SP_OBJECT_MODIFIED_FLAG); @@ -676,7 +686,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) ) @@ -684,8 +694,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); } } @@ -755,9 +764,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(); @@ -1052,6 +1061,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(l->data); + desktop->scroll_world_in_svg_coords(dx, dy, is_scrolling); + } +} + /* Local Variables: