Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_qimageio_export.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2007 Boudewijn Rempt <boud@valdyas.org>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include "ui_kis_wdg_options_qimageio.h"
9
10#include <QCheckBox>
11#include <QSlider>
12
13#include <kpluginfactory.h>
14#include <QFileInfo>
15#include <QApplication>
16
17#include <KisMimeDatabase.h>
19#include <kis_paint_device.h>
20#include <KisDocument.h>
21#include <kis_image.h>
22#include <kis_paint_layer.h>
23#include <kis_config_widget.h>
24
25K_PLUGIN_FACTORY_WITH_JSON(KisQImageIOExportFactory, "krita_qimageio_export.json", registerPlugin<KisQImageIOExport>();)
26
28{
29 Q_OBJECT
30
31public:
32 KisWdgOptionsQImageIO(QWidget *parent);
33
34 void setConfiguration(const KisPropertiesConfigurationSP cfg) override;
35 KisPropertiesConfigurationSP configuration() const override;
36};
37
39 : KisConfigWidget(parent)
40{
41 setupUi(this);
42 imageQuality->setRange(1, 100, 0);
43}
44
46{
48
49 cfg->setProperty("quality", (int)imageQuality->value());
50 return cfg;
51}
52
54{
55 imageQuality->setValue(cfg->getInt("quality", 75));
56}
57
58KisQImageIOExport::KisQImageIOExport(QObject *parent, const QVariantList &) : KisImportExportFilter(parent)
59{
60}
61
65
67{
68 QRect rc = document->savingImage()->bounds();
69 QImage image = document->savingImage()->projection()->convertToQImage(0, 0, 0, rc.width(), rc.height(), KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::internalConversionFlags());
70 int quality = -1;
71 if (configuration) {
72 quality = configuration->getInt("quality", -1);
73 }
74
75 bool result = image.save(io, QFileInfo(filename()).suffix().toLatin1(), quality);
76 if (result) {
78 }
79 else {
81 }
82}
83
85{
86 QList<QPair<KoID, KoID> > supportedColorModels;
87 supportedColorModels << QPair<KoID, KoID>()
88 << QPair<KoID, KoID>(RGBAColorModelID, Integer8BitsColorDepthID);
91}
92
93KisConfigWidget *KisQImageIOExport::createConfigurationWidget(QWidget *parent, const QByteArray& /*from*/, const QByteArray& /*to*/) const
94{
95 if (mimeType() == "image/webp") {
96 return new KisWdgOptionsQImageIO(parent);
97 }
98
99 return 0;
100}
101
103{
104 if (mimeType() == "image/webp") {
106 // the Qt webp plugin chooses 75 when passing -1 (default argument) to QImage::save()
107 cfg->setProperty("quality", 75);
108 return cfg;
109 }
110 return 0;
111}
112
113#include "kis_qimageio_export.moc"
114
VertexDescriptor get(PredecessorMap const &m, VertexDescriptor v)
const KoID Integer8BitsColorDepthID("U8", ki18n("8-bit integer/channel"))
const KoID RGBAColorModelID("RGBA", ki18n("RGB/Alpha"))
static KisExportCheckRegistry * instance()
The base class for import and export filters.
void addSupportedColorModels(QList< QPair< KoID, KoID > > supportedColorModels, const QString &name, KisExportCheckBase::Level level=KisExportCheckBase::PARTIALLY)
void addCapability(KisExportCheckBase *capability)
static QString descriptionForMimeType(const QString &mimeType)
Find the user-readable description for the given mimetype.
KisQImageIOExport(QObject *parent, const QVariantList &)
KisConfigWidget * createConfigurationWidget(QWidget *parent, const QByteArray &from, const QByteArray &to) const override
createConfigurationWidget creates a widget that can be used to define the settings for a given import...
KisPropertiesConfigurationSP defaultConfiguration(const QByteArray &, const QByteArray &) const override
defaultConfiguration defines the default settings for the given import export filter
void initializeCapabilities() override
KisImportExportErrorCode convert(KisDocument *document, QIODevice *io, KisPropertiesConfigurationSP configuration=0) override
void setConfiguration(const KisPropertiesConfigurationSP cfg) override
KisWdgOptionsQImageIO(QWidget *parent)
KisPropertiesConfigurationSP configuration() const override
QString id() const
Definition KoID.cpp:63
K_PLUGIN_FACTORY_WITH_JSON(KritaASCCDLFactory, "kritaasccdl.json", registerPlugin< KritaASCCDL >();) KritaASCCDL