X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsnapper.cpp;h=751b663e30f8393fbc83dc0d5f211a6fc892abe1;hb=325ab30ef9de67f89aed7e743d02f09c3a501c42;hp=fd05809c13af5d54c10525e7a7ed96e48f1dd9b8;hpb=f951374eef04129c6a0d213e7ab4d9ed2095ca69;p=inkscape.git diff --git a/src/snapper.cpp b/src/snapper.cpp index fd05809c1..751b663e3 100644 --- a/src/snapper.cpp +++ b/src/snapper.cpp @@ -4,168 +4,40 @@ * * Authors: * Carl Hetherington + * Diederik van Lierop * * Released under GNU GPL, read the file 'COPYING' for more information. */ -#include "libnr/nr-values.h" #include "sp-namedview.h" - -Inkscape::Snapper::PointType const Inkscape::Snapper::BBOX_POINT = 0x1; -Inkscape::Snapper::PointType const Inkscape::Snapper::SNAP_POINT = 0x2; +#include "inkscape.h" +#include "desktop.h" /** * Construct new Snapper for named view. * \param nv Named view. - * \param d Snap distance. - */ -Inkscape::Snapper::Snapper(SPNamedView const *nv, NR::Coord const d) : _named_view(nv), _distance(d) -{ - g_assert(_named_view != NULL); - g_assert(SP_IS_NAMEDVIEW(_named_view)); - - setSnapTo(BBOX_POINT, true); -} - -/** - * Set snap distance. - * \param d New snap distance (desktop coordinates) - */ -void Inkscape::Snapper::setDistance(NR::Coord const d) -{ - _distance = d; -} - -/** - * \return Snap distance (desktop coordinates) - */ -NR::Coord Inkscape::Snapper::getDistance() const -{ - return _distance; -} - -/** - * Turn on/off snapping of specific point types. - * \param t Point type. - * \param s true to snap to this point type, otherwise false; + * \param d Snap tolerance. */ -void Inkscape::Snapper::setSnapTo(PointType t, bool s) +Inkscape::Snapper::Snapper(SnapManager *sm, Geom::Coord const /*t*/) : + _snapmanager(sm), + _snap_enabled(true), + _snap_visible_only(true) { - if (s) { - _snap_to |= t; - } else { - _snap_to &= ~t; - } + g_assert(_snapmanager != NULL); } /** - * \param t Point type. - * \return true if snapper will snap this type of point, otherwise false. + * \param s true to enable this snapper, otherwise false. */ -bool Inkscape::Snapper::getSnapTo(PointType t) const -{ - return (_snap_to & t); -} -/** - * \return true if this Snapper will snap at least one kind of point. - */ -bool Inkscape::Snapper::willSnapSomething() const +void Inkscape::Snapper::setEnabled(bool s) { - return (_snap_to != 0); + _snap_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 t, - NR::Point const &p, - SPItem const *it) const +void Inkscape::Snapper::setSnapVisibleOnly(bool s) { - std::list lit; - lit.push_back(it); - return freeSnap(t, p, 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 t, - NR::Point const &p, - std::list const &it) const -{ - if (getSnapTo(t) == false) { - return SnappedPoint(p, NR_HUGE); - } - - return _doFreeSnap(p, 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 t, - NR::Point const &p, - NR::Point const &c, - SPItem const *it) const -{ - std::list lit; - lit.push_back(it); - return constrainedSnap(t, p, 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 t, - NR::Point const &p, - NR::Point const &c, - std::list const &it) const -{ - if (getSnapTo(t) == false) { - return SnappedPoint(p, NR_HUGE); - } - - return _doConstrainedSnap(p, c, it); + _snap_visible_only = s; } /*