diff --git a/src/sp-text.cpp b/src/sp-text.cpp
index 810df25307da1ddc6ba06cb249e62ab7cee6baa6..0390df6bfa7901646c55470a47dda7a8c1f6b18c 100644 (file)
--- a/src/sp-text.cpp
+++ b/src/sp-text.cpp
static void sp_text_remove_child (SPObject *object, Inkscape::XML::Node *rch);
static void sp_text_update (SPObject *object, SPCtx *ctx, guint flags);
static void sp_text_modified (SPObject *object, guint flags);
-static Inkscape::XML::Node *sp_text_write (SPObject *object, Inkscape::XML::Node *repr, guint flags);
+static Inkscape::XML::Node *sp_text_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
static void sp_text_bbox(SPItem const *item, NRRect *bbox, NR::Matrix const &transform, unsigned const flags);
static NRArenaItem *sp_text_show (SPItem *item, NRArena *arena, unsigned key, unsigned flags);
}
static Inkscape::XML::Node *
-sp_text_write (SPObject *object, Inkscape::XML::Node *repr, guint flags)
+sp_text_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
{
SPText *text = SP_TEXT (object);
if (flags & SP_OBJECT_WRITE_BUILD) {
- Inkscape::XML::Document *xml_doc = sp_document_repr_doc(SP_OBJECT_DOCUMENT(object));
if (!repr)
repr = xml_doc->createElement("svg:text");
GSList *l = NULL;
if (SP_IS_STRING(child)) {
crepr = xml_doc->createTextNode(SP_STRING(child)->string.c_str());
} else {
- crepr = child->updateRepr(NULL, flags);
+ crepr = child->updateRepr(xml_doc, NULL, flags);
}
if (crepr) l = g_slist_prepend (l, crepr);
}
SP_OBJECT_REPR(text)->setAttribute("sodipodi:linespacing", NULL);
if (((SPObjectClass *) (text_parent_class))->write)
- ((SPObjectClass *) (text_parent_class))->write (object, repr, flags);
+ ((SPObjectClass *) (text_parent_class))->write (object, xml_doc, repr, flags);
return repr;
}
// the baseline anchor of the first char
Inkscape::Text::Layout const *layout = te_get_layout((SPItem *) item);
if(layout != NULL) {
- *p = layout->characterAnchorPoint(layout->begin()) * sp_item_i2d_affine(item);
+ *p = layout->characterAnchorPoint(layout->begin()) * from_2geom(sp_item_i2d_affine(item));
}
}
dbox.y0 = 0.0;
dbox.x1 = sp_document_width (SP_OBJECT_DOCUMENT (item));
dbox.y1 = sp_document_height (SP_OBJECT_DOCUMENT (item));
- NR::Matrix const ctm = sp_item_i2d_affine(item);
+ NR::Matrix const ctm = from_2geom(sp_item_i2d_affine(item));
group->layout.print(ctx,&pbox,&dbox,&bbox,ctm);
}
@@ -554,7 +553,7 @@ unsigned SPText::_buildLayoutInput(SPObject *root, Inkscape::Text::Layout::Optio
Glib::ustring const &string = SP_STRING(child)->string;
layout.appendText(string, root->style, child, &optional_attrs, child_attrs_offset + length);
length += string.length();
- } else {
+ } else if (!sp_repr_is_meta_element(child->repr)) {
length += _buildLayoutInput(child, optional_attrs, child_attrs_offset + length, in_textpath);
}
}