summaryrefslogtreecommitdiffstats
path: root/src/display/canvas-bpath.cpp
diff options
context:
space:
mode:
authorMaximilian Albert <maximilian.albert@gmail.com>2008-07-30 10:57:19 +0000
committercilix42 <cilix42@users.sourceforge.net>2008-07-30 10:57:19 +0000
commit7b0dc58302db5c0aac748bc6c9c3b0889e109d88 (patch)
treea7a0ca6b15f15830acb7d170eaf803191a840a2d /src/display/canvas-bpath.cpp
parentNew 'internal' TextParam which doesn't display a widget (useful if the text s... (diff)
downloadinkscape-7b0dc58302db5c0aac748bc6c9c3b0889e109d88.tar.gz
inkscape-7b0dc58302db5c0aac748bc6c9c3b0889e109d88.zip
Move coordinate transform workaround to a more logical place
(bzr r6471)
Diffstat (limited to 'src/display/canvas-bpath.cpp')
-rw-r--r--src/display/canvas-bpath.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/display/canvas-bpath.cpp b/src/display/canvas-bpath.cpp
index d28f63600..5b0acb31d 100644
--- a/src/display/canvas-bpath.cpp
+++ b/src/display/canvas-bpath.cpp
@@ -42,6 +42,7 @@
**/
#include <sstream>
#include <string.h>
+#include <desktop.h>
/**
#ifdef HAVE_CONFIG_H
@@ -336,6 +337,7 @@ sp_canvastext_init (SPCanvasText *canvastext)
canvastext->affine = NR::identity();
canvastext->fontsize = 10.0;
canvastext->item = NULL;
+ canvastext->desktop = NULL;
canvastext->text = NULL;
}
@@ -426,12 +428,14 @@ sp_canvastext_update (SPCanvasItem *item, NR::Matrix const &affine, unsigned int
}
SPCanvasItem *
-sp_canvastext_new(SPCanvasGroup *parent, Geom::Point pos, char *new_text)
+sp_canvastext_new(SPCanvasGroup *parent, SPDesktop *desktop, Geom::Point pos, char *new_text)
{
SPCanvasItem *item = sp_canvas_item_new(parent, SP_TYPE_CANVASTEXT, NULL);
SPCanvasText *ct = SP_CANVASTEXT(item);
+ ct->desktop = desktop;
+
ct->s = pos;
g_free(ct->text);
ct->text = g_strdup(new_text);
@@ -463,24 +467,26 @@ sp_canvastext_set_rgba32 (SPCanvasText *ct, guint32 rgba)
void
sp_canvastext_set_coords (SPCanvasText *ct, gdouble x0, gdouble y0)
{
+ sp_canvastext_set_coords(ct, NR::Point(x0, y0));
+}
+
+void
+sp_canvastext_set_coords (SPCanvasText *ct, const NR::Point start)
+{
+ NR::Point pos = ct->desktop->doc2dt(start);
+
g_return_if_fail (ct != NULL);
g_return_if_fail (SP_IS_CANVASTEXT (ct));
- if (DIFFER (x0, ct->s[NR::X]) || DIFFER (y0, ct->s[NR::Y])) {
- ct->s[NR::X] = x0;
- ct->s[NR::Y] = y0;
+ if (DIFFER (pos[0], ct->s[NR::X]) || DIFFER (pos[1], ct->s[NR::Y])) {
+ ct->s[NR::X] = pos[0];
+ ct->s[NR::Y] = pos[1];
sp_canvas_item_request_update (SP_CANVAS_ITEM (ct));
}
sp_canvas_item_request_update (SP_CANVAS_ITEM (ct));
}
void
-sp_canvastext_set_coords (SPCanvasText *ct, const NR::Point start)
-{
- sp_canvastext_set_coords(ct, start[0], start[1]);
-}
-
-void
sp_canvastext_set_text (SPCanvasText *ct, const char* new_text)
{
g_free (ct->text);