Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAirbrushOptionWidget.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
8#include <QWidget>
9#include <QCheckBox>
10#include <QHBoxLayout>
11#include <QVBoxLayout>
12
15
16#include "ui_wdgairbrush.h"
17
18const qreal MINIMUM_RATE = 1.0;
19const qreal MAXIMUM_RATE = 1000.0;
20const int RATE_NUM_DECIMALS = 2;
21const qreal RATE_EXPONENT_RATIO = 2.0;
22const qreal RATE_SINGLE_STEP = 1.0;
23const qreal DEFAULT_RATE = 20.0;
24
25class KisAirbrushWidget: public QWidget, public Ui::WdgAirbrush
26{
27public:
28 KisAirbrushWidget(QWidget *parent = 0, bool canIgnoreSpacing = true)
29 : QWidget(parent) {
30 setupUi(this);
31
32 sliderRate->setRange(MINIMUM_RATE, MAXIMUM_RATE, RATE_NUM_DECIMALS);
33 sliderRate->setExponentRatio(RATE_EXPONENT_RATIO);
34 sliderRate->setSingleStep(RATE_SINGLE_STEP);
35 sliderRate->setValue(DEFAULT_RATE);
36
37 checkBoxIgnoreSpacing->setVisible(canIgnoreSpacing);
38 checkBoxIgnoreSpacing->setEnabled(canIgnoreSpacing);
39 }
40};
41
42
44{
45 Private(lager::cursor<KisAirbrushOptionData> optionData)
46 : model(optionData)
47 {
48 }
49
51};
52
53
54KisAirbrushOptionWidget::KisAirbrushOptionWidget(lager::cursor<KisAirbrushOptionData> optionData, bool canIgnoreSpacing)
55 : KisPaintOpOption(i18n("Airbrush"), KisPaintOpOption::COLOR, optionData[&KisAirbrushOptionData::isChecked])
56 , m_d(new Private(optionData))
57{
58 using namespace KisWidgetConnectionUtils;
59
60 KisAirbrushWidget *page = new KisAirbrushWidget(nullptr, canIgnoreSpacing);
62
63 connectControl(page->sliderRate, &m_d->model, "airbrushRate");
64 connectControl(page->checkBoxIgnoreSpacing, &m_d->model, "ignoreSpacing");
65
66 m_d->model.airbrushOptionData.bind(std::bind(&KisAirbrushOptionWidget::emitSettingChanged, this));
67}
68
72
74{
75 m_d->model.airbrushOptionData->write(setting.data());
76}
77
79{
80 KisAirbrushOptionData data = *m_d->model.airbrushOptionData;
81 data.read(setting.data());
82 m_d->model.airbrushOptionData.set(data);
83
84}
const int RATE_NUM_DECIMALS
const qreal RATE_SINGLE_STEP
const qreal MINIMUM_RATE
const qreal DEFAULT_RATE
const qreal RATE_EXPONENT_RATIO
const qreal MAXIMUM_RATE
const QScopedPointer< Private > m_d
void writeOptionSetting(KisPropertiesConfigurationSP setting) const override
void readOptionSetting(const KisPropertiesConfigurationSP setting) override
KisAirbrushOptionWidget(lager::cursor< KisAirbrushOptionData > optionData, bool canIgnoreSpacing=true)
KisAirbrushWidget(QWidget *parent=0, bool canIgnoreSpacing=true)
void setConfigurationPage(QWidget *page)
bool read(const KisPropertiesConfiguration *setting)
Private(lager::cursor< KisAirbrushOptionData > optionData)