summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2008-03-22 21:19:28 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2008-03-22 21:19:28 +0000
commita4acda9b2ff714a63e5d1b77b701df0e8f707d0d (patch)
tree634cef00c8824ca7146815d335802ba2e6a5695a /src/ui
parentupdate to latest 2geom (diff)
downloadinkscape-a4acda9b2ff714a63e5d1b77b701df0e8f707d0d.tar.gz
inkscape-a4acda9b2ff714a63e5d1b77b701df0e8f707d0d.zip
changes to use RegisteredTransformedPoint as widget for LPE point. not complete
(bzr r5171)
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/widget/point.cpp6
-rw-r--r--src/ui/widget/point.h2
-rw-r--r--src/ui/widget/registered-widget.cpp23
-rw-r--r--src/ui/widget/registered-widget.h7
4 files changed, 31 insertions, 7 deletions
diff --git a/src/ui/widget/point.cpp b/src/ui/widget/point.cpp
index 1efb26a78..508a8d961 100644
--- a/src/ui/widget/point.cpp
+++ b/src/ui/widget/point.cpp
@@ -194,10 +194,10 @@ Point::setRange(double min, double max)
/** Sets the value of the spin button */
void
-Point::setValue(double xvalue, double yvalue)
+Point::setValue(Geom::Point & p)
{
- xwidget.setValue(xvalue);
- ywidget.setValue(yvalue);
+ xwidget.setValue(p[0]);
+ ywidget.setValue(p[1]);
}
/** Manually forces an update of the spin button */
diff --git a/src/ui/widget/point.h b/src/ui/widget/point.h
index a9be05afc..57a46de76 100644
--- a/src/ui/widget/point.h
+++ b/src/ui/widget/point.h
@@ -64,7 +64,7 @@ public:
void setDigits(unsigned digits);
void setIncrements(double step, double page);
void setRange(double min, double max);
- void setValue(double xvalue, double yvalue);
+ void setValue(Geom::Point & p);
void update();
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<Point> (label, tip),
- transform(Geom::identity())
+ to_svg(Geom::identity())
{
init_parent(key, wr, repr_in, doc_in);
@@ -493,6 +493,25 @@ RegisteredTransformedPoint::RegisteredTransformedPoint ( const Glib::ustring& la
}
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()
{
if (setProgrammatically()) {
@@ -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;
diff --git a/src/ui/widget/registered-widget.h b/src/ui/widget/registered-widget.h
index f34895620..d5f7591ee 100644
--- a/src/ui/widget/registered-widget.h
+++ b/src/ui/widget/registered-widget.h
@@ -304,12 +304,17 @@ public:
Inkscape::XML::Node* repr_in = NULL,
SPDocument *doc_in = NULL );
+ // redefine setValue, because transform must be applied
+ void setValue(Geom::Point & p);
+
+ void setTransform(Geom::Matrix & canvas_to_svg);
+
protected:
sigc::connection _value_x_changed_connection;
sigc::connection _value_y_changed_connection;
void on_value_changed();
- Geom::Matrix transform;
+ Geom::Matrix to_svg;
};