From 11614aeee42f0b626bd7e3f929d9119c59f7c3bd Mon Sep 17 00:00:00 2001 From: dvlierop2 Date: Sun, 25 Jan 2009 20:02:13 +0000 Subject: [PATCH] Remove some SP_ACTIVE_DESKTOP() calls --- src/desktop.h | 2 +- src/snap.cpp | 10 ++++------ src/snapped-curve.cpp | 17 ++++++----------- src/snapped-curve.h | 6 +++--- 4 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/desktop.h b/src/desktop.h index 50041543c..e1479d857 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -290,7 +290,7 @@ struct SPDesktop : public Inkscape::UI::View::View void toggleGrids(); void toggleSnapGlobal(); - bool gridsEnabled() { return grids_visible; } + bool gridsEnabled() const { return grids_visible; }; void showGrids(bool show, bool dirty_document = true); bool is_iconified(); diff --git a/src/snap.cpp b/src/snap.cpp index 7404ed12b..04521f07f 100644 --- a/src/snap.cpp +++ b/src/snap.cpp @@ -77,8 +77,7 @@ SnapManager::getGridSnappers() const SnapperList s; //FIXME: this code should actually do this: add new grid snappers that are active for this desktop. now it just adds all gridsnappers - SPDesktop* desktop = SP_ACTIVE_DESKTOP; - if (desktop && desktop->gridsEnabled()) { + if (_desktop && _desktop->gridsEnabled()) { for ( GSList const *l = _named_view->grids; l != NULL; l = l->next) { Inkscape::CanvasGrid *grid = (Inkscape::CanvasGrid*) l->data; s.push_back(grid->snapper); @@ -207,9 +206,8 @@ Geom::Point SnapManager::multipleOfGridPitch(Geom::Point const &t) const return t; //FIXME: this code should actually do this: add new grid snappers that are active for this desktop. now it just adds all gridsnappers - SPDesktop* desktop = SP_ACTIVE_DESKTOP; - if (desktop && desktop->gridsEnabled()) { + if (_desktop && _desktop->gridsEnabled()) { bool success = false; Geom::Point nearest_multiple; Geom::Coord nearest_distance = NR_HUGE; @@ -219,7 +217,7 @@ Geom::Point SnapManager::multipleOfGridPitch(Geom::Point const &t) const // this, so when using multiple grids one can get unexpected results // Cannot use getGridSnappers() because we need both the grids AND their snappers - // Therefor we iterate through all grids manually + // Therefore we iterate through all grids manually for (GSList const *l = _named_view->grids; l != NULL; l = l->next) { Inkscape::CanvasGrid *grid = (Inkscape::CanvasGrid*) l->data; const Inkscape::Snapper* snapper = grid->snapper; @@ -787,7 +785,7 @@ Inkscape::SnappedPoint SnapManager::findBestSnap(Geom::Point const &p, SnappedCo if (snapprefs.getSnapIntersectionCS()) { // search for the closest snapped intersection of curves Inkscape::SnappedPoint closestCurvesIntersection; - if (getClosestIntersectionCS(sc.curves, p, closestCurvesIntersection)) { + if (getClosestIntersectionCS(sc.curves, p, closestCurvesIntersection, _desktop->dt2doc())) { sp_list.push_back(closestCurvesIntersection); } } diff --git a/src/snapped-curve.cpp b/src/snapped-curve.cpp index 50bc83648..20d7aea33 100644 --- a/src/snapped-curve.cpp +++ b/src/snapped-curve.cpp @@ -14,10 +14,6 @@ #include <2geom/path-intersection.h> #include -// These two are needed for SP_ACTIVE_DESKTOP; this is a dirty hack -#include "desktop.h" -#include "inkscape.h" - Inkscape::SnappedCurve::SnappedCurve(Geom::Point const &snapped_point, Geom::Coord const &snapped_distance, Geom::Coord const &snapped_tolerance, bool const &always_snap, bool const &fully_constrained, Geom::Curve const *curve) { _distance = snapped_distance; @@ -50,7 +46,7 @@ Inkscape::SnappedCurve::~SnappedCurve() { } -Inkscape::SnappedPoint Inkscape::SnappedCurve::intersect(SnappedCurve const &curve, Geom::Point const &p) const +Inkscape::SnappedPoint Inkscape::SnappedCurve::intersect(SnappedCurve const &curve, Geom::Point const &p, Geom::Matrix dt2doc) const { // Calculate the intersections of two curves, which are both within snapping range, and // return only the closest intersection @@ -76,10 +72,9 @@ Inkscape::SnappedPoint Inkscape::SnappedCurve::intersect(SnappedCurve const &cur bool const use_this_as_primary = _distance < curve.getSnapDistance(); Inkscape::SnappedCurve const *primaryC = use_this_as_primary ? this : &curve; Inkscape::SnappedCurve const *secondaryC = use_this_as_primary ? &curve : this; - // The intersection should in fact be returned in desktop coordinates, but for this - // we need a desktop: this is a dirty hack - SPDesktop const *desktop = SP_ACTIVE_DESKTOP; - best_p = desktop->dt2doc(best_p); + + // The intersection should in fact be returned in desktop coordinates + best_p = best_p * dt2doc; Geom::Coord primaryDist = use_this_as_primary ? Geom::L2(best_p - this->getPoint()) : Geom::L2(best_p - curve.getPoint()); Geom::Coord secondaryDist = use_this_as_primary ? Geom::L2(best_p - curve.getPoint()) : Geom::L2(best_p - this->getPoint()); @@ -110,7 +105,7 @@ bool getClosestCurve(std::list const &list, Inkscape::Sn } // search for the closest intersection of two snapped curves, which are both member of the same collection -bool getClosestIntersectionCS(std::list const &list, Geom::Point const &p, Inkscape::SnappedPoint &result) +bool getClosestIntersectionCS(std::list const &list, Geom::Point const &p, Inkscape::SnappedPoint &result, Geom::Matrix dt2doc) { bool success = false; @@ -118,7 +113,7 @@ bool getClosestIntersectionCS(std::list const &list, Geo std::list::const_iterator j = i; j++; for (; j != list.end(); j++) { - Inkscape::SnappedPoint sp = (*i).intersect(*j, p); + Inkscape::SnappedPoint sp = (*i).intersect(*j, p, dt2doc); if (sp.getAtIntersection()) { // if it's the first point bool const c1 = !success; diff --git a/src/snapped-curve.h b/src/snapped-curve.h index 814777b68..8414c10eb 100644 --- a/src/snapped-curve.h +++ b/src/snapped-curve.h @@ -29,8 +29,8 @@ public: SnappedCurve(); SnappedCurve(Geom::Point const &snapped_point, Geom::Coord const &snapped_distance, Geom::Coord const &snapped_tolerance, bool const &always_snap, bool const &fully_constrained, Geom::Curve const *curve); ~SnappedCurve(); - Inkscape::SnappedPoint intersect(SnappedCurve const &curve, Geom::Point const &p) const; //intersect with another SnappedCurve - + Inkscape::SnappedPoint intersect(SnappedCurve const &curve, Geom::Point const &p, Geom::Matrix dt2doc) const; //intersect with another SnappedCurve + private: Geom::Curve const *_curve; }; @@ -38,7 +38,7 @@ private: } bool getClosestCurve(std::list const &list, Inkscape::SnappedCurve &result); -bool getClosestIntersectionCS(std::list const &list, Geom::Point const &p, Inkscape::SnappedPoint &result); +bool getClosestIntersectionCS(std::list const &list, Geom::Point const &p, Inkscape::SnappedPoint &result, Geom::Matrix dt2doc); #endif /* !SEEN_SNAPPEDCURVE_H */ -- 2.30.2