X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-item-notify-moveto.cpp;h=0bc08a2355d84f9ad0fb5143b3b0ce8fb7ddd226;hb=11c5de79de3c200331e168a745b0505a50aeffea;hp=7781b15f0350b30c5fd937db21a792b4a11a900d;hpb=ea9f21893cf88d43370e176305fdc83aca09b49c;p=inkscape.git diff --git a/src/sp-item-notify-moveto.cpp b/src/sp-item-notify-moveto.cpp index 7781b15f0..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 ); + 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.