summaryrefslogtreecommitdiffstats
path: root/src/xml/rebase-hrefs.h
blob: c67af1f23ba42d940a0b1c146d18d015078fdf6b (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
// SPDX-License-Identifier: GPL-2.0-or-later
/** @file
 * TODO: insert short description here
 *//*
 * Authors: see git history
 *
 * Copyright (C) 2014 Authors
 * Released under GNU GPL v2+, read the file 'COPYING' for more information.
 */
#ifndef REBASE_HREFS_H_SEEN
#define REBASE_HREFS_H_SEEN

#include <vector>
#include "xml/attribute-record.h"
#include "xml/node.h"

class SPDocument;

namespace Inkscape {
namespace XML {

/**
 * Change relative hrefs in doc to be relative to \a new_base instead of doc.base.
 *
 * (NULL doc base or new_base is interpreted as current working directory.)
 *
 * @param spns True if doc should contain sodipodi:absref attributes.
 */
void rebase_hrefs(SPDocument *doc, char const *new_base, bool spns);

/**
 * Change relative xlink:href attributes to be relative to \a new_abs_base instead of old_abs_base.
 *
 * Note that old_abs_base and new_abs_base must each be non-NULL, absolute directory paths.
 */
AttributeVector rebase_href_attrs(
    char const *old_abs_base,
    char const *new_abs_base,
    const AttributeVector & attributes);


// /**
//  * .
//  * @return a non-empty replacement href if needed, empty otherwise.
//  */
// std::string rebase_href_attrs( std::string const &oldAbsBase, std::string const &newAbsBase, gchar const *href, gchar const *absref = 0 );

} // namespace XML
} // namespace Inkscape


#endif /* !REBASE_HREFS_H_SEEN */

/*
  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:
*/
// vi: set autoindent shiftwidth=4 tabstop=8 filetype=cpp expandtab softtabstop=4 fileencoding=utf-8 textwidth=99 :