File indexing completed on 2024-06-16 04:17:17
0001 /* 0002 * SPDX-FileCopyrightText: 2022 Agata Cacko <cacko.azh@gmail.com> 0003 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0004 * 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 #include "KisCurveOpOptionWidget.h" 0009 0010 #include <QButtonGroup> 0011 0012 #include <lager/constant.hpp> 0013 #include "ui_wdgcurveoptions.h" 0014 0015 #include "KisCurveOpOptionModel.h" 0016 0017 namespace { 0018 0019 0020 class KisCurveOptionsWidget: public QWidget, public Ui::WdgCurveOptions 0021 { 0022 0023 public: 0024 KisCurveOptionsWidget(QWidget *parent = 0) : QWidget(parent) { 0025 setupUi(this); 0026 historySizeSlider->setRange(2, 300); 0027 historySizeSlider->setValue(30); 0028 0029 lineWidthSlider->setRange(1, 100); 0030 lineWidthSlider->setValue(1); 0031 lineWidthSlider->setSuffix(i18n(" px")); 0032 0033 curvesOpacitySlider->setRange(0.0, 1.0, 2); 0034 curvesOpacitySlider->setSingleStep(0.01); 0035 curvesOpacitySlider->setValue(1.0); 0036 } 0037 }; 0038 0039 0040 } 0041 0042 0043 struct KisCurveOpOptionWidget::Private 0044 { 0045 Private(lager::cursor<KisCurveOpOptionData> optionData) 0046 : model(optionData) 0047 { 0048 } 0049 0050 KisCurveOpOptionModel model; 0051 }; 0052 0053 0054 KisCurveOpOptionWidget::KisCurveOpOptionWidget(lager::cursor<KisCurveOpOptionData> optionData) 0055 : KisPaintOpOption(i18nc("Brush settings curve value", "Value"), KisPaintOpOption::GENERAL, true) 0056 , m_d(new Private(optionData)) 0057 { 0058 0059 KisCurveOptionsWidget *widget = new KisCurveOptionsWidget(); 0060 setObjectName("KisCurveOpOption"); 0061 0062 m_checkable = false; 0063 0064 using namespace KisWidgetConnectionUtils; 0065 connectControl(widget->connectionCHBox, &m_d->model, "curvePaintConnectionLine"); 0066 connectControl(widget->smoothingCHBox, &m_d->model, "curveSmoothing"); 0067 connectControl(widget->historySizeSlider, &m_d->model, "curveStrokeHistorySize"); 0068 connectControl(widget->lineWidthSlider, &m_d->model, "curveLineWidth"); 0069 connectControl(widget->curvesOpacitySlider, &m_d->model, "curveCurvesOpacity"); 0070 0071 m_d->model.optionData.bind(std::bind(&KisCurveOpOptionWidget::emitSettingChanged, this)); 0072 0073 setConfigurationPage(widget); 0074 } 0075 0076 KisCurveOpOptionWidget::~KisCurveOpOptionWidget() 0077 { 0078 } 0079 0080 void KisCurveOpOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0081 { 0082 KisCurveOpOptionData data = *m_d->model.optionData; 0083 data.write(setting.data()); 0084 } 0085 0086 void KisCurveOpOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0087 { 0088 KisCurveOpOptionData data = *m_d->model.optionData; 0089 data.read(setting.data()); 0090 m_d->model.optionData.set(data); 0091 }