Krita Source Code Documentation
Loading...
Searching...
No Matches
KisTextureOptionWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
11
12#include "kis_texture_chooser.h"
13
14
16{
17 Private(lager::cursor<KisTextureOptionData> optionData, KisResourcesInterfaceSP resourcesInterface)
18 : model(optionData, resourcesInterface)
19 {
20 }
21
23};
24
25
26KisTextureOptionWidget::KisTextureOptionWidget(lager::cursor<KisTextureOptionData> optionData, KisResourcesInterfaceSP resourcesInterface, KisBrushTextureFlags flags)
27 : KisPaintOpOption(i18n("Pattern"), KisPaintOpOption::TEXTURE, optionData[&KisTextureOptionData::isEnabled])
28 , m_d(new Private(optionData, resourcesInterface))
29{
30 using namespace KisWidgetConnectionUtils;
31 setObjectName("KisTextureOption");
32
33 KisTextureChooser *chooserWidget = new KisTextureChooser(flags);
34
35 setConfigurationPage(chooserWidget);
36
37 connect(&m_d->model, &KisTextureOptionModel::textureResourceChanged,
38 chooserWidget->textureSelectorWidget, &KisPatternChooser::setCurrentPattern);
39 connect(chooserWidget->textureSelectorWidget, &KisPatternChooser::resourceSelected,
40 &m_d->model, &KisTextureOptionModel::settextureResource);
41 chooserWidget->textureSelectorWidget->setCurrentPattern(m_d->model.textureResource());
42
43 connect(&m_d->model, &KisTextureOptionModel::cutOffLeftNormalizedChanged,
44 chooserWidget->cutoffSlider, &KisInputLevelsSlider::setBlackPoint);
45 connect(chooserWidget->cutoffSlider, &KisInputLevelsSlider::blackPointChanged,
46 &m_d->model, &KisTextureOptionModel::setcutOffLeftNormalized);
47 chooserWidget->cutoffSlider->setBlackPoint(m_d->model.cutOffLeftNormalized());
48
49 connect(&m_d->model, &KisTextureOptionModel::cutOffRightNormalizedChanged,
50 chooserWidget->cutoffSlider, &KisInputLevelsSlider::setWhitePoint);
51 connect(chooserWidget->cutoffSlider, &KisInputLevelsSlider::whitePointChanged,
52 &m_d->model, &KisTextureOptionModel::setcutOffRightNormalized);
53 chooserWidget->cutoffSlider->setWhitePoint(m_d->model.cutOffRightNormalized());
54
55 connectControl(chooserWidget->scaleSlider, &m_d->model, "scale");
56 connectControl(chooserWidget->brightnessSlider, &m_d->model, "brightness");
57 connectControl(chooserWidget->contrastSlider, &m_d->model, "contrast");
58 connectControl(chooserWidget->neutralPointSlider, &m_d->model, "neutralPoint");
59 connectControl(chooserWidget->offsetSliderX, &m_d->model, "offsetX");
60 connectControl(chooserWidget->randomOffsetX, &m_d->model, "isRandomOffsetX");
61 connectControl(chooserWidget->randomOffsetY, &m_d->model, "isRandomOffsetY");
62 connectControl(chooserWidget->offsetSliderY, &m_d->model, "offsetY");
63 connectControl(chooserWidget->cmbTexturingMode, &m_d->model, "texturingMode");
64 connectControl(chooserWidget->checkBoxSoftTexturing, &m_d->model, "useSoftTexturing");
65 connectControl(chooserWidget->cmbCutoffPolicy, &m_d->model, "cutOffPolicy");
66 connectControl(chooserWidget->chkInvert, &m_d->model, "invert");
67 connectControl(chooserWidget->chkAutoInvertOnErase, &m_d->model, "autoInvertOnErase");
68
69 m_d->model.LAGER_QT(maximumOffsetX).bind(std::bind(&KisSliderSpinBox::setMaximum, chooserWidget->offsetSliderX, std::placeholders::_1, true));
70 m_d->model.LAGER_QT(maximumOffsetY).bind(std::bind(&KisSliderSpinBox::setMaximum, chooserWidget->offsetSliderY, std::placeholders::_1, true));
71
72 m_d->model.optionData.bind(std::bind(&KisTextureOptionWidget::emitSettingChanged, this));
73}
74
78
80{
81 m_d->model.bakedOptionData().write(setting.data());
82}
83
85{
86 KisTextureOptionData data = *m_d->model.optionData;
87 data.read(setting.data());
88 m_d->model.optionData.set(data);
89}
90
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
void blackPointChanged(qreal newBlackPoint)
Signal emitted when the black point changes.
void whitePointChanged(qreal newWhitePoint)
Signal emitted when the white point changes.
virtual void setBlackPoint(qreal newBlackPoint)
Sets the black point.
virtual void setWhitePoint(qreal newWhitePoint)
Sets the white point.
std::optional< lager::reader< KisPaintopLodLimitations > > OptionalLodLimitationsReader
KisResourcesInterfaceSP resourcesInterface() const
void setConfigurationPage(QWidget *page)
void setCurrentPattern(KoResourceSP resource)
void resourceSelected(KoResourceSP resource)
Emitted when a resource was selected.
void setMaximum(int newMaximum, bool computeNewFastSliderStep=true)
Set the maximum value of the range.
OptionalLodLimitationsReader lodLimitationsReader() const override
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
KisTextureOptionWidget(lager::cursor< KisTextureOptionData > optionData, KisResourcesInterfaceSP resourcesInterface, KisBrushTextureFlags flags=None)
const QScopedPointer< Private > m_d
bool read(const KisPropertiesConfiguration *setting)
KisPaintopLodLimitations lodLimitations() const
Private(lager::cursor< KisTextureOptionData > optionData, KisResourcesInterfaceSP resourcesInterface)