File indexing completed on 2024-06-16 04:16:59

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "kra_export.h"
0008 
0009 #include <QCheckBox>
0010 #include <QSlider>
0011 
0012 #include <kpluginfactory.h>
0013 #include <QFileInfo>
0014 #include <QApplication>
0015 
0016 #include <KisImportExportManager.h>
0017 #include <KoColorModelStandardIds.h>
0018 #include <KoColorSpace.h>
0019 
0020 #include <KisExportCheckRegistry.h>
0021 #include <KisDocument.h>
0022 #include <kis_image.h>
0023 #include <kis_node.h>
0024 #include <kis_group_layer.h>
0025 #include <kis_paint_layer.h>
0026 #include <kis_shape_layer.h>
0027 #include <KoProperties.h>
0028 
0029 #include "kra_converter.h"
0030 
0031 class KisExternalLayer;
0032 
0033 K_PLUGIN_FACTORY_WITH_JSON(ExportFactory, "krita_kra_export.json", registerPlugin<KraExport>();)
0034 
0035 KraExport::KraExport(QObject *parent, const QVariantList &) : KisImportExportFilter(parent)
0036 {
0037 }
0038 
0039 KraExport::~KraExport()
0040 {
0041 }
0042 
0043 KisImportExportErrorCode KraExport::convert(KisDocument *document, QIODevice *io,  KisPropertiesConfigurationSP /*configuration*/)
0044 {
0045     KisImageSP image = document->savingImage();
0046     KIS_ASSERT_RECOVER_RETURN_VALUE(image, ImportExportCodes::InternalError);
0047 
0048     KraConverter kraConverter(document, updater());
0049     KisImportExportErrorCode res = kraConverter.buildFile(io, filename(), !document->isAutosaving());
0050     dbgFile << "KraExport::convert result =" << res;
0051     return res;
0052 }
0053 
0054 void KraExport::initializeCapabilities()
0055 {
0056     // Kra supports everything, by definition
0057     KisExportCheckFactory *factory = 0;
0058     Q_FOREACH(const QString &id, KisExportCheckRegistry::instance()->keys()) {
0059         factory = KisExportCheckRegistry::instance()->get(id);
0060         addCapability(factory->create(KisExportCheckBase::SUPPORTED));
0061     }
0062 }
0063 
0064 QString KraExport::verify(const QString &fileName) const
0065 {
0066     QString error = KisImportExportFilter::verify(fileName);
0067     if (error.isEmpty()) {
0068         return KisImportExportFilter::verifyZiPBasedFiles(fileName,
0069                                                           QStringList()
0070                                                           << "mimetype"
0071                                                           << "documentinfo.xml"
0072                                                           << "maindoc.xml"
0073                                                           << "preview.png");
0074     }
0075     return error;
0076 }
0077 
0078 
0079 #include <kra_export.moc>
0080