summaryrefslogtreecommitdiffstats
path: root/src/snap.h
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-07-24 18:50:50 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-07-24 18:50:50 +0000
commit93cbf2b74b58f8e327bf179cba8e778a4339a3a8 (patch)
treebdf4fd04d479bdcc5705579056372a1c8da2ff21 /src/snap.h
parentupdate to trunk (diff)
parentFix a bug continuing a bezier path whith a LPE one like spiro or bspline on a... (diff)
downloadinkscape-93cbf2b74b58f8e327bf179cba8e778a4339a3a8.tar.gz
inkscape-93cbf2b74b58f8e327bf179cba8e778a4339a3a8.zip
update to trunk
(bzr r13682.1.27)
Diffstat (limited to 'src/snap.h')
-rw-r--r--src/snap.h19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/snap.h b/src/snap.h
index 20b2b246f..944c49b3e 100644
--- a/src/snap.h
+++ b/src/snap.h
@@ -136,7 +136,7 @@ public:
std::vector<Inkscape::SnapCandidatePoint> *unselected_nodes = NULL,
SPGuide *guide_to_ignore = NULL);
- void unSetup() {_rotation_center_source_items = NULL;
+ void unSetup() {_rotation_center_source_items.clear();
_guide_to_ignore = NULL;
_desktop = NULL;
_unselected_nodes = NULL;}
@@ -145,8 +145,8 @@ public:
// of this rotation center; this reference is used to make sure that we do not snap a rotation
// center to itself
// NOTE: Must be called after calling setup(), not before!
- void setRotationCenterSource(GSList *items) {_rotation_center_source_items = items;}
- GSList const *getRotationCenterSource() {return _rotation_center_source_items;}
+ void setRotationCenterSource(const std::vector<SPItem*> &items) {_rotation_center_source_items = items;}
+ const std::vector<SPItem*> &getRotationCenterSource() {return _rotation_center_source_items;}
// freeSnapReturnByRef() is preferred over freeSnap(), because it only returns a
// point if snapping has occurred (by overwriting p); otherwise p is untouched
@@ -192,12 +192,15 @@ public:
*
* @param p Source point to be snapped.
* @param bbox_to_snap Bounding box hulling the set of points, all from the same selection and having the same transformation.
+ * @param to_path_only Only snap to points on a path, such as path intersections with itself or with grids/guides. This is used for
+ * example when adding nodes to a path. We will not snap for example to grid intersections
* @return An instance of the SnappedPoint class, which holds data on the snap source, snap target, and various metrics.
*/
Inkscape::SnappedPoint freeSnap(Inkscape::SnapCandidatePoint const &p,
- Geom::OptRect const &bbox_to_snap = Geom::OptRect() ) const;
+ Geom::OptRect const &bbox_to_snap = Geom::OptRect(),
+ bool to_path_only = false) const;
- void preSnap(Inkscape::SnapCandidatePoint const &p);
+ void preSnap(Inkscape::SnapCandidatePoint const &p, bool to_path_only = false);
/**
* Snap to the closest multiple of a grid pitch.
@@ -473,9 +476,11 @@ public:
* @param isr A structure holding all snap targets that have been found so far.
* @param constrained True if the snap is constrained, e.g. for stretching or for purely horizontal translation.
* @param allowOffScreen If true, then snapping to points which are off the screen is allowed (needed for example when pasting to the grid).
+ * @param to_path_only Only snap to points on a path, such as path intersections with itself or with grids/guides. This is used for
+ * example when adding nodes to a path. We will not snap for example to grid intersections
* @return An instance of the SnappedPoint class, which holds data on the snap source, snap target, and various metrics.
*/
- Inkscape::SnappedPoint findBestSnap(Inkscape::SnapCandidatePoint const &p, IntermSnapResults const &isr, bool constrained, bool allowOffScreen = false) const;
+ Inkscape::SnappedPoint findBestSnap(Inkscape::SnapCandidatePoint const &p, IntermSnapResults const &isr, bool constrained, bool allowOffScreen = false, bool to_paths_only = false) const;
/**
* Mark the location of the snap source (not the snap target!) on the canvas by drawing a symbol.
@@ -490,7 +495,7 @@ protected:
private:
std::vector<SPItem const *> _items_to_ignore; ///< Items that should not be snapped to, for example the items that are currently being dragged. Set using the setup() method
- GSList *_rotation_center_source_items; // to avoid snapping a rotation center to itself
+ std::vector<SPItem*> _rotation_center_source_items; // to avoid snapping a rotation center to itself
SPGuide *_guide_to_ignore; ///< A guide that should not be snapped to, e.g. the guide that is currently being dragged
SPDesktop const *_desktop;
bool _snapindicator; ///< When true, an indicator will be drawn at the position that was being snapped to