File indexing completed on 2024-06-16 04:17:31
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Dmitry Kazakov <dimula73@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisSharpnessOptionWidget.h" 0007 0008 0009 #include <KisLager.h> 0010 0011 #include <QWidget> 0012 #include <QCheckBox> 0013 #include <QLabel> 0014 #include <QHBoxLayout> 0015 #include <QVBoxLayout> 0016 #include <kis_slider_spin_box.h> 0017 0018 #include <KisSharpnessOptionModel.h> 0019 #include <KisWidgetConnectionUtils.h> 0020 0021 struct KisSharpnessOptionWidget::Private 0022 { 0023 Private(lager::cursor<KisSharpnessOptionData> optionData) 0024 : model(optionData.zoom( 0025 kislager::lenses::to_base<KisSharpnessOptionMixIn>) 0026 ) 0027 { 0028 } 0029 0030 KisSharpnessOptionModel model; 0031 }; 0032 0033 KisSharpnessOptionWidget::KisSharpnessOptionWidget(lager::cursor<KisSharpnessOptionData> optionData) 0034 : KisCurveOptionWidget(optionData.zoom(kislager::lenses::to_base<KisCurveOptionDataCommon>), KisPaintOpOption::GENERAL) 0035 , m_d(new Private(optionData)) 0036 { 0037 using namespace KisWidgetConnectionUtils; 0038 0039 QWidget *page = new QWidget; 0040 0041 QCheckBox *alignOutline = new QCheckBox(("Align the brush preview outline to the pixel grid"), page); 0042 0043 QLabel* thresholdLbl = new QLabel(i18n("Soften edge:"), page); 0044 KisSliderSpinBox *softenEdge = new KisSliderSpinBox(page); 0045 softenEdge->setRange(0, 100); 0046 softenEdge->setSingleStep(1); 0047 0048 QHBoxLayout* alignHL = new QHBoxLayout; 0049 alignHL->setMargin(2); 0050 alignHL->addWidget(alignOutline); 0051 0052 QHBoxLayout* softnessHL = new QHBoxLayout; 0053 softnessHL->setMargin(9); 0054 softnessHL->addWidget(thresholdLbl); 0055 softnessHL->addWidget(softenEdge, 1); 0056 0057 QVBoxLayout* pageLayout = new QVBoxLayout(page); 0058 pageLayout->setMargin(0); 0059 pageLayout->addLayout(alignHL); 0060 pageLayout->addLayout(softnessHL); 0061 pageLayout->addWidget(configurationPage()); 0062 0063 setConfigurationPage(page); 0064 0065 connectControl(alignOutline, &m_d->model, "alignOutlinePixels"); 0066 connectControl(softenEdge, &m_d->model, "softness"); 0067 0068 m_d->model.sharpnessOptionData.bind(std::bind(&KisSharpnessOptionWidget::emitSettingChanged, this)); 0069 } 0070 0071 KisSharpnessOptionWidget::~KisSharpnessOptionWidget() 0072 { 0073 } 0074 0075 void KisSharpnessOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0076 { 0077 KisCurveOptionWidget::writeOptionSetting(setting); 0078 m_d->model.sharpnessOptionData->write(setting.data()); 0079 } 0080 0081 void KisSharpnessOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0082 { 0083 KisSharpnessOptionMixIn data = *m_d->model.sharpnessOptionData; 0084 data.read(setting.data()); 0085 m_d->model.sharpnessOptionData.set(data); 0086 0087 KisCurveOptionWidget::readOptionSetting(setting); 0088 }