From 44cbde9ad07b4ab019ca52d8355cf959dbbece8e Mon Sep 17 00:00:00 2001 From: buliabyak Date: Sat, 1 Apr 2006 03:05:54 +0000 Subject: [PATCH] update (and optimize) get_nearest_position and get_point calls --- src/object-snapper.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/object-snapper.cpp b/src/object-snapper.cpp index 153abe4af..3d583b709 100644 --- a/src/object-snapper.cpp +++ b/src/object-snapper.cpp @@ -115,12 +115,16 @@ void Inkscape::ObjectSnapper::_snapPaths(Inkscape::SnappedPoint &s, NR::Matrix const i2doc = sp_item_i2doc_affine(*i); NR::Point const p_it = p_doc * i2doc.inverse(); + Path *livarot_path = Path_for_item(*i, true, true); + if (livarot_path) + livarot_path->ConvertWithBackData(0.01); + /* Look for the nearest position on this SPItem to our snap point */ - NR::Maybe const o = get_nearest_position_on_Path(*i, p_it); + NR::Maybe const o = get_nearest_position_on_Path(livarot_path, p_it); if (o != NR::Nothing() && o.assume().t >= 0 && o.assume().t <= 1) { /* Convert the nearest point back to desktop coordinates */ - NR::Point const o_it = get_point_on_Path(*i, o.assume().piece, o.assume().t); + NR::Point const o_it = get_point_on_Path(livarot_path, o.assume().piece, o.assume().t); NR::Point const o_dt = desktop->doc2dt(o_it * i2doc); NR::Coord const dist = NR::L2(o_dt - p); @@ -128,6 +132,8 @@ void Inkscape::ObjectSnapper::_snapPaths(Inkscape::SnappedPoint &s, s = SnappedPoint(o_dt, dist); } } + + delete livarot_path; } } -- 2.30.2