diff options
| author | Diederik van Lierop <mail@diedenrezi.nl> | 2008-04-30 07:32:12 +0000 |
|---|---|---|
| committer | dvlierop2 <dvlierop2@users.sourceforge.net> | 2008-04-30 07:32:12 +0000 |
| commit | 8e980bd257a274f7f32aca2e05f2a694675cf4ef (patch) | |
| tree | 4b2b83970d640c900a3eadb0266e29a92f088dde /src/object-snapper.h | |
| parent | merge redundant language-agnostics options into CPPFLAGS, split off linker flags (diff) | |
| download | inkscape-8e980bd257a274f7f32aca2e05f2a694675cf4ef.tar.gz inkscape-8e980bd257a274f7f32aca2e05f2a694675cf4ef.zip | |
- Major refactoring of snapping related code...
- Enabling snap indicator for all remaining tools
(bzr r5556)
Diffstat (limited to 'src/object-snapper.h')
| -rw-r--r-- | src/object-snapper.h | 97 |
1 files changed, 30 insertions, 67 deletions
diff --git a/src/object-snapper.h b/src/object-snapper.h index 29f595424..94c9e5a1c 100644 --- a/src/object-snapper.h +++ b/src/object-snapper.h @@ -40,57 +40,19 @@ public: ANGLED_GUIDE_ROT_SNAP, // For snapping an angled guide, while rotating it around some pivot point TRANSL_SNAP_XY}; // All other cases; for snapping to objects, other than guides - void setSnapToItemNode(bool s) { - _snap_to_itemnode = s; - } - - bool getSnapToItemNode() const { - return _snap_to_itemnode; - } - - void setSnapToItemPath(bool s) { - _snap_to_itempath = s; - } - - bool getSnapToItemPath() const { - return _snap_to_itempath; - } - - void setSnapToBBoxNode(bool s) { - _snap_to_bboxnode = s; - } - - bool getSnapToBBoxNode() const { - return _snap_to_bboxnode; - } - - void setSnapToBBoxPath(bool s) { - _snap_to_bboxpath = s; - } - - bool getSnapToBBoxPath() const { - return _snap_to_bboxpath; - } - - void setSnapToPageBorder(bool s) { - _snap_to_page_border = s; - } - - bool getSnapToPageBorder() const { - return _snap_to_page_border; - } - - void setIncludeItemCenter(bool s) { - _include_item_center = s; - } - - bool getIncludeItemCenter() const { - return _include_item_center; - } - - void setStrictSnapping(bool enabled) { - _strict_snapping = enabled; - } + void setSnapToItemNode(bool s) {_snap_to_itemnode = s;} + bool getSnapToItemNode() const {return _snap_to_itemnode;} + void setSnapToItemPath(bool s) {_snap_to_itempath = s;} + bool getSnapToItemPath() const {return _snap_to_itempath;} + void setSnapToBBoxNode(bool s) {_snap_to_bboxnode = s;} + bool getSnapToBBoxNode() const {return _snap_to_bboxnode;} + void setSnapToBBoxPath(bool s) {_snap_to_bboxpath = s;} + bool getSnapToBBoxPath() const {return _snap_to_bboxpath;} + void setSnapToPageBorder(bool s) {_snap_to_page_border = s;} + bool getSnapToPageBorder() const {return _snap_to_page_border;} + void setIncludeItemCenter(bool s) {_include_item_center = s;} + bool getIncludeItemCenter() const {return _include_item_center;} + void setStrictSnapping(bool enabled) {_strict_snapping = enabled;} void guideSnap(SnappedConstraints &sc, NR::Point const &p, @@ -99,33 +61,33 @@ public: bool ThisSnapperMightSnap() const; bool GuidesMightSnap() const; -private: - //store some lists of candidates, points and paths, so we don't have to rebuild them for each point we want to snap - std::vector<SPItem*> *_candidates; - std::vector<NR::Point> *_points_to_snap_to; - std::vector<NArtBpath*> *_bpaths_to_snap_to; - std::vector<Path*> *_paths_to_snap_to; - - void _doFreeSnap(SnappedConstraints &sc, + void freeSnap(SnappedConstraints &sc, Inkscape::Snapper::PointType const &t, NR::Point const &p, bool const &first_point, - std::vector<NR::Point> &points_to_snap, - std::vector<SPItem const *> const &it, + NR::Maybe<NR::Rect> const &bbox_to_snap, + std::vector<SPItem const *> const *it, std::vector<NR::Point> *unselected_nodes) const; - void _doConstrainedSnap(SnappedConstraints &sc, + void constrainedSnap(SnappedConstraints &sc, Inkscape::Snapper::PointType const &t, NR::Point const &p, bool const &first_point, - std::vector<NR::Point> &points_to_snap, + NR::Maybe<NR::Rect> const &bbox_to_snap, ConstraintLine const &c, - std::vector<SPItem const *> const &it) const; - + std::vector<SPItem const *> const *it) const; + +private: + //store some lists of candidates, points and paths, so we don't have to rebuild them for each point we want to snap + std::vector<SPItem*> *_candidates; + std::vector<NR::Point> *_points_to_snap_to; + std::vector<NArtBpath*> *_bpaths_to_snap_to; + std::vector<Path*> *_paths_to_snap_to; + void _findCandidates(SPObject* r, - std::vector<SPItem const *> const &it, + std::vector<SPItem const *> const *it, bool const &first_point, - std::vector<NR::Point> &points_to_snap, + NR::Rect const &bbox_to_snap, DimensionToSnap snap_dim) const; void _snapNodes(SnappedConstraints &sc, @@ -155,6 +117,7 @@ private: NR::Point const &p, bool const &first_point, ConstraintLine const &c) const; + bool isUnselectedNode(NR::Point const &point, std::vector<NR::Point> const *unselected_nodes) const; void _collectPaths(Inkscape::Snapper::PointType const &t, |
