From d2378b62d2e48da3d7b23df2be3cf42184293299 Mon Sep 17 00:00:00 2001 From: cth103 Date: Wed, 3 May 2006 11:01:57 +0000 Subject: [PATCH] Give SPNamedView a SnapManager instance and use it for all management of snapping settings. --- src/arc-context.cpp | 2 +- src/connector-context.cpp | 5 +-- src/context-fns.cpp | 3 +- src/desktop.cpp | 21 +++++----- src/draw-context.cpp | 6 +-- src/nodepath.cpp | 2 +- src/object-edit.cpp | 3 +- src/pencil-context.cpp | 5 ++- src/rect-context.cpp | 2 +- src/selection-chemistry.cpp | 2 +- src/seltrans.cpp | 4 +- src/snap.cpp | 33 +++++++++------ src/snap.h | 14 ++++--- src/sp-namedview.cpp | 58 ++++----------------------- src/sp-namedview.h | 21 +--------- src/spiral-context.cpp | 4 +- src/star-context.cpp | 4 +- src/ui/dialog/document-properties.cpp | 16 ++++---- 18 files changed, 82 insertions(+), 123 deletions(-) diff --git a/src/arc-context.cpp b/src/arc-context.cpp index 8bee7fe02..38e6653ac 100644 --- a/src/arc-context.cpp +++ b/src/arc-context.cpp @@ -261,7 +261,7 @@ static gint sp_arc_context_root_handler(SPEventContext *event_context, GdkEvent dragging = true; ac->center = Inkscape::setup_for_drag_start(desktop, event_context, event); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; ac->center = m.freeSnap(Inkscape::Snapper::SNAP_POINT, ac->center, ac->item).getPoint(); sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), GDK_KEY_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | diff --git a/src/connector-context.cpp b/src/connector-context.cpp index d8e7b8797..edb9a8b45 100644 --- a/src/connector-context.cpp +++ b/src/connector-context.cpp @@ -67,8 +67,7 @@ #include "conn-avoid-ref.h" #include "libavoid/vertices.h" #include "context-fns.h" - - +#include "sp-namedview.h" static void sp_connector_context_class_init(SPConnectorContextClass *klass); static void sp_connector_context_init(SPConnectorContext *conn_context); @@ -522,7 +521,7 @@ connector_handle_button_press(SPConnectorContext *const cc, GdkEventButton const if (!cc->sid) { // This is the first point, so just snap it to the grid // as there's no other points to go off. - SnapManager const m(cc->desktop->namedview); + SnapManager const &m = cc->desktop->namedview->snap_manager; p = m.freeSnap(Inkscape::Snapper::SNAP_POINT | Inkscape::Snapper::BBOX_POINT, p, NULL).getPoint(); } diff --git a/src/context-fns.cpp b/src/context-fns.cpp index 6c36e780f..5db98ec16 100644 --- a/src/context-fns.cpp +++ b/src/context-fns.cpp @@ -7,6 +7,7 @@ #include "snap.h" #include "desktop-affine.h" #include "event-context.h" +#include "sp-namedview.h" /* FIXME: could probably use a template here */ @@ -76,7 +77,7 @@ NR::Rect Inkscape::snap_rectangular_box(SPDesktop const *desktop, SPItem *item, bool const shift = state & GDK_SHIFT_MASK; bool const control = state & GDK_CONTROL_MASK; - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; if (control) { diff --git a/src/desktop.cpp b/src/desktop.cpp index 5db7e5d24..05d20b31b 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -1247,6 +1247,9 @@ _namedview_modified (SPNamedView *nv, guint flags, SPDesktop *desktop) if (flags & SP_OBJECT_MODIFIED_FLAG) { /* Recalculate snap distances */ + /* FIXME: why is the desktop getting involved in setting up something + ** that is entirely to do with the namedview? + */ _update_snap_distances (desktop); /* Show/hide page background */ @@ -1312,15 +1315,15 @@ _update_snap_distances (SPDesktop *desktop) SPNamedView &nv = *desktop->namedview; - nv.grid_snapper.setDistance(sp_convert_distance_full(nv.gridtolerance, - *nv.gridtoleranceunit, - px)); - nv.guide_snapper.setDistance(sp_convert_distance_full(nv.guidetolerance, - *nv.guidetoleranceunit, - px)); - nv.object_snapper.setDistance(sp_convert_distance_full(nv.objecttolerance, - *nv.objecttoleranceunit, - px)); + nv.snap_manager.grid.setDistance(sp_convert_distance_full(nv.gridtolerance, + *nv.gridtoleranceunit, + px)); + nv.snap_manager.guide.setDistance(sp_convert_distance_full(nv.guidetolerance, + *nv.guidetoleranceunit, + px)); + nv.snap_manager.object.setDistance(sp_convert_distance_full(nv.objecttolerance, + *nv.objecttoleranceunit, + px)); } diff --git a/src/draw-context.cpp b/src/draw-context.cpp index d33a33f7b..aa1480c67 100644 --- a/src/draw-context.cpp +++ b/src/draw-context.cpp @@ -39,7 +39,7 @@ #include "selection-chemistry.h" #include "snap.h" #include "sp-path.h" - +#include "sp-namedview.h" static void sp_draw_context_class_init(SPDrawContextClass *klass); static void sp_draw_context_init(SPDrawContext *dc); @@ -372,7 +372,7 @@ void spdc_endpoint_snap_rotation(SPEventContext const *const ec, NR::Point &p, N p = o + bdot * best; /* Snap it along best vector */ - SnapManager const m(SP_EVENT_CONTEXT_DESKTOP(ec)->namedview); + SnapManager const &m = SP_EVENT_CONTEXT_DESKTOP(ec)->namedview->snap_manager; p = m.constrainedSnap(Inkscape::Snapper::SNAP_POINT | Inkscape::Snapper::BBOX_POINT, p, best, NULL).getPoint(); } @@ -387,7 +387,7 @@ void spdc_endpoint_snap_free(SPEventContext const * const ec, NR::Point& p, guin } /* FIXME: this should be doing bbox snap as well */ - SnapManager const m(SP_EVENT_CONTEXT_DESKTOP(ec)->namedview); + SnapManager const &m = SP_EVENT_CONTEXT_DESKTOP(ec)->namedview->snap_manager; p = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, p, NULL).getPoint(); } diff --git a/src/nodepath.cpp b/src/nodepath.cpp index 081638f1d..64611f12c 100644 --- a/src/nodepath.cpp +++ b/src/nodepath.cpp @@ -2839,7 +2839,7 @@ static gboolean node_handle_request(SPKnot *knot, NR::Point *p, guint state, gpo NRPathcode const othercode = sp_node_path_code_from_side(n, opposite); - SnapManager const m(n->subpath->nodepath->desktop->namedview); + SnapManager const &m = n->subpath->nodepath->desktop->namedview->snap_manager; if (opposite->other && (n->type != Inkscape::NodePath::NODE_CUSP) && (othercode == NR_LINETO)) { /* We are smooth node adjacent with line */ diff --git a/src/object-edit.cpp b/src/object-edit.cpp index d96585509..2eabdd7bd 100644 --- a/src/object-edit.cpp +++ b/src/object-edit.cpp @@ -29,6 +29,7 @@ #include "desktop-affine.h" #include #include "desktop.h" +#include "sp-namedview.h" #include "sp-pattern.h" #include "sp-path.h" @@ -334,7 +335,7 @@ static NR::Point rect_snap_knot_position(NR::Point const &p) { SPDesktop const *desktop = inkscape_active_desktop(); NR::Point s = sp_desktop_dt2root_xy_point(desktop, p); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; s = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, s, NULL).getPoint(); return sp_desktop_root2dt_xy_point(desktop, s); } diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp index ccb7c97e9..3265d87bf 100644 --- a/src/pencil-context.cpp +++ b/src/pencil-context.cpp @@ -35,6 +35,7 @@ #include "libnr/in-svg-plane.h" #include "libnr/n-art-bpath.h" #include "context-fns.h" +#include "sp-namedview.h" static void sp_pencil_context_class_init(SPPencilContextClass *klass); static void sp_pencil_context_init(SPPencilContext *pc); @@ -233,7 +234,7 @@ pencil_handle_button_press(SPPencilContext *const pc, GdkEventButton const &beve // anchor, which is handled by the sibling branch above) selection->clear(); desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Creating new path")); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; p = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, p, NULL).getPoint(); } else if (selection->singleItem() && SP_IS_PATH(selection->singleItem())) { desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Appending to selected path")); @@ -302,7 +303,7 @@ pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mev if (anchor) { p = anchor->dp; } else if ((mevent.state & GDK_SHIFT_MASK) == 0) { - SnapManager const m(dt->namedview); + SnapManager const &m = dt->namedview->snap_manager; p = m.freeSnap(Inkscape::Snapper::BBOX_POINT | Inkscape::Snapper::SNAP_POINT, p, NULL).getPoint(); } if ( pc->npoints != 0 ) { // buttonpress may have happened before we entered draw context! diff --git a/src/rect-context.cpp b/src/rect-context.cpp index cf8651ae1..a7a16fcad 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -297,7 +297,7 @@ static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent NR::Point const button_dt(desktop->w2d(button_w)); /* Snap center */ - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; rc->center = m.freeSnap(Inkscape::Snapper::SNAP_POINT | Inkscape::Snapper::BBOX_POINT, button_dt, rc->item).getPoint(); diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index 19f6c4751..a1363850d 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -1099,7 +1099,7 @@ void sp_selection_paste(bool in_place) /* Snap the offset of the new item(s) to the grid */ /* FIXME: this gridsnap fiddling is a hack. */ - Inkscape::GridSnapper &s = desktop->namedview->grid_snapper; + Inkscape::GridSnapper &s = desktop->namedview->snap_manager.grid; gdouble const curr_gridsnap = s.getDistance(); s.setDistance(NR_HUGE); m = s.freeSnap(Inkscape::Snapper::SNAP_POINT, m, NULL).getPoint(); diff --git a/src/seltrans.cpp b/src/seltrans.cpp index 0c478edaa..d6628ea72 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -1045,7 +1045,7 @@ gboolean Inkscape::SelTrans::centerRequest(NR::Point &pt, guint state) using NR::X; using NR::Y; - SnapManager const m(_desktop->namedview); + SnapManager const &m = _desktop->namedview->snap_manager; pt = m.freeSnap(Snapper::SNAP_POINT, pt, NULL).getPoint(); if (state & GDK_CONTROL_MASK) { @@ -1245,7 +1245,7 @@ void sp_sel_trans_center(Inkscape::SelTrans *seltrans, SPSelTransHandle const &, void Inkscape::SelTrans::moveTo(NR::Point const &xy, guint state) { - SnapManager const m(_desktop->namedview); + SnapManager const &m = _desktop->namedview->snap_manager; /* The amount that we've moved by during this drag */ NR::Point dxy = xy - _point; diff --git a/src/snap.cpp b/src/snap.cpp index 111ef619f..592c65fec 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -21,14 +21,22 @@ #include #include +SnapManager::SnapperList SnapManager::getSnappers() const +{ + SnapManager::SnapperList s; + s.push_back(&grid); + s.push_back(&guide); + s.push_back(&object); + return s; +} /** * \return true if one of the snappers will try to snap something. */ bool SnapManager::willSnapSomething() const { - SPNamedView::SnapperList s = namedview->getSnappers(); - SPNamedView::SnapperList::const_iterator i = s.begin(); + SnapperList const s = getSnappers(); + SnapperList::const_iterator i = s.begin(); while (i != s.end() && (*i)->willSnapSomething() == false) { i++; } @@ -58,8 +66,8 @@ Inkscape::SnappedPoint SnapManager::freeSnap(Inkscape::Snapper::PointType t, { Inkscape::SnappedPoint r(p, NR_HUGE); - SPNamedView::SnapperList snappers = namedview->getSnappers(); - for (SPNamedView::SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { + SnapperList const snappers = getSnappers(); + for (SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { Inkscape::SnappedPoint const s = (*i)->freeSnap(t, p, it); if (s.getDistance() < r.getDistance()) { r = s; @@ -88,8 +96,8 @@ Inkscape::SnappedPoint SnapManager::constrainedSnap(Inkscape::Snapper::PointType { Inkscape::SnappedPoint r(p, NR_HUGE); - SPNamedView::SnapperList snappers = namedview->getSnappers(); - for (SPNamedView::SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { + SnapperList const snappers = getSnappers(); + for (SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { Inkscape::SnappedPoint const s = (*i)->constrainedSnap(t, p, c, it); if (s.getDistance() < r.getDistance()) { r = s; @@ -220,10 +228,10 @@ NR::Coord namedview_vector_snap(SPNamedView const *nv, Inkscape::Snapper::PointT g_assert(nv != NULL); g_assert(SP_IS_NAMEDVIEW(nv)); - SPNamedView::SnapperList snappers = nv->getSnappers(); + SnapManager::SnapperList const snappers = nv->snap_manager.getSnappers(); NR::Coord best = NR_HUGE; - for (SPNamedView::SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { + for (SnapManager::SnapperList::const_iterator i = snappers.begin(); i != snappers.end(); i++) { Inkscape::SnappedPoint const s = (*i)->constrainedSnap(t, req, d, it); if (s.getDistance() < best) { req = s.getPoint(); @@ -255,7 +263,7 @@ std::pair namedview_dim_snap_list(SPNamedView const *nv, Inksca NR::Coord dist = NR_HUGE; NR::Coord xdist = dx; - SnapManager const m(nv); + SnapManager const &m = nv->snap_manager; if (m.willSnapSomething()) { for (std::vector::const_iterator i = p.begin(); i != p.end(); i++) { @@ -283,7 +291,7 @@ std::pair namedview_vector_snap_list(SPNamedView const *nv, Inksca using NR::X; using NR::Y; - SnapManager const m(nv); + SnapManager const &m = nv->snap_manager; if (m.willSnapSomething() == false) { return std::make_pair(s[X], false); @@ -323,7 +331,7 @@ std::pair namedview_dim_snap_list_scale(SPNamedView const *nv, Ink double const sx, NR::Dim2 dim, std::list const &it) { - SnapManager const m(nv); + SnapManager const &m = nv->snap_manager; if (m.willSnapSomething() == false) { return std::make_pair(sx, false); } @@ -366,7 +374,7 @@ double namedview_dim_snap_list_skew(SPNamedView const *nv, Inkscape::Snapper::Po const std::vector &p, NR::Point const &norm, double const sx, NR::Dim2 const dim) { - SnapManager const m(nv); + SnapManager const &m = nv->snap_manager; if (m.willSnapSomething() == false) { return sx; @@ -394,6 +402,7 @@ double namedview_dim_snap_list_skew(SPNamedView const *nv, Inkscape::Snapper::Po return skew; } + /* Local Variables: mode:c++ diff --git a/src/snap.h b/src/snap.h index 6b94fb4c2..252c585c9 100644 --- a/src/snap.h +++ b/src/snap.h @@ -20,15 +20,15 @@ #include #include #include -#include "snapper.h" +#include "grid-snapper.h" +#include "guide-snapper.h" +#include "object-snapper.h" class SPNamedView; class SnapManager { public: - SnapManager(SPNamedView const *v) : namedview(v) {} - bool willSnapSomething() const; Inkscape::SnappedPoint freeSnap(Inkscape::Snapper::PointType t, @@ -60,8 +60,12 @@ public: std::list const &it, NR::Point const &tr) const; -private: - SPNamedView const *namedview; + Inkscape::GridSnapper grid; + Inkscape::GuideSnapper guide; + Inkscape::ObjectSnapper object; + + typedef std::list SnapperList; + SnapperList getSnappers() const; }; diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 39590f826..bd7793ca1 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -15,9 +15,6 @@ #include "config.h" - - - #include "display/canvas-grid.h" #include "helper/units.h" #include "svg/svg-color.h" @@ -119,10 +116,6 @@ static void sp_namedview_init(SPNamedView *nv) nv->default_layer_id = 0; nv->connector_spacing = defaultConnSpacing; - - new (&nv->grid_snapper) Inkscape::GridSnapper(nv, 0); - new (&nv->guide_snapper) Inkscape::GuideSnapper(nv, 0); - new (&nv->object_snapper) Inkscape::ObjectSnapper(nv, 0); } static void sp_namedview_build(SPObject *object, SPDocument *document, Inkscape::XML::Node *repr) @@ -206,10 +199,6 @@ static void sp_namedview_release(SPObject *object) namedview->gridviews = g_slist_remove(namedview->gridviews, namedview->gridviews->data); } - namedview->grid_snapper.~GridSnapper(); - namedview->guide_snapper.~GuideSnapper(); - namedview->object_snapper.~ObjectSnapper(); - if (((SPObjectClass *) parent_class)->release) { ((SPObjectClass *) parent_class)->release(object); } @@ -228,13 +217,6 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va case SP_ATTR_SHOWGRID: nv->showgrid = sp_str_to_bool(value); sp_namedview_setup_grid(nv); - if (!nv->showgrid) { // grid goes off, disable snaps even if they are turned on - nv->grid_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, false); - nv->grid_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, false); - } else { // grid goes on, enable snaps if they are turned on - nv->grid_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, nv->snap_grid_bbox); - nv->grid_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, nv->snap_grid_point); - } object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SHOWGUIDES: @@ -243,13 +225,6 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va } else { nv->showguides = sp_str_to_bool(value); } - if (!nv->showguides) { // guides go off, disable snaps even if they are turned on - nv->guide_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, false); - nv->guide_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, false); - } else { // guides go on, enable snaps if they are turned on - nv->guide_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, nv->snap_guide_bbox); - nv->guide_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, nv->snap_guide_point); - } sp_namedview_setup_guides(nv); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; @@ -453,43 +428,35 @@ static void sp_namedview_set(SPObject *object, unsigned int key, const gchar *va object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_GRID_BBOX: - nv->snap_grid_bbox = (value) ? sp_str_to_bool(value) : TRUE; - nv->grid_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, nv->showgrid && nv->snap_grid_bbox); + nv->snap_manager.grid.setSnapTo(Inkscape::Snapper::BBOX_POINT, value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_GRID_POINTS: - nv->snap_grid_point = (value) ? sp_str_to_bool(value) : FALSE; - nv->grid_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, nv->showgrid && nv->snap_grid_point); + nv->snap_manager.grid.setSnapTo(Inkscape::Snapper::SNAP_POINT, value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_GUIDE_BBOX: - nv->snap_guide_bbox = (value) ? sp_str_to_bool(value) : TRUE; - nv->guide_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, nv->showguides && nv->snap_guide_bbox); + nv->snap_manager.guide.setSnapTo(Inkscape::Snapper::BBOX_POINT, value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_GUIDE_POINTS: - nv->snap_guide_point = (value) ? sp_str_to_bool(value) : FALSE; - nv->guide_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, nv->showguides && nv->snap_guide_point); + nv->snap_manager.guide.setSnapTo(Inkscape::Snapper::SNAP_POINT, value ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_OBJECT_BBOX: - nv->snap_object_bbox = (value) ? sp_str_to_bool(value) : FALSE; - nv->object_snapper.setSnapTo(Inkscape::Snapper::BBOX_POINT, nv->snap_object_bbox); + nv->snap_manager.object.setSnapTo(Inkscape::Snapper::BBOX_POINT, (value) ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_OBJECT_POINTS: - nv->snap_object_point = (value) ? sp_str_to_bool(value) : FALSE; - nv->object_snapper.setSnapTo(Inkscape::Snapper::SNAP_POINT, nv->snap_object_point); + nv->snap_manager.object.setSnapTo(Inkscape::Snapper::SNAP_POINT, (value) ? sp_str_to_bool(value) : FALSE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_OBJECT_PATHS: - nv->snap_object_paths = (value) ? sp_str_to_bool(value) : TRUE; - nv->object_snapper.setSnapToPaths(nv->snap_object_paths); + nv->snap_manager.object.setSnapToPaths(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_OBJECT_NODES: - nv->snap_object_nodes = (value) ? sp_str_to_bool(value) : TRUE; - nv->object_snapper.setSnapToNodes(nv->snap_object_nodes); + nv->snap_manager.object.setSnapToNodes(value ? sp_str_to_bool(value) : TRUE); object->requestModified(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_INKSCAPE_CURRENT_LAYER: @@ -977,15 +944,6 @@ SPMetric SPNamedView::getDefaultMetric() const } } -SPNamedView::SnapperList SPNamedView::getSnappers() const -{ - SnapperList s; - s.push_back(&grid_snapper); - s.push_back(&guide_snapper); - s.push_back(&object_snapper); - return s; -} - /* Local Variables: mode:c++ diff --git a/src/sp-namedview.h b/src/sp-namedview.h index 2265dd863..54291413e 100644 --- a/src/sp-namedview.h +++ b/src/sp-namedview.h @@ -22,10 +22,7 @@ #include "sp-object-group.h" #include "libnr/nr-point.h" #include "sp-metric.h" -#include "grid-snapper.h" -#include "guide-snapper.h" -#include "object-snapper.h" - +#include "snap.h" enum { SP_BORDER_LAYER_BOTTOM, @@ -40,15 +37,6 @@ struct SPNamedView : public SPObjectGroup { unsigned int showpageshadow : 1; unsigned int borderlayer : 2; - int snap_grid_bbox; - int snap_grid_point; - int snap_guide_bbox; - int snap_guide_point; - int snap_object_bbox; - int snap_object_point; - int snap_object_paths; - int snap_object_nodes; - double zoom; double cx; double cy; @@ -57,9 +45,7 @@ struct SPNamedView : public SPObjectGroup { gint window_x; gint window_y; - Inkscape::GridSnapper grid_snapper; - Inkscape::GuideSnapper guide_snapper; - Inkscape::ObjectSnapper object_snapper; + SnapManager snap_manager; SPUnit const *gridunit; /* Grid data is in points regardless of unit */ @@ -104,9 +90,6 @@ struct SPNamedView : public SPObjectGroup { guint getViewCount(); GSList const *getViewList() const; SPMetric getDefaultMetric() const; - - typedef std::list SnapperList; - SnapperList getSnappers() const; }; struct SPNamedViewClass { diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp index b05926b02..51d938c84 100644 --- a/src/spiral-context.cpp +++ b/src/spiral-context.cpp @@ -263,7 +263,7 @@ sp_spiral_context_root_handler(SPEventContext *event_context, GdkEvent *event) dragging = TRUE; sc->center = Inkscape::setup_for_drag_start(desktop, event_context, event); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; sc->center = m.freeSnap(Inkscape::Snapper::SNAP_POINT, sc->center, sc->item).getPoint(); sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), @@ -410,7 +410,7 @@ sp_spiral_drag(SPSpiralContext *sc, NR::Point p, guint state) NR::Point const p0 = sp_desktop_dt2root_xy_point(desktop, sc->center); NR::Point p1 = sp_desktop_dt2root_xy_point(desktop, p); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; p1 = m.freeSnap(Inkscape::Snapper::SNAP_POINT, p1, sc->item).getPoint(); SPSpiral *spiral = SP_SPIRAL(sc->item); diff --git a/src/star-context.cpp b/src/star-context.cpp index 6e10a03fa..cc3d56a11 100644 --- a/src/star-context.cpp +++ b/src/star-context.cpp @@ -275,7 +275,7 @@ static gint sp_star_context_root_handler(SPEventContext *event_context, GdkEvent sc->center = Inkscape::setup_for_drag_start(desktop, event_context, event); - SnapManager const m(desktop->namedview); + SnapManager const &m = desktop->namedview->snap_manager; sc->center = m.freeSnap(Inkscape::Snapper::SNAP_POINT, sc->center, sc->item).getPoint(); sp_canvas_item_grab(SP_CANVAS_ITEM(desktop->acetate), @@ -421,7 +421,7 @@ static void sp_star_drag(SPStarContext *sc, NR::Point p, guint state) NR::Point p1 = sp_desktop_dt2root_xy_point(desktop, p); /* Snap corner point with no constraints */ - SnapManager const m(desktop->namedview);; + SnapManager const &m = desktop->namedview->snap_manager; p1 = m.freeSnap(Inkscape::Snapper::SNAP_POINT, p1, sc->item).getPoint(); SPStar *star = SP_STAR(sc->item); diff --git a/src/ui/dialog/document-properties.cpp b/src/ui/dialog/document-properties.cpp index 09e9173ed..67006216a 100644 --- a/src/ui/dialog/document-properties.cpp +++ b/src/ui/dialog/document-properties.cpp @@ -413,18 +413,18 @@ DocumentProperties::update() _rcp_hgui.setRgba32 (nv->guidehicolor); //-----------------------------------------------------------snap - _rcbsnbo.setActive (nv->snap_object_bbox); - _rcbsnnob.setActive (nv->snap_object_point); - _rcbsnop.setActive (nv->snap_object_paths); - _rcbsnop.setActive (nv->snap_object_nodes); + _rcbsnbo.setActive (nv->snap_manager.object.getSnapTo(Inkscape::Snapper::BBOX_POINT)); + _rcbsnnob.setActive (nv->snap_manager.object.getSnapTo(Inkscape::Snapper::SNAP_POINT)); + _rcbsnop.setActive (nv->snap_manager.object.getSnapToPaths()); + _rcbsnop.setActive (nv->snap_manager.object.getSnapToNodes()); _rsu_sno.setValue (nv->objecttolerance, nv->has_abs_tolerance); - _rcbsnbb.setActive (nv->snap_grid_bbox); - _rcbsnnod.setActive (nv->snap_grid_point); + _rcbsnbb.setActive (nv->snap_manager.grid.getSnapTo(Inkscape::Snapper::BBOX_POINT)); + _rcbsnnod.setActive (nv->snap_manager.grid.getSnapTo(Inkscape::Snapper::SNAP_POINT)); _rsu_sn.setValue (nv->gridtolerance, nv->has_abs_tolerance); - _rcb_snpgui.setActive (nv->snap_guide_bbox); - _rcb_snbgui.setActive (nv->snap_guide_point); + _rcb_snpgui.setActive (nv->snap_manager.guide.getSnapTo(Inkscape::Snapper::BBOX_POINT)); + _rcb_snbgui.setActive (nv->snap_manager.guide.getSnapTo(Inkscape::Snapper::SNAP_POINT)); _rsu_gusn.setValue (nv->guidetolerance, nv->has_abs_tolerance); // _rrb_pix.setValue (true); -- 2.39.5