diff options
| author | miklosh <miklosh@users.sourceforge.net> | 2007-07-28 14:31:25 +0000 |
|---|---|---|
| committer | miklosh <miklosh@users.sourceforge.net> | 2007-07-28 14:31:25 +0000 |
| commit | be9651731c970491aa9aaa93a126203532231e7e (patch) | |
| tree | cc23a2758e92fe67ddc4b45a4818e738679f2923 /src/extension/internal/pdfinput/svg-builder.cpp | |
| parent | Reworked text state handling so that now SvgBuilder keeps track of the curren... (diff) | |
| download | inkscape-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.cpp | 25 |
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; } |
