diff --git a/src/snapper.h b/src/snapper.h
index 02f7cb7e96998e6892388c326526e281a2852cba..25e345305e7e4a2bf0e199745a0fa7f2181dbc3e 100644 (file)
--- a/src/snapper.h
+++ b/src/snapper.h
class Snapper
{
public:
+ Snapper() {}
Snapper(SPNamedView const *nv, ::NR::Coord const d);
virtual ~Snapper() {}
bool getSnapTo(PointType t) const;
::NR::Coord getDistance() const;
- bool willSnapSomething() const;
+ /**
+ * \return true if this Snapper will snap at least one kind of point.
+ */
+ virtual bool ThisSnapperMightSnap() const {return (_enabled && _snap_to != 0);} // will likely be overridden by derived classes
+
+
+ void setEnabled(bool s);
SnappedPoint freeSnap(PointType t,
NR::Point const &p,
NR::Point const &p,
std::list<SPItem const *> const &it) const;
+ class ConstraintLine
+ {
+ public:
+ ConstraintLine(NR::Point const &d) : _has_point(false), _direction(d) {}
+ ConstraintLine(NR::Point const &p, NR::Point const &d) : _has_point(true), _point(p), _direction(d) {}
+
+ bool hasPoint() const {
+ return _has_point;
+ }
+
+ NR::Point getPoint() const {
+ return _point;
+ }
+
+ NR::Point getDirection() const {
+ return _direction;
+ }
+
+ private:
+
+ bool _has_point;
+ NR::Point _point;
+ NR::Point _direction;
+ };
+
SnappedPoint constrainedSnap(PointType t,
NR::Point const &p,
- NR::Point const &c,
+ ConstraintLine const &c,
SPItem const *it) const;
SnappedPoint constrainedSnap(PointType t,
NR::Point const &p,
- NR::Point const &c,
+ ConstraintLine const &c,
std::list<SPItem const *> const &it) const;
protected:
SPNamedView const *_named_view;
+ int _snap_to; ///< bitmap of point types that we will snap to
+ bool _enabled; ///< true if this snapper is enabled, otherwise false
private:
* \return Snapped point.
*/
virtual SnappedPoint _doConstrainedSnap(NR::Point const &p,
- NR::Point const &c,
+ ConstraintLine const &c,
std::list<SPItem const *> const &it) const = 0;
::NR::Coord _distance; ///< snap distance (desktop coordinates)
- int _snap_to; ///< bitmap of point types that we will snap to
};
}