X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsnap.h;h=ea833b0ecc64ee6f25beba6b468bda559d533f5f;hb=080e2d7eb048b981497599a862eb4e34155ff714;hp=d7050d8229fba0b09fcbc8eadc181c953f0fc567;hpb=c3fab1b28454fe4b855580cfa3d6339528df292a;p=inkscape.git diff --git a/src/snap.h b/src/snap.h index d7050d822..ea833b0ec 100644 --- a/src/snap.h +++ b/src/snap.h @@ -3,7 +3,7 @@ /** * \file snap.h - * \brief Various snapping methods. + * \brief SnapManager class. * * Authors: * Lauris Kaplinski @@ -20,12 +20,21 @@ #include #include #include +#include #include "grid-snapper.h" #include "guide-snapper.h" #include "object-snapper.h" class SPNamedView; +/// Class to coordinate snapping operations + +/** + * Each SPNamedView has one of these. It offers methods to snap points to whatever + * snappers are defined (e.g. grid, guides etc.). It also allows callers to snap + * points which have undergone some transformation (e.g. translation, scaling etc.) + */ + class SnapManager { public: @@ -75,21 +84,37 @@ public: NR::scale const &s, NR::Point const &o) const; - Inkscape::GridSnapper grid; - Inkscape::GuideSnapper guide; - Inkscape::ObjectSnapper object; + 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; + + Inkscape::GridSnapper grid; ///< grid snapper + Inkscape::GuideSnapper guide; ///< guide snapper + Inkscape::ObjectSnapper object; ///< snapper to other objects typedef std::list SnapperList; SnapperList getSnappers() const; private: - enum Transformation - { + enum Transformation { TRANSLATION, - SCALE + SCALE, + STRETCH, + SKEW }; - + std::pair _snapTransformed(Inkscape::Snapper::PointType type, std::vector const &points, std::list const &ignore, @@ -97,34 +122,11 @@ private: Inkscape::Snapper::ConstraintLine const &constraint, Transformation transformation_type, NR::Point const &transformation, - NR::Point const &origin) const; + NR::Point const &origin, + NR::Dim2 dim, + bool uniform) const; }; - -/* Single point methods */ -NR::Coord namedview_vector_snap(SPNamedView const *nv, Inkscape::Snapper::PointType t, NR::Point &req, - NR::Point const &d, std::list const &it); -NR::Coord namedview_vector_snap(SPNamedView const *nv, Inkscape::Snapper::PointType t, NR::Point &req, - NR::Point const &d, SPItem const *it); -NR::Coord namedview_dim_snap(SPNamedView const *nv, Inkscape::Snapper::PointType t, NR::Point& req, - NR::Dim2 const dim, SPItem const *it); -NR::Coord namedview_dim_snap(SPNamedView const *nv, Inkscape::Snapper::PointType t, NR::Point& req, - NR::Dim2 const dim, std::list const &it); - -/* List of points methods */ - -std::pair namedview_vector_snap_list(SPNamedView const *nv, - Inkscape::Snapper::PointType t, const std::vector &p, - NR::Point const &norm, NR::scale const &s, - std::list const &it - ); - - -NR::Coord namedview_dim_snap_list_skew(SPNamedView const *nv, Inkscape::Snapper::PointType t, - const std::vector &p, - NR::Point const &norm, double const sx, NR::Dim2 const dim); - - #endif /* !SEEN_SNAP_H */ /*