From 4e070db4a9ce8abfc2b2df871a703f46e8bb090d Mon Sep 17 00:00:00 2001 From: johncoswell Date: Wed, 28 Feb 2007 01:50:21 +0000 Subject: [PATCH] Fix issue with adding traced path to a layer with a transform --- src/flood-context.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/flood-context.cpp b/src/flood-context.cpp index d1c2ad65b..467d47de7 100644 --- a/src/flood-context.cpp +++ b/src/flood-context.cpp @@ -331,7 +331,24 @@ static void do_trace(GdkPixbuf *px, SPDesktop *desktop, NR::Matrix transform) { delete expanded_path; pathRepr->setAttribute("d", str); g_free(str); - + + // premultiply the item transform by the accumulated parent transform in the paste layer + NR::Matrix local = sp_item_i2doc_affine(SP_GROUP(desktop->currentLayer())); + if (!local.test_identity()) { + gchar const *t_str = pathRepr->attribute("transform"); + NR::Matrix item_t (NR::identity()); + if (t_str) + sp_svg_transform_read(t_str, &item_t); + item_t *= local.inverse(); + // (we're dealing with unattached repr, so we write to its attr instead of using sp_item_set_transform) + gchar affinestr[80]; + if (sp_svg_transform_write(affinestr, 79, item_t)) { + pathRepr->setAttribute("transform", affinestr); + } else { + pathRepr->setAttribute("transform", NULL); + } + } + layer_repr->addChild(pathRepr, NULL); SPObject *reprobj = document->getObjectByRepr(pathRepr); -- 2.30.2