summaryrefslogtreecommitdiffstats
path: root/src/extension/internal/pdfinput/svg-builder.cpp
diff options
context:
space:
mode:
authormiklosh <miklosh@users.sourceforge.net>2007-07-28 14:31:25 +0000
committermiklosh <miklosh@users.sourceforge.net>2007-07-28 14:31:25 +0000
commitbe9651731c970491aa9aaa93a126203532231e7e (patch)
treecc23a2758e92fe67ddc4b45a4818e738679f2923 /src/extension/internal/pdfinput/svg-builder.cpp
parentReworked text state handling so that now SvgBuilder keeps track of the curren... (diff)
downloadinkscape-be9651731c970491aa9aaa93a126203532231e7e.tar.gz
inkscape-be9651731c970491aa9aaa93a126203532231e7e.zip
Set top-level groups as layers with the name of the PDF document
(bzr r3330)
Diffstat (limited to '')
-rw-r--r--src/extension/internal/pdfinput/svg-builder.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/extension/internal/pdfinput/svg-builder.cpp b/src/extension/internal/pdfinput/svg-builder.cpp
index f640ded35..b0c6c8fea 100644
--- a/src/extension/internal/pdfinput/svg-builder.cpp
+++ b/src/extension/internal/pdfinput/svg-builder.cpp
@@ -69,8 +69,9 @@ SvgBuilder::SvgBuilder() {
_current_state = NULL;
}
-SvgBuilder::SvgBuilder(SPDocument *document, XRef *xref) {
+SvgBuilder::SvgBuilder(SPDocument *document, gchar *docname, XRef *xref) {
_doc = document;
+ _docname = docname;
_xref = xref;
_xml_doc = sp_document_repr_doc(_doc);
_container = _root = _doc->rroot;
@@ -80,6 +81,7 @@ SvgBuilder::SvgBuilder(SPDocument *document, XRef *xref) {
SvgBuilder::SvgBuilder(SvgBuilder *parent, Inkscape::XML::Node *root) {
_doc = parent->_doc;
+ _docname = parent->_docname;
_xref = parent->_xref;
_xml_doc = parent->_xml_doc;
_container = this->_root = root;
@@ -96,6 +98,16 @@ void SvgBuilder::setDocumentSize(double width, double height) {
this->_height = height;
}
+/**
+ * \brief Sets groupmode of the current container to 'layer' and sets its label if given
+ */
+void SvgBuilder::setAsLayer(char *layer_name) {
+ _container->setAttribute("inkscape:groupmode", "layer");
+ if (layer_name) {
+ _container->setAttribute("inkscape:label", layer_name);
+ }
+}
+
void SvgBuilder::saveState() {
_group_depth.push_back(0);
pushGroup();
@@ -114,6 +126,17 @@ Inkscape::XML::Node *SvgBuilder::pushGroup() {
_container = node;
Inkscape::GC::release(node);
_group_depth.back()++;
+ // Set as a layer if this is a top-level group
+ if ( _container->parent() == _root ) {
+ static int layer_count = 1;
+ if ( layer_count > 1 ) {
+ gchar *layer_name = g_strdup_printf("%s%d", _docname, layer_count);
+ setAsLayer(layer_name);
+ g_free(layer_name);
+ } else {
+ setAsLayer(_docname);
+ }
+ }
return _container;
}