summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2006-05-03 11:01:57 +0000
committercth103 <cth103@users.sourceforge.net>2006-05-03 11:01:57 +0000
commit672c5870a6c912439bc0fc2655ed4368b2007082 (patch)
tree6435ef7371b017bb318cab12ef82864086826cd7 /src
parentsmall update for 1480247 fix (cleaned up the redundant code) (diff)
downloadinkscape-672c5870a6c912439bc0fc2655ed4368b2007082.tar.gz
inkscape-672c5870a6c912439bc0fc2655ed4368b2007082.zip
Give SPNamedView a SnapManager instance and use it for all management of snapping settings.
(bzr r701)
Diffstat (limited to 'src')
-rw-r--r--src/arc-context.cpp2
-rw-r--r--src/connector-context.cpp5
-rw-r--r--src/context-fns.cpp3
-rw-r--r--src/desktop.cpp21
-rw-r--r--src/draw-context.cpp6
-rw-r--r--src/nodepath.cpp2
-rw-r--r--src/object-edit.cpp3
-rw-r--r--src/pencil-context.cpp5
-rw-r--r--src/rect-context.cpp2
-rw-r--r--src/selection-chemistry.cpp2
-rw-r--r--src/seltrans.cpp4
-rw-r--r--src/snap.cpp33
-rw-r--r--src/snap.h14
-rw-r--r--src/sp-namedview.cpp58
-rw-r--r--src/sp-namedview.h21
-rw-r--r--src/spiral-context.cpp4
-rw-r--r--src/star-context.cpp4
-rw-r--r--src/ui/dialog/document-properties.cpp16
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 <style.h>
#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 <libnr/nr-scale-ops.h>
#include <libnr/nr-values.h>
+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<NR::Coord, bool> 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<NR::Point>::const_iterator i = p.begin(); i != p.end(); i++) {
@@ -283,7 +291,7 @@ std::pair<double, bool> 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<double, bool> namedview_dim_snap_list_scale(SPNamedView const *nv, Ink
double const sx, NR::Dim2 dim,
std::list<const SPItem *> 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<NR::Point> &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 <libnr/nr-coord.h>
#include <libnr/nr-dim2.h>
#include <libnr/nr-forward.h>
-#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<SPItem const *> const &it,
NR::Point const &tr) const;
-private:
- SPNamedView const *namedview;
+ Inkscape::GridSnapper grid;
+ Inkscape::GuideSnapper guide;
+ Inkscape::ObjectSnapper object;
+
+ typedef std::list<const Inkscape::Snapper*> 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<const Inkscape::Snapper *> 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);