File indexing completed on 2024-06-09 04:27:39

0001 /*
0002  * SPDX-FileCopyrightText: 2016 Boudewijn Rempt <boud@valdyas.org>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.0-or-later
0005  */
0006 
0007 #include "krz_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 #include <kis_config.h>
0029 #include "kra_converter.h"
0030 
0031 class KisExternalLayer;
0032 
0033 K_PLUGIN_FACTORY_WITH_JSON(KrzExportFactory, "krita_krz_export.json", registerPlugin<KrzExport>();)
0034 
0035 KrzExport::KrzExport(QObject *parent, const QVariantList &)
0036     : KisImportExportFilter(parent)
0037 {
0038 }
0039 
0040 KrzExport::~KrzExport()
0041 {
0042 }
0043 
0044 KisImportExportErrorCode KrzExport::convert(KisDocument *document, QIODevice *io,  KisPropertiesConfigurationSP /*configuration*/)
0045 {
0046     KisImageSP image = document->savingImage();
0047     KIS_ASSERT_RECOVER_RETURN_VALUE(image, ImportExportCodes::InternalError);
0048 
0049     KisConfig cfg(true);
0050     bool compress = cfg.compressKra();
0051     cfg.setCompressKra(true);
0052     KraConverter krzConverter(document, updater());
0053     KisImportExportErrorCode res = krzConverter.buildFile(io, filename(), false);
0054     cfg.setCompressKra(compress);
0055     dbgFile << "KrzExport::convert result =" << res;
0056     return res;
0057 }
0058 
0059 void KrzExport::initializeCapabilities()
0060 {
0061     // Kra supports everything, by definition
0062     KisExportCheckFactory *factory = 0;
0063     Q_FOREACH(const QString &id, KisExportCheckRegistry::instance()->keys()) {
0064         factory = KisExportCheckRegistry::instance()->get(id);
0065         addCapability(factory->create(KisExportCheckBase::SUPPORTED));
0066     }
0067 }
0068 
0069 QString KrzExport::verify(const QString &fileName) const
0070 {
0071     QString error = KisImportExportFilter::verify(fileName);
0072     if (error.isEmpty()) {
0073         return KisImportExportFilter::verifyZiPBasedFiles(fileName,
0074                                                           QStringList()
0075                                                           << "mimetype"
0076                                                           << "documentinfo.xml"
0077                                                           << "maindoc.xml"
0078                                                           << "preview.png");
0079     }
0080     return error;
0081 }
0082 
0083 
0084 #include <krz_export.moc>
0085