diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2009-01-31 13:51:52 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2009-01-31 13:51:52 +0000 |
| commit | 07d32ff9bade493f2549e8e90c32d11ba12b199d (patch) | |
| tree | e23af978f1919af10ac80d315f90d8323bb2d0ee /src/display | |
| parent | * [INTL:pl] Further small updates to the Polish translation (diff) | |
| download | inkscape-07d32ff9bade493f2549e8e90c32d11ba12b199d.tar.gz inkscape-07d32ff9bade493f2549e8e90c32d11ba12b199d.zip | |
Store the snapper tolerances in the snap-preferences instead of in each snapper individualy. This way we don't have to update all snappers when the namedview has been updated (and we can get rid of the _update_snap_distances() call)
(bzr r7208)
Diffstat (limited to 'src/display')
| -rw-r--r-- | src/display/canvas-axonomgrid.cpp | 15 | ||||
| -rw-r--r-- | src/display/canvas-axonomgrid.h | 3 | ||||
| -rw-r--r-- | src/display/canvas-grid.cpp | 15 | ||||
| -rw-r--r-- | src/display/canvas-grid.h | 3 |
4 files changed, 36 insertions, 0 deletions
diff --git a/src/display/canvas-axonomgrid.cpp b/src/display/canvas-axonomgrid.cpp index 283f58a01..076dcdd33 100644 --- a/src/display/canvas-axonomgrid.cpp +++ b/src/display/canvas-axonomgrid.cpp @@ -661,6 +661,21 @@ CanvasAxonomGridSnapper::CanvasAxonomGridSnapper(CanvasAxonomGrid *grid, SnapMan this->grid = grid; } +/** + * \return Snap tolerance (desktop coordinates); depends on current zoom so that it's always the same in screen pixels + */ +Geom::Coord CanvasAxonomGridSnapper::getSnapperTolerance() const +{ + SPDesktop const *dt = _snapmanager->getDesktop(); + double const zoom = dt ? dt->current_zoom() : 1; + return _snapmanager->snapprefs.getGridTolerance() / zoom; +} + +bool CanvasAxonomGridSnapper::getSnapperAlwaysSnap() const +{ + return _snapmanager->snapprefs.getGridTolerance() == 10000; //TODO: Replace this threshold of 10000 by a constant; see also tolerance-slider.cpp +} + LineSnapper::LineList CanvasAxonomGridSnapper::_getSnapLines(Geom::Point const &p) const { diff --git a/src/display/canvas-axonomgrid.h b/src/display/canvas-axonomgrid.h index 9067e2e13..4849f08ad 100644 --- a/src/display/canvas-axonomgrid.h +++ b/src/display/canvas-axonomgrid.h @@ -73,6 +73,9 @@ public: CanvasAxonomGridSnapper(CanvasAxonomGrid *grid, SnapManager *sm, Geom::Coord const d); bool ThisSnapperMightSnap() const; + Geom::Coord getSnapperTolerance() const; //returns the tolerance of the snapper in screen pixels (i.e. independent of zoom) + bool getSnapperAlwaysSnap() const; //if true, then the snapper will always snap, regardless of its tolerance + private: LineList _getSnapLines(Geom::Point const &p) const; void _addSnappedLine(SnappedConstraints &sc, Geom::Point const snapped_point, Geom::Coord const snapped_distance, Geom::Point const normal_to_line, const Geom::Point point_on_line) const; diff --git a/src/display/canvas-grid.cpp b/src/display/canvas-grid.cpp index 0d5cabd8d..49a1211eb 100644 --- a/src/display/canvas-grid.cpp +++ b/src/display/canvas-grid.cpp @@ -953,6 +953,21 @@ CanvasXYGridSnapper::CanvasXYGridSnapper(CanvasXYGrid *grid, SnapManager *sm, Ge this->grid = grid; } +/** + * \return Snap tolerance (desktop coordinates); depends on current zoom so that it's always the same in screen pixels + */ +Geom::Coord CanvasXYGridSnapper::getSnapperTolerance() const +{ + SPDesktop const *dt = _snapmanager->getDesktop(); + double const zoom = dt ? dt->current_zoom() : 1; + return _snapmanager->snapprefs.getGridTolerance() / zoom; +} + +bool CanvasXYGridSnapper::getSnapperAlwaysSnap() const +{ + return _snapmanager->snapprefs.getGridTolerance() == 10000; //TODO: Replace this threshold of 10000 by a constant; see also tolerance-slider.cpp +} + LineSnapper::LineList CanvasXYGridSnapper::_getSnapLines(Geom::Point const &p) const { diff --git a/src/display/canvas-grid.h b/src/display/canvas-grid.h index e4bd01414..85e890fef 100644 --- a/src/display/canvas-grid.h +++ b/src/display/canvas-grid.h @@ -161,6 +161,9 @@ public: CanvasXYGridSnapper(CanvasXYGrid *grid, SnapManager *sm, Geom::Coord const d); bool ThisSnapperMightSnap() const; + Geom::Coord getSnapperTolerance() const; //returns the tolerance of the snapper in screen pixels (i.e. independent of zoom) + bool getSnapperAlwaysSnap() const; //if true, then the snapper will always snap, regardless of its tolerance + private: LineList _getSnapLines(Geom::Point const &p) const; void _addSnappedLine(SnappedConstraints &sc, Geom::Point const snapped_point, Geom::Coord const snapped_distance, Geom::Point const normal_to_line, const Geom::Point point_on_line) const; |
