X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-item-notify-moveto.cpp;h=0bc08a2355d84f9ad0fb5143b3b0ce8fb7ddd226;hb=76750e3eb87017e5b9aefb0c0148a67bbb3d7232;hp=c7b852af5ccc599d94fba19b4b7d813dc305d0ed;hpb=7b83afd088bf778cb0cbf63e04d84e055926f216;p=inkscape.git diff --git a/src/sp-item-notify-moveto.cpp b/src/sp-item-notify-moveto.cpp index c7b852af5..0bc08a235 100644 --- a/src/sp-item-notify-moveto.cpp +++ b/src/sp-item-notify-moveto.cpp @@ -3,7 +3,7 @@ */ #include -#include +#include <2geom/transforms.h> #include #include using std::vector; @@ -20,15 +20,15 @@ void sp_item_notify_moveto(SPItem &item, SPGuide const &mv_g, int const snappoin { g_return_if_fail(SP_IS_ITEM(&item)); g_return_if_fail( unsigned(snappoint_ix) < 8 ); - NR::Point const dir( mv_g.normal_to_line ); + Geom::Point const dir( mv_g.normal_to_line ); double const dir_lensq(dot(dir, dir)); g_return_if_fail( dir_lensq != 0 ); - vector snappoints; - sp_item_snappoints(&item, true, SnapPointsIter(snappoints)); + SnapPointsWithType snappoints; + sp_item_snappoints(&item, false, snappoints, NULL); g_return_if_fail( snappoint_ix < int(snappoints.size()) ); - double const pos0 = dot(dir, snappoints[snappoint_ix]); + double const pos0 = dot(dir, snappoints[snappoint_ix].first); /// \todo effic: skip if mv_g is already satisfied. /* Translate along dir to make dot(dir, snappoints(item)[snappoint_ix]) == position. */ @@ -39,7 +39,7 @@ void sp_item_notify_moveto(SPItem &item, SPGuide const &mv_g, int const snappoin pos0 + s * dot(dir, dir) = position. s * lensq(dir) = position - pos0. s = (position - pos0) / dot(dir, dir). */ - NR::translate const tr( ( position - pos0 ) + Geom::Translate const tr( ( position - pos0 ) * ( dir / dir_lensq ) ); sp_item_set_i2d_affine(&item, sp_item_i2d_affine(&item) * tr); /// \todo Reget snappoints, check satisfied.