Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_kra_savexml_visitor.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2002 Patrick Julien <freak@codepimps.org>
3 * SPDX-FileCopyrightText: 2005 C. Boemann <cbo@boemann.dk>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7#ifndef KIS_KRA_SAVEXML_VISITOR_H_
8#define KIS_KRA_SAVEXML_VISITOR_H_
9
10#include <QDomDocument>
11#include <QDomElement>
12#include <QStringList>
13
14#include "kis_node_visitor.h"
15#include "kis_types.h"
16#include "kritalibkra_export.h"
17
18class KRITALIBKRA_EXPORT KisSaveXmlVisitor : public KisNodeVisitor
19{
20public:
21 KisSaveXmlVisitor(QDomDocument doc, const QDomElement & element, quint32 &count, const QString &url, bool root);
22
23 void setSelectedNodes(vKisNodeSP selectedNodes);
24
26
27 QStringList errorMessages() const;
28
29public:
30
31 bool visit(KisNode*) override {
32 return true;
33 }
34 bool visit(KisExternalLayer *) override;
35 bool visit(KisPaintLayer *layer) override;
36 bool visit(KisGroupLayer *layer) override;
37 bool visit(KisAdjustmentLayer* layer) override;
38 bool visit(KisGeneratorLayer *layer) override;
39 bool visit(KisCloneLayer *layer) override;
40 bool visit(KisFilterMask *mask) override;
41 bool visit(KisTransformMask *mask) override;
42 bool visit(KisTransparencyMask *mask) override;
43 bool visit(KisSelectionMask *mask) override;
44 bool visit(KisColorizeMask *mask) override;
45
46 QMap<const KisNode*, QString> nodeFileNames() {
47 return m_nodeFileNames;
48 }
49
50 QMap<const KisNode*, QString> keyframeFileNames() {
51 return m_keyframeFileNames;
52 }
53
54public:
55 QDomElement savePaintLayerAttributes(KisPaintLayer *layer, QDomDocument &doc, bool saveLayerOffset);
56
57 // used by EXR to save properties of Krita layers inside .exr
58 static void loadPaintLayerAttributes(const QDomElement &el, KisPaintLayer *layer, bool loadLayerOffset);
59
60private:
61 static void loadLayerAttributes(const QDomElement &el, KisLayer *layer);
62
63private:
64
65 void saveLayer(QDomElement & el, const QString & layerType, const KisLayer * layer);
66 void saveMask(QDomElement & el, const QString & maskType, const KisMaskSP mask);
67 bool saveMasks(KisNode * node, QDomElement & layerElement);
68 void saveNodeKeyframes(const KisNode *node, QString filename, QDomElement& el);
69
70 friend class KisKraSaveXmlVisitorTest;
71
73 QMap<const KisNode*, QString> m_nodeFileNames;
74 QMap<const KisNode*, QString> m_keyframeFileNames;
75 QDomDocument m_doc;
76 QDomElement m_elem;
77 quint32 &m_count;
78 QString m_url;
79 bool m_root;
81
82 bool saveReferenceImagesLayer(KisExternalLayer *layer);
83};
84
85#endif
86
virtual bool visit(KisNode *node)=0
QMap< const KisNode *, QString > keyframeFileNames()
QMap< const KisNode *, QString > nodeFileNames()
bool visit(KisNode *) override
QMap< const KisNode *, QString > m_nodeFileNames
QMap< const KisNode *, QString > m_keyframeFileNames