From 8e980bd257a274f7f32aca2e05f2a694675cf4ef Mon Sep 17 00:00:00 2001 From: Diederik van Lierop Date: Wed, 30 Apr 2008 07:32:12 +0000 Subject: - Major refactoring of snapping related code... - Enabling snap indicator for all remaining tools (bzr r5556) --- src/object-snapper.h | 97 ++++++++++++++++------------------------------------ 1 file changed, 30 insertions(+), 67 deletions(-) (limited to 'src/object-snapper.h') 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 *_candidates; - std::vector *_points_to_snap_to; - std::vector *_bpaths_to_snap_to; - std::vector *_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 &points_to_snap, - std::vector const &it, + NR::Maybe const &bbox_to_snap, + std::vector const *it, std::vector *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 &points_to_snap, + NR::Maybe const &bbox_to_snap, ConstraintLine const &c, - std::vector const &it) const; - + std::vector 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 *_candidates; + std::vector *_points_to_snap_to; + std::vector *_bpaths_to_snap_to; + std::vector *_paths_to_snap_to; + void _findCandidates(SPObject* r, - std::vector const &it, + std::vector const *it, bool const &first_point, - std::vector &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 const *unselected_nodes) const; void _collectPaths(Inkscape::Snapper::PointType const &t, -- cgit v1.2.3