diff options
| author | Maximilian Albert <maximilian.albert@gmail.com> | 2008-07-30 10:57:19 +0000 |
|---|---|---|
| committer | cilix42 <cilix42@users.sourceforge.net> | 2008-07-30 10:57:19 +0000 |
| commit | 7b0dc58302db5c0aac748bc6c9c3b0889e109d88 (patch) | |
| tree | a7a0ca6b15f15830acb7d170eaf803191a840a2d /src/display/canvas-bpath.cpp | |
| parent | New 'internal' TextParam which doesn't display a widget (useful if the text s... (diff) | |
| download | inkscape-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.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); |
