blob: 2cd770a5298796913b8dd8e7bfc5643727250113 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#define __SP_REPR_C__
/** \file
* A few non-inline functions of the C facade to Inkscape::XML::Node.
*/
/*
* Authors:
* Lauris Kaplinski <lauris@kaplinski.com>
* MenTaLguY <mental@rydia.net>
*
* Copyright (C) 1999-2003 authors
* Copyright (C) 2000-2002 Ximian, Inc.
* g++ port Copyright (C) 2003 Nathan Hurst
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#define noREPR_VERBOSE
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "xml/repr.h"
#include "xml/text-node.h"
#include "xml/element-node.h"
#include "xml/comment-node.h"
#include "xml/simple-document.h"
using Inkscape::Util::SharedCStringPtr;
/// Returns new node.
Inkscape::XML::Node *
sp_repr_new(gchar const *name)
{
g_return_val_if_fail(name != NULL, NULL);
g_return_val_if_fail(*name != '\0', NULL);
return new Inkscape::XML::ElementNode(g_quark_from_string(name));
}
/// Returns new textnode with content. See Inkscape::XML::TextNode.
Inkscape::XML::Node *
sp_repr_new_text(gchar const *content)
{
g_return_val_if_fail(content != NULL, NULL);
return new Inkscape::XML::TextNode(SharedCStringPtr::copy(content));
}
/// Returns new commentnode with comment. See Inkscape::XML::CommentNode.
Inkscape::XML::Node *
sp_repr_new_comment(gchar const *comment)
{
g_return_val_if_fail(comment != NULL, NULL);
return new Inkscape::XML::CommentNode(SharedCStringPtr::copy(comment));
}
/// Returns new document having as first child a node named rootname.
Inkscape::XML::Document *
sp_repr_document_new(char const *rootname)
{
Inkscape::XML::Document *doc = new Inkscape::XML::SimpleDocument(g_quark_from_static_string("xml"));
if (!strcmp(rootname, "svg:svg")) {
doc->setAttribute("version", "1.0");
doc->setAttribute("standalone", "no");
Inkscape::XML::Node *comment = sp_repr_new_comment(" Created with Inkscape (http://www.inkscape.org/) ");
doc->appendChild(comment);
Inkscape::GC::release(comment);
}
Inkscape::XML::Node *root = sp_repr_new(rootname);
doc->appendChild(root);
Inkscape::GC::release(root);
return doc;
}
/// Returns new document having reprs as first child.
Inkscape::XML::Document *
sp_repr_document_new_list(GSList *reprs)
{
g_assert(reprs != NULL);
Inkscape::XML::Document *doc = sp_repr_document_new("void");
doc->removeChild(doc->firstChild());
for ( GSList *iter = reprs ; iter ; iter = iter->next ) {
Inkscape::XML::Node *repr = (Inkscape::XML::Node *) iter->data;
doc->appendChild(repr);
}
g_assert(sp_repr_document_root(doc) != NULL);
return doc;
}
/*
Local Variables:
mode:c++
c-file-style:"stroustrup"
c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
indent-tabs-mode:nil
fill-column:99
End:
*/
// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
|