X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsnap.h;h=05af0d20281fcbc043f9c4c4435b90987b0b083c;hb=6c3e745a94ef6b25a4ef9f018d350a7535aa45af;hp=f11b7c743ad45193d5bcdf0efd5cc36f1495b2f0;hpb=c3d71eeb981927093e5a6284277181d1d6b83985;p=inkscape.git diff --git a/src/snap.h b/src/snap.h index f11b7c743..05af0d202 100644 --- a/src/snap.h +++ b/src/snap.h @@ -27,6 +27,7 @@ #include "guide-snapper.h" #include "object-snapper.h" +#include "snap-preferences.h" class SPNamedView; @@ -45,134 +46,120 @@ public: typedef std::list SnapperList; - bool SomeSnapperMightSnap() const; + bool someSnapperMightSnap() const; - void setup(SPDesktop const *desktop_for_snapindicator = NULL, SPItem const *item_to_ignore = NULL, std::vector *unselected_nodes = NULL); - void setup(SPDesktop const *desktop_for_snapindicator, std::vector &items_to_ignore, std::vector *unselected_nodes = NULL); - - Inkscape::SnappedPoint freeSnap(Inkscape::Snapper::PointType point_type, - NR::Point const &p, + void setup(SPDesktop const *desktop, bool snapindicator = true, SPItem const *item_to_ignore = NULL, std::vector *unselected_nodes = NULL); + void setup(SPDesktop const *desktop, bool snapindicator, std::vector &items_to_ignore, std::vector *unselected_nodes = NULL); + + // freeSnapReturnByRef() is preferred over freeSnap(), because it only returns a + // point if snapping has occured (by overwriting p); otherwise p is untouched + void freeSnapReturnByRef(Inkscape::SnapPreferences::PointType point_type, + Geom::Point &p, + bool first_point = true, + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; + + Inkscape::SnappedPoint freeSnap(Inkscape::SnapPreferences::PointType point_type, + Geom::Point const &p, bool first_point = true, - NR::Maybe const &bbox_to_snap = NR::Nothing()) const; - - Inkscape::SnappedPoint constrainedSnap(Inkscape::Snapper::PointType point_type, - NR::Point const &p, + Geom::OptRect const &bbox_to_snap = Geom::OptRect() ) const; + + Geom::Point multipleOfGridPitch(Geom::Point const &t) const; + + // constrainedSnapReturnByRef() is preferred over constrainedSnap(), because it only returns a + // point, by overwriting p, if snapping has occured; otherwise p is untouched + void constrainedSnapReturnByRef(Inkscape::SnapPreferences::PointType point_type, + Geom::Point &p, + Inkscape::Snapper::ConstraintLine const &constraint, + bool first_point = true, + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; + + Inkscape::SnappedPoint constrainedSnap(Inkscape::SnapPreferences::PointType point_type, + Geom::Point const &p, Inkscape::Snapper::ConstraintLine const &constraint, bool first_point = true, - NR::Maybe const &bbox_to_snap = NR::Nothing()) const; + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; - Inkscape::SnappedPoint guideSnap(NR::Point const &p, - NR::Point const &guide_normal) const; + void guideSnap(Geom::Point &p, Geom::Point const &guide_normal) const; - Inkscape::SnappedPoint freeSnapTranslation(Inkscape::Snapper::PointType point_type, - std::vector const &p, - NR::Point const &tr) const; + Inkscape::SnappedPoint freeSnapTranslation(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Geom::Point const &tr) const; - Inkscape::SnappedPoint constrainedSnapTranslation(Inkscape::Snapper::PointType point_type, - std::vector const &p, + Inkscape::SnappedPoint constrainedSnapTranslation(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, Inkscape::Snapper::ConstraintLine const &constraint, - NR::Point const &tr) const; - - Inkscape::SnappedPoint freeSnapScale(Inkscape::Snapper::PointType point_type, - std::vector const &p, - NR::scale const &s, - NR::Point const &o) const; - - Inkscape::SnappedPoint constrainedSnapScale(Inkscape::Snapper::PointType point_type, - std::vector const &p, - NR::scale const &s, - NR::Point const &o) const; - - Inkscape::SnappedPoint constrainedSnapStretch(Inkscape::Snapper::PointType point_type, - std::vector const &p, - NR::Coord const &s, - NR::Point const &o, - NR::Dim2 d, - bool uniform) const; - - Inkscape::SnappedPoint freeSnapSkew(Inkscape::Snapper::PointType point_type, - std::vector const &p, - NR::Coord const &s, - NR::Point const &o, - NR::Dim2 d) const; - - //Inkscape::SnappedPoint guideSnap(NR::Point const &p, - // Inkscape::ObjectSnapper::DimensionToSnap const snap_dim) const; - - + Geom::Point const &tr) const; + + Inkscape::SnappedPoint freeSnapScale(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Geom::Scale const &s, + Geom::Point const &o) const; + + Inkscape::SnappedPoint constrainedSnapScale(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Geom::Scale const &s, + Geom::Point const &o) const; + + Inkscape::SnappedPoint constrainedSnapStretch(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Geom::Coord const &s, + Geom::Point const &o, + Geom::Dim2 d, + bool uniform) const; + + Inkscape::SnappedPoint constrainedSnapSkew(Inkscape::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Inkscape::Snapper::ConstraintLine const &constraint, + Geom::Point const &s, // s[0] = skew factor, s[1] = scale factor + Geom::Point const &o, + Geom::Dim2 d) const; + Inkscape::GuideSnapper guide; ///< guide snapper Inkscape::ObjectSnapper object; ///< snapper to other objects + Inkscape::SnapPreferences snapprefs; SnapperList getSnappers() const; SnapperList getGridSnappers() const; - void setSnapModeBBox(bool enabled); - void setSnapModeNode(bool enabled); - void setSnapModeGuide(bool enabled); - bool getSnapModeBBox() const; - bool getSnapModeNode() const; - bool getSnapModeGuide() const; - - void setSnapIntersectionGG(bool enabled) {_intersectionGG = enabled;} - void setSnapIntersectionLS(bool enabled) {_intersectionLS = enabled;} - bool getSnapIntersectionGG() {return _intersectionGG;} - bool getSnapIntersectionLS() {return _intersectionLS;} - - void setIncludeItemCenter(bool enabled) { - _include_item_center = enabled; - // also store a local copy in the object-snapper instead of passing it through many functions - object.setIncludeItemCenter(enabled); - } - - bool getIncludeItemCenter() const { - return _include_item_center; - } + SPDesktop const *getDesktop() const {return _desktop;} + SPNamedView const *getNamedView() const {return _named_view;} + SPDocument *getDocument() const; - void setSnapEnabledGlobally(bool enabled) { - _snap_enabled_globally = enabled; - } - - bool getSnapEnabledGlobally() const { - return _snap_enabled_globally; - } - - void toggleSnapEnabledGlobally() { - _snap_enabled_globally = !_snap_enabled_globally; - } - protected: SPNamedView const *_named_view; private: - - enum Transformation { + enum Transformation { TRANSLATION, SCALE, STRETCH, SKEW }; - bool _include_item_center; //If true, snapping nodes will also snap the item's center - bool _intersectionGG; - bool _intersectionLS; - bool _snap_enabled_globally; //Toggles ALL snapping - std::vector *_items_to_ignore; SPItem const *_item_to_ignore; - SPDesktop const *_desktop_for_snapindicator; - std::vector *_unselected_nodes; + SPDesktop const *_desktop; + bool _snapindicator; + std::vector *_unselected_nodes; - Inkscape::SnappedPoint _snapTransformed(Inkscape::Snapper::PointType type, - std::vector const &points, + Inkscape::SnappedPoint _snapTransformed(Inkscape::SnapPreferences::PointType type, + std::vector const &points, + Geom::Point const &pointer, bool constrained, Inkscape::Snapper::ConstraintLine const &constraint, Transformation transformation_type, - NR::Point const &transformation, - NR::Point const &origin, - NR::Dim2 dim, + Geom::Point const &transformation, + Geom::Point const &origin, + Geom::Dim2 dim, bool uniform) const; - Inkscape::SnappedPoint findBestSnap(NR::Point const &p, SnappedConstraints &sc, bool constrained) const; + Inkscape::SnappedPoint findBestSnap(Geom::Point const &p, SnappedConstraints &sc, bool constrained) const; }; #endif /* !SEEN_SNAP_H */