Krita Source Code Documentation
Loading...
Searching...
No Matches
colorspaceconversion.cc
Go to the documentation of this file.
1/*
2 * colorspaceconversion.cc -- Part of Krita
3 *
4 * SPDX-FileCopyrightText: 2004 Boudewijn Rempt (boud@valdyas.org)
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
10
11#include <QApplication>
12
13#include <klocalizedstring.h>
14#include <kis_debug.h>
15#include <kpluginfactory.h>
16
17#include <KoColorSpace.h>
18
19#include <kis_undo_adapter.h>
20#include <kis_transaction.h>
21#include <kis_annotation.h>
22#include <kis_config.h>
23#include <kis_global.h>
24#include <kis_image.h>
25#include <kis_node_manager.h>
26#include <kis_layer.h>
27#include <kis_types.h>
28
29#include <KisViewManager.h>
30#include <kis_paint_device.h>
31#include <kis_action.h>
32#include <kis_group_layer.h>
33
35#include "kis_action_manager.h"
36
37K_PLUGIN_FACTORY_WITH_JSON(ColorSpaceConversionFactory, "kritacolorspaceconversion.json", registerPlugin<ColorSpaceConversion>();)
38
39
40ColorSpaceConversion::ColorSpaceConversion(QObject *parent, const QVariantList &)
41 : KisActionPlugin(parent)
42{
43 KisAction *action = viewManager()->actionManager()->createAction("imagecolorspaceconversion");
44 connect(action, SIGNAL(triggered()), this, SLOT(slotImageColorSpaceConversion()));
45
46 action = viewManager()->actionManager()->createAction("layercolorspaceconversion");
47 connect(action, SIGNAL(triggered()), this, SLOT(slotLayerColorSpaceConversion()));
48
49 action = viewManager()->actionManager()->createAction("unifylayerscolorspace");
50 connect(action, SIGNAL(triggered()), this, SLOT(slotUnifyLayersColorSpace()));
51}
52
56
58{
59 KisImageSP image = viewManager()->image().toStrongRef();
60 if (!image) return;
61
62 KisColorSpaceConversionDialog * dlgColorSpaceConversion = new KisColorSpaceConversionDialog(viewManager()->mainWindowAsQWidget(), "ColorSpaceConversion");
63 bool allowLCMSOptimization = KisConfig(true).allowLCMSOptimization();
64 dlgColorSpaceConversion->m_page->chkAllowLCMSOptimization->setChecked(allowLCMSOptimization);
65 Q_CHECK_PTR(dlgColorSpaceConversion);
66
67 dlgColorSpaceConversion->setCaption(i18n("Convert All Layers From %1", image->colorSpace()->name()));
68 dlgColorSpaceConversion->setInitialColorSpace(image->colorSpace(), image);
69
70 if (dlgColorSpaceConversion->exec() == QDialog::Accepted) {
71
72 const KoColorSpace * cs = dlgColorSpaceConversion->colorSpace();
73 if (cs) {
74 image->convertImageColorSpace(cs,
75 dlgColorSpaceConversion->conversionIntent(),
76 dlgColorSpaceConversion->conversionFlags());
77 }
78 }
79 delete dlgColorSpaceConversion;
80}
81
83{
84 KisImageSP image = viewManager()->image().toStrongRef();
85 if (!image) return;
86
87 KisLayerSP layer = viewManager()->activeLayer();
88 if (!layer) return;
89
90 KisColorSpaceConversionDialog * dlgColorSpaceConversion = new KisColorSpaceConversionDialog(viewManager()->mainWindowAsQWidget(), "ColorSpaceConversion");
91 Q_CHECK_PTR(dlgColorSpaceConversion);
92
93 dlgColorSpaceConversion->setCaption(i18n("Convert Current Layer From %1", layer->colorSpace()->name()));
94 dlgColorSpaceConversion->setInitialColorSpace(layer->colorSpace(), 0);
95
96 if (dlgColorSpaceConversion->exec() == QDialog::Accepted) {
97 const KoColorSpace * cs = dlgColorSpaceConversion->m_page->colorSpaceSelector->currentColorSpace();
98 if (cs) {
99 KoColorConversionTransformation::ConversionFlags conversionFlags = KoColorConversionTransformation::HighQuality;
100 if (dlgColorSpaceConversion->m_page->chkBlackpointCompensation->isChecked()) conversionFlags |= KoColorConversionTransformation::BlackpointCompensation;
101 if (!dlgColorSpaceConversion->m_page->chkAllowLCMSOptimization->isChecked()) conversionFlags |= KoColorConversionTransformation::NoOptimization;
102 image->convertLayerColorSpace(layer, cs, (KoColorConversionTransformation::Intent)dlgColorSpaceConversion->m_intentButtonGroup.checkedId(), conversionFlags);
103 }
104 }
105 delete dlgColorSpaceConversion;
106}
107
109{
110 KisImageSP image = viewManager()->image().toStrongRef();
111 if (!image) return;
112 image->unifyLayersColorSpace();
113}
114
115#include "colorspaceconversion.moc"
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
ColorSpaceConversion(QObject *parent, const QVariantList &)
KisAction * createAction(const QString &name)
QPointer< KisViewManager > viewManager() const
KisActionManager * actionManager
KoColorConversionTransformation::Intent conversionIntent() const
void setInitialColorSpace(const KoColorSpace *cs, KisImageSP entireImage)
KoColorConversionTransformation::ConversionFlags conversionFlags() const
bool allowLCMSOptimization(bool defaultValue=false) const
const KoColorSpace * colorSpace() const
void unifyLayersColorSpace()
void convertImageColorSpace(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
void convertLayerColorSpace(KisNodeSP node, const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:498
This file is part of the Krita application in calligra.
K_PLUGIN_FACTORY_WITH_JSON(KritaASCCDLFactory, "kritaasccdl.json", registerPlugin< KritaASCCDL >();) KritaASCCDL
const KoColorSpace * colorSpace() const override
returns the image's colorSpace or null, if there is no image
Definition kis_layer.cc:225