diff --git a/src/snapper.h b/src/snapper.h
index 4c71be7f2e7685ed83b7166935e04d6895483bbc..25e345305e7e4a2bf0e199745a0fa7f2181dbc3e 100644 (file)
--- a/src/snapper.h
+++ b/src/snapper.h
class Snapper
{
public:
- Snapper(SPNamedView const *nv, NR::Coord const d);
+ Snapper() {}
+ Snapper(SPNamedView const *nv, ::NR::Coord const d);
virtual ~Snapper() {}
/// Point types to snap.
typedef std::pair<PointType, NR::Point> PointWithType;
void setSnapTo(PointType t, bool s);
- void setDistance(NR::Coord d);
+ void setDistance(::NR::Coord d);
bool getSnapTo(PointType t) const;
- NR::Coord getDistance() const;
+ ::NR::Coord getDistance() 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
- bool willSnapSomething() const;
+
+ 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
+ ::NR::Coord _distance; ///< snap distance (desktop coordinates)
};
}