index c7b852af5ccc599d94fba19b4b7d813dc305d0ed..0bc08a2355d84f9ad0fb5143b3b0ce8fb7ddd226 100644 (file)
*/
#include <sp-item.h>
-#include <libnr/nr-matrix-translate-ops.h>
+#include <2geom/transforms.h>
#include <sp-guide.h>
#include <sp-item-rm-unsatisfied-cns.h>
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<NR::Point> 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. */
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.