98d457088856bb482adec17ffb4ae3628381aedc
1 #ifndef SEEN_OBJECT_SNAPPER_H
2 #define SEEN_OBJECT_SNAPPER_H
4 /**
5 * \file object-snapper.h
6 * \brief Snapping things to objects.
7 *
8 * Authors:
9 * Carl Hetherington <inkscape@carlh.net>
10 *
11 * Copyright (C) 2005 Authors
12 *
13 * Released under GNU GPL, read the file 'COPYING' for more information
14 */
16 #include "snapper.h"
18 struct SPNamedView;
19 struct SPItem;
20 struct SPObject;
22 namespace Inkscape
23 {
25 class ObjectSnapper : public Snapper
26 {
27 public:
28 ObjectSnapper() {}
29 ObjectSnapper(SPNamedView const *nv, NR::Coord const d);
31 void setSnapToNodes(bool s) {
32 _snap_to_nodes = s;
33 }
35 bool getSnapToNodes() const {
36 return _snap_to_nodes;
37 }
39 void setSnapToPaths(bool s) {
40 _snap_to_paths = s;
41 }
43 bool getSnapToPaths() const {
44 return _snap_to_paths;
45 }
47 private:
48 virtual SnappedPoint _doFreeSnap(NR::Point const &p,
49 std::list<SPItem const *> const &it) const;
51 SnappedPoint _doConstrainedSnap(NR::Point const &p,
52 NR::Point const &c,
53 std::list<SPItem const *> const &it) const;
55 void _findCandidates(std::list<SPItem*>& c,
56 SPObject* r,
57 std::list<SPItem const *> const &it,
58 NR::Point const &p) const;
60 void _snapNodes(Inkscape::SnappedPoint &s, NR::Point const &p, std::list<SPItem*> const &cand) const;
61 void _snapPaths(Inkscape::SnappedPoint &s, NR::Point const &p, std::list<SPItem*> const &cand) const;
63 bool _snap_to_nodes;
64 bool _snap_to_paths;
65 };
67 }
69 #endif