File indexing completed on 2024-06-16 04:17:02

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #ifndef _KRA_CONVERTER_H_
0008 #define _KRA_CONVERTER_H_
0009 
0010 #include <QDomDocument>
0011 #include <QObject>
0012 #include <QPointer>
0013 
0014 #include <KisImportExportErrorCode.h>
0015 #include <KoProgressUpdater.h>
0016 #include <KoStore.h>
0017 #include <KoUpdater.h>
0018 #include <kis_kra_loader.h>
0019 #include <kis_kra_saver.h>
0020 #include <kis_types.h>
0021 
0022 #include "kritalibkra_export.h"
0023 
0024 class KisDocument;
0025 
0026 class KRITALIBKRA_EXPORT KraConverter : public QObject
0027 {
0028     Q_OBJECT
0029 
0030 public:
0031 
0032     KraConverter(KisDocument *doc);
0033     KraConverter(KisDocument *doc, QPointer<KoUpdater> updater);
0034     ~KraConverter() override;
0035 
0036     KisImportExportErrorCode buildImage(QIODevice *io);
0037     KisImportExportErrorCode buildFile(QIODevice *io, const QString &filename, bool addMergedImage = true);
0038     /**
0039      * Retrieve the constructed image
0040      */
0041     KisImageSP image();
0042     vKisNodeSP activeNodes();
0043     QList<KisPaintingAssistantSP> assistants();
0044     StoryboardItemList storyboardItemList();
0045     StoryboardCommentList storyboardCommentList();
0046 
0047 public Q_SLOTS:
0048 
0049     virtual void cancel();
0050 
0051 private:
0052 
0053     KisImportExportErrorCode saveRootDocuments(KoStore *store);
0054     bool saveToStream(QIODevice *dev);
0055     QDomDocument createDomDocument();
0056     KisImportExportErrorCode savePreview(KoStore *store);
0057     KisImportExportErrorCode oldLoadAndParse(KoStore *store, const QString &filename, QDomDocument &xmldoc);
0058     KisImportExportErrorCode loadXML(const QDomDocument &doc, KoStore *store);
0059     bool completeLoading(KoStore *store);
0060 
0061     void setProgress(int progress);
0062 
0063     KisDocument *m_doc {0};
0064     KisImageSP m_image;
0065 
0066     vKisNodeSP m_activeNodes;
0067     QList<KisPaintingAssistantSP> m_assistants;
0068     StoryboardItemList m_storyboardItemList;
0069     StoryboardCommentList m_storyboardCommentList;
0070     bool m_stop {false};
0071 
0072     KoStore *m_store {0};
0073     KisKraSaver *m_kraSaver {0};
0074     KisKraLoader *m_kraLoader {0};
0075     QPointer<KoUpdater> m_updater;
0076 };
0077 
0078 #endif