From a4acda9b2ff714a63e5d1b77b701df0e8f707d0d Mon Sep 17 00:00:00 2001 From: "Johan B. C. Engelen" Date: Sat, 22 Mar 2008 21:19:28 +0000 Subject: changes to use RegisteredTransformedPoint as widget for LPE point. not complete (bzr r5171) --- src/ui/widget/registered-widget.cpp | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/ui/widget/registered-widget.cpp') diff --git a/src/ui/widget/registered-widget.cpp b/src/ui/widget/registered-widget.cpp index 1de084f5d..1fd956897 100644 --- a/src/ui/widget/registered-widget.cpp +++ b/src/ui/widget/registered-widget.cpp @@ -481,7 +481,7 @@ RegisteredTransformedPoint::RegisteredTransformedPoint ( const Glib::ustring& la const Glib::ustring& key, Registry& wr, Inkscape::XML::Node* repr_in, SPDocument* doc_in ) : RegisteredWidget (label, tip), - transform(Geom::identity()) + to_svg(Geom::identity()) { init_parent(key, wr, repr_in, doc_in); @@ -492,6 +492,25 @@ RegisteredTransformedPoint::RegisteredTransformedPoint ( const Glib::ustring& la _value_y_changed_connection = signal_y_value_changed().connect (sigc::mem_fun (*this, &RegisteredTransformedPoint::on_value_changed)); } +void +RegisteredTransformedPoint::setValue(Geom::Point & p) +{ + Geom::Point new_p = p * to_svg.inverse(); + Point::setValue(new_p); // the Point widget should display things in canvas coordinates +} + +void +RegisteredTransformedPoint::setTransform(Geom::Matrix & canvas_to_svg) +{ + // check if matrix is singular / has inverse + if ( ! canvas_to_svg.isSingular() ) { + to_svg = canvas_to_svg; + } else { + // set back to default + to_svg = Geom::identity(); + } +} + void RegisteredTransformedPoint::on_value_changed() { @@ -505,7 +524,7 @@ RegisteredTransformedPoint::on_value_changed() _wr->setUpdating (true); - Geom::Point pos = getValue() * transform; + Geom::Point pos = getValue() * to_svg; Inkscape::SVGOStringStream os; os << pos; -- cgit v1.2.3