X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsnapper.cpp;h=4dfb9042e6f74c710e78f7454bc3c2003fcfb37e;hb=876aa46cb01ee981a0a6dcc39af6fdace7be56bc;hp=17d7b7137467cf93615d3f2f790de9e0d060a77d;hpb=1397a686e882c774cfef2668f397b2c2c495df66;p=inkscape.git diff --git a/src/snapper.cpp b/src/snapper.cpp index 17d7b7137..4dfb9042e 100644 --- a/src/snapper.cpp +++ b/src/snapper.cpp @@ -4,6 +4,7 @@ * * Authors: * Carl Hetherington + * Diederik van Lierop * * Released under GNU GPL, read the file 'COPYING' for more information. */ @@ -20,9 +21,9 @@ Inkscape::Snapper::PointType const Inkscape::Snapper::SNAPPOINT_GUIDE = 0x4; /** * Construct new Snapper for named view. * \param nv Named view. - * \param d Snap distance. + * \param d Snap tolerance. */ -Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const d) : _named_view(nv), _enabled(true), _distance(d) +Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const t) : _named_view(nv), _snap_enabled(true), _snapper_tolerance(t) { g_assert(_named_view != NULL); g_assert(SP_IS_NAMEDVIEW(_named_view)); @@ -31,20 +32,25 @@ Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const d) : _named_vi } /** - * Set snap distance. - * \param d New snap distance (desktop coordinates) + * Set snap tolerance. + * \param d New snap tolerance (desktop coordinates) */ -void Inkscape::Snapper::setDistance(NR::Coord const d) +void Inkscape::Snapper::setSnapperTolerance(NR::Coord const d) { - _distance = d; + _snapper_tolerance = d; } /** - * \return Snap distance (desktop coordinates); depends on current zoom so that it's always the same in screen pixels + * \return Snap tolerance (desktop coordinates); depends on current zoom so that it's always the same in screen pixels */ -NR::Coord Inkscape::Snapper::getDistance() const +NR::Coord Inkscape::Snapper::getSnapperTolerance() const { - return _distance / SP_ACTIVE_DESKTOP->current_zoom(); + return _snapper_tolerance / SP_ACTIVE_DESKTOP->current_zoom(); +} + +bool Inkscape::Snapper::getSnapperAlwaysSnap() const +{ + return _snapper_tolerance == 10000; //TODO: Replace this threshold of 10000 by a constant; see also tolerance-slider.cpp } /** @@ -76,107 +82,7 @@ bool Inkscape::Snapper::getSnapFrom(PointType t) const void Inkscape::Snapper::setEnabled(bool s) { - _enabled = s; -} - - -/** - * Try to snap a point to whatever this snapper is interested in. Any - * snap that occurs will be to the nearest "interesting" thing (e.g. a - * grid or guide line) - * - * \param t Point type. - * \param p Point to snap (desktop coordinates). - * \param it Item that should not be snapped to. - * \return Snapped point. - */ - -Inkscape::SnappedPoint Inkscape::Snapper::freeSnap(PointType const &t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - SPItem const *it) const -{ - std::list lit; - lit.push_back(it); - return freeSnap(t, p, first_point, points_to_snap, lit); -} - - -/** - * Try to snap a point to whatever this snapper is interested in. Any - * snap that occurs will be to the nearest "interesting" thing (e.g. a - * grid or guide line) - * - * \param t Point type. - * \param p Point to snap (desktop coordinates). - * \param it Items that should not be snapped to. - * \return Snapped point. - */ - -Inkscape::SnappedPoint Inkscape::Snapper::freeSnap(PointType const &t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - std::list const &it) const -{ - if (_enabled == false || getSnapFrom(t) == false) { - return SnappedPoint(p, NR_HUGE); - } - - return _doFreeSnap(t, p, first_point, points_to_snap, it); -} - - - - -/** - * Try to snap a point to whatever this snapper is interested in, where - * the snap point is constrained to lie along a specified vector from the - * original point. - * - * \param p Point to snap (desktop coordinates). - * \param c Vector to constrain the snap to. - * \param it Items that should not be snapped to. - * \return Snapped point. - */ - -Inkscape::SnappedPoint Inkscape::Snapper::constrainedSnap(PointType const &t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - ConstraintLine const &c, - SPItem const *it) const -{ - std::list lit; - lit.push_back(it); - return constrainedSnap(t, p, first_point, points_to_snap, c, lit); -} - - -/** - * Try to snap a point to whatever this snapper is interested in, where - * the snap point is constrained to lie along a specified vector from the - * original point. - * - * \param p Point to snap (desktop coordinates). - * \param c Vector to constrain the snap to. - * \param it Items that should not be snapped to. - * \return Snapped point. - */ - -Inkscape::SnappedPoint Inkscape::Snapper::constrainedSnap(PointType const &t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - ConstraintLine const &c, - std::list const &it) const -{ - if (_enabled == false || getSnapFrom(t) == false) { - return SnappedPoint(p, NR_HUGE); - } - - return _doConstrainedSnap(t, p, first_point, points_to_snap, c, it); + _snap_enabled = s; } /*