diff options
Diffstat (limited to 'src/display/canvas-bpath.cpp')
| -rw-r--r-- | src/display/canvas-bpath.cpp | 26 |
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); |
