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)
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()