Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDitherWidget.cpp
Go to the documentation of this file.
1/*
2 * This file is part of Krita
3 *
4 * SPDX-FileCopyrightText: 2019 Carl Olsson <carl.olsson@gmail.com>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#include "KisDitherWidget.h"
10
11#include <kpluginfactory.h>
12#include <KoUpdater.h>
16#include <KoColorSet.h>
17#include <KoPattern.h>
19#include "KisDitherUtil.h"
21
23 : QWidget(parent), Ui::KisDitherWidget()
24{
25 setupUi(this);
26
27 QObject::connect(thresholdModeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &KisDitherWidget::sigConfigurationItemChanged);
28
29 patternIconWidget->setFixedSize(64, 64);
30 patternIconWidget->setBackgroundColor(Qt::white);
32 patternIconWidget->setPopupWidget(m_ditherPatternWidget);
35
36 QObject::connect(patternValueModeComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &KisDitherWidget::sigConfigurationItemChanged);
37
38 noiseSeedLineEdit->setValidator(new QIntValidator(this));
39 QObject::connect(noiseSeedLineEdit, &QLineEdit::textChanged, this, &KisDitherWidget::sigConfigurationItemChanged);
40
41 QObject::connect(noiseSeedRandomizeButton, &QToolButton::clicked, [this](){
42 noiseSeedLineEdit->setText(QString::number(rand()));
43 });
44
45 spreadSpinBox->setPrefix(QString("%1 ").arg(i18n("Spread:")));
46 spreadSpinBox->setRange(0.0, 1.0, 3);
47 spreadSpinBox->setSingleStep(0.125);
48 QObject::connect(spreadSpinBox, QOverload<double>::of(&KisDoubleSliderSpinBox::valueChanged), this, &KisDitherWidget::sigConfigurationItemChanged);
49}
50
51void KisDitherWidget::setConfiguration(const KisFilterConfiguration &config, const QString &prefix)
52{
53 thresholdModeComboBox->setCurrentIndex(config.getInt(prefix + "thresholdMode"));
54
56 QString patternMD5 = config.getString(prefix + "md5sum");
57 QString patternName = config.getString(prefix + "pattern");
58 KoPatternSP pattern = source.bestMatch(patternMD5, "", patternName);
59
60 if (pattern) m_ditherPatternWidget->setCurrentResource(pattern);
61 patternValueModeComboBox->setCurrentIndex(config.getInt(prefix + "patternValueMode"));
62 noiseSeedLineEdit->setText(QString::number(config.getInt(prefix + "noiseSeed")));
63 spreadSpinBox->setValue(config.getDouble(prefix + "spread"));
64}
65
66void KisDitherWidget::configuration(KisPropertiesConfiguration &config, const QString &prefix) const
67{
68 config.setProperty(prefix + "thresholdMode",thresholdModeComboBox->currentIndex());
69 if (m_ditherPatternWidget->currentResource()) config.setProperty(prefix + "pattern", QVariant(m_ditherPatternWidget->currentResource()->name()));
70 config.setProperty(prefix + "patternValueMode", patternValueModeComboBox->currentIndex());
71 config.setProperty(prefix + "noiseSeed", noiseSeedLineEdit->text().toInt());
72 config.setProperty(prefix + "spread", spreadSpinBox->value());
73}
74
76{
77 config.setProperty(prefix + "thresholdMode", KisDitherUtil::ThresholdMode::Pattern);
78 config.setProperty(prefix + "pattern", "DITH 0202 GEN ");
79 config.setProperty(prefix + "patternValueMode", KisDitherUtil::PatternValueMode::Auto);
80 config.setProperty(prefix + "noiseSeed", rand());
81 config.setProperty(prefix + "spread", 1.0);
82}
83
85{
86 auto source = resourcesInterface->source<KoPattern>(ResourceType::Patterns);
87
88 QString patternMD5 = config.getString(prefix + "md5sum");
89 QString patternName = config.getString(prefix + "pattern");
90
91 return {source.bestMatchLoadResult(patternMD5, "", patternName)};
92}
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
static QList< KoResourceLoadResult > prepareLinkedResources(const KisFilterConfiguration &config, const QString &prefix, KisResourcesInterfaceSP resourcesInterface)
KisResourceItemChooser * m_ditherPatternWidget
void setConfiguration(const KisFilterConfiguration &config, const QString &prefix="")
void sigConfigurationItemChanged()
static void factoryConfiguration(KisPropertiesConfiguration &config, const QString &prefix="")
KisDitherWidget(QWidget *parent=0)
void configuration(KisPropertiesConfiguration &config, const QString &prefix="") const
void setResource(KoResourceSP resource)
void setCurrentResource(KoResourceSP resource)
Sets the item representing the resource as selected.
void resourceSelected(KoResourceSP resource)
Emitted when a resource was selected.
Write API docs here.
Definition KoPattern.h:21
const QString Patterns
KisResourcesInterfaceSP resourcesInterface
QString getString(const QString &name, const QString &def=QString()) const
virtual void setProperty(const QString &name, const QVariant &value)
int getInt(const QString &name, int def=0) const
double getDouble(const QString &name, double def=0.0) const