X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsnap.h;h=05af0d20281fcbc043f9c4c4435b90987b0b083c;hb=6c3e745a94ef6b25a4ef9f018d350a7535aa45af;hp=f44df8923f68c9651db6541d1bc299bd146a1aa2;hpb=957324b1de76466c62aec3c1a8bf5b851dd322a2;p=inkscape.git diff --git a/src/snap.h b/src/snap.h index f44df8923..05af0d202 100644 --- a/src/snap.h +++ b/src/snap.h @@ -9,9 +9,11 @@ * Lauris Kaplinski * Frank Felfe * Carl Hetherington + * Diederik van Lierop * * Copyright (C) 2006-2007 Johan Engelen * Copyright (C) 2000-2002 Lauris Kaplinski + * Copyright (C) 2000-2008 Authors * * Released under GNU GPL, read the file 'COPYING' for more information */ @@ -22,8 +24,10 @@ #include #include #include + #include "guide-snapper.h" #include "object-snapper.h" +#include "snap-preferences.h" class SPNamedView; @@ -42,136 +46,120 @@ public: typedef std::list SnapperList; - bool SomeSnapperMightSnap() const; - - Inkscape::SnappedPoint freeSnap(Inkscape::Snapper::PointType t, - NR::Point const &p, - SPItem const *it) const; - - Inkscape::SnappedPoint freeSnap(Inkscape::Snapper::PointType t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - std::list const &it) const; - - Inkscape::SnappedPoint freeSnap( Inkscape::Snapper::PointType t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - std::list const &it, - SnapperList const &snappers ) const; - - Inkscape::SnappedPoint freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - SPItem const *it, - SnapperList &snappers ); - - Inkscape::SnappedPoint freeSnapAlways( Inkscape::Snapper::PointType t, - NR::Point const &p, - std::list const &it, - SnapperList &snappers ); - - Inkscape::SnappedPoint constrainedSnap(Inkscape::Snapper::PointType t, - NR::Point const &p, - Inkscape::Snapper::ConstraintLine const &c, - SPItem const *it) const; + bool someSnapperMightSnap() const; + + 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, + Geom::OptRect const &bbox_to_snap = Geom::OptRect() ) const; + + Geom::Point multipleOfGridPitch(Geom::Point const &t) const; - Inkscape::SnappedPoint constrainedSnap(Inkscape::Snapper::PointType t, - NR::Point const &p, - bool const &first_point, - std::vector &points_to_snap, - Inkscape::Snapper::ConstraintLine const &c, - std::list const &it) 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, + Geom::OptRect const &bbox_to_snap = Geom::OptRect()) const; - Inkscape::SnappedPoint guideSnap(NR::Point const &p, - NR::Point const &guide_normal) const; - - std::pair freeSnapTranslation(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - NR::Point const &tr) const; - - std::pair constrainedSnapTranslation(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - Inkscape::Snapper::ConstraintLine const &c, - NR::Point const &tr) const; - - std::pair freeSnapScale(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - NR::scale const &s, - NR::Point const &o) const; - - std::pair constrainedSnapScale(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - Inkscape::Snapper::ConstraintLine const &c, - NR::scale const &s, - NR::Point const &o) const; - - std::pair freeSnapStretch(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - NR::Coord const &s, - NR::Point const &o, - NR::Dim2 d, - bool uniform) const; - - std::pair freeSnapSkew(Inkscape::Snapper::PointType t, - std::vector const &p, - std::list const &it, - NR::Coord const &s, - NR::Point const &o, - NR::Dim2 d) const; - + void guideSnap(Geom::Point &p, Geom::Point const &guide_normal) 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::SnapPreferences::PointType point_type, + std::vector const &p, + Geom::Point const &pointer, + Inkscape::Snapper::ConstraintLine const &constraint, + 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 setIncludeItemCenter(bool enabled) { - _include_item_center = enabled; - object.setIncludeItemCenter(enabled); //store a local copy in the object-snapper - //instead of passing it through many functions - } - - bool getIncludeItemCenter() const { - return _include_item_center; - } - + SPDesktop const *getDesktop() const {return _desktop;} + SPNamedView const *getNamedView() const {return _named_view;} + SPDocument *getDocument() const; + 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 + std::vector *_items_to_ignore; + SPItem const *_item_to_ignore; + SPDesktop const *_desktop; + bool _snapindicator; + std::vector *_unselected_nodes; - std::pair _snapTransformed(Inkscape::Snapper::PointType type, - std::vector const &points, - std::list const &ignore, - bool constrained, - Inkscape::Snapper::ConstraintLine const &constraint, - Transformation transformation_type, - NR::Point const &transformation, - NR::Point const &origin, - NR::Dim2 dim, - bool uniform) const; + 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, + Geom::Point const &transformation, + Geom::Point const &origin, + Geom::Dim2 dim, + bool uniform) const; + + Inkscape::SnappedPoint findBestSnap(Geom::Point const &p, SnappedConstraints &sc, bool constrained) const; }; #endif /* !SEEN_SNAP_H */