Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_wdg_fastcolortransfer.cpp
Go to the documentation of this file.
1/*
2 * This file is part of Krita
3 *
4 * SPDX-FileCopyrightText: 2006 Cyrille Berger <cberger@cberger.net>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
10
11#include <QLayout>
12
15
17#include <KisDocument.h>
18#include <KisPart.h>
19#include <kis_image.h>
20#include <kis_iterator_ng.h>
21#include <kis_paint_device.h>
22#include <kundo2command.h>
25#include "ui_wdgfastcolortransfer.h"
27
29{
30 m_widget = new Ui_WdgFastColorTransfer();
31 m_widget->setupUi(this);
33 connect(m_widget->fileNameURLRequester, SIGNAL(textChanged(QString)), this, SIGNAL(sigConfigurationItemChanged()));
34}
35
36
41
43{
44 QVariant value;
45 if (config->getProperty("filename", value)) {
46 widget()->fileNameURLRequester->setFileName(value.toString());
47 }
48
49}
50
52{
54 QString fileName = this->widget()->fileNameURLRequester->fileName();
55
56 if (fileName.isEmpty()) return config;
57
59
60 dbgPlugins << "Use as reference file : " << fileName;
61
63
64 KisImportExportManager manager(d);
65 KisImportExportErrorCode status = manager.importDocument(fileName, QString());
66 dbgPlugins << "import returned status" << status.errorMessage();
67 KisImageWSP importedImage = d->image();
68
69 if (importedImage) {
70 ref = importedImage->projection();
71 }
72 if (!ref) {
73 dbgPlugins << "No reference image was specified.";
74 delete d;
75 return config;
76 }
77
78 // Convert ref to LAB
80 if (!labCS) {
81 dbgPlugins << "The LAB colorspace is not available.";
82 delete d;
83 return config;
84 }
85
86 dbgPlugins << "convert ref to lab";
88
89 // Compute the means and sigmas of ref
90 double meanL_ref = 0., meanA_ref = 0., meanB_ref = 0.;
91 double sigmaL_ref = 0., sigmaA_ref = 0., sigmaB_ref = 0.;
92
93 KisSequentialConstIterator refIt(ref, importedImage->bounds());
94 while (refIt.nextPixel()) {
95 const quint16* data = reinterpret_cast<const quint16*>(refIt.oldRawData());
96
97 quint32 L = data[0];
98 quint32 A = data[1];
99 quint32 B = data[2];
100
101 meanL_ref += L;
102 meanA_ref += A;
103 meanB_ref += B;
104
105 sigmaL_ref += L * L;
106 sigmaA_ref += A * A;
107 sigmaB_ref += B * B;
108
109 }
110
111 double totalSize = 1. / (importedImage->width() * importedImage->height());
112
113 meanL_ref *= totalSize;
114 meanA_ref *= totalSize;
115 meanB_ref *= totalSize;
116 sigmaL_ref *= totalSize;
117 sigmaA_ref *= totalSize;
118 sigmaB_ref *= totalSize;
119
120 dbgPlugins << totalSize << "" << meanL_ref << "" << meanA_ref << "" << meanB_ref << "" << sigmaL_ref << "" << sigmaA_ref << "" << sigmaB_ref;
121
122 config->setProperty("filename", fileName);
123 config->setProperty("meanL", meanL_ref);
124 config->setProperty("meanA", meanA_ref);
125 config->setProperty("meanB", meanB_ref);
126 config->setProperty("sigmaL", sigmaL_ref);
127 config->setProperty("sigmaA", sigmaA_ref);
128 config->setProperty("sigmaB", sigmaB_ref);
129
130 delete d;
131
132 return config;
133}
float value(const T *src, size_t ch)
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void sigConfigurationItemChanged()
static KisResourcesInterfaceSP instance()
KisPaintDeviceSP projection() const
qint32 width() const
qint32 height() const
QRect bounds() const override
The class managing all the filters.
KisImportExportErrorCode importDocument(const QString &location, const QString &mimeType)
static QStringList supportedMimeTypes(Direction direction)
void convertTo(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags(), KUndo2Command *parentCommand=nullptr, KoUpdater *progressUpdater=nullptr)
static KisPart * instance()
Definition KisPart.cpp:131
KisDocument * createDocument() const
Definition KisPart.cpp:230
ALWAYS_INLINE const quint8 * oldRawData() const
Ui_WdgFastColorTransfer * m_widget
KisPropertiesConfigurationSP configuration() const override
void setConfiguration(const KisPropertiesConfigurationSP) override
const Ui_WdgFastColorTransfer * widget() const
#define dbgPlugins
Definition kis_debug.h:51
const KoColorSpace * lab16(const QString &profileName=QString())
static KoColorSpaceRegistry * instance()