File indexing completed on 2024-06-23 04:27:44
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisHairyBristleOptionWidget.h" 0007 0008 #include <lager/constant.hpp> 0009 #include "ui_wdgbristleoptions.h" 0010 0011 #include "KisHairyBristleOptionModel.h" 0012 0013 #include <KisSpinBoxI18nHelper.h> 0014 #include <kis_paintop_lod_limitations.h> 0015 0016 namespace { 0017 0018 0019 class KisBristleOptionsWidget: public QWidget, public Ui::WdgBristleOptions 0020 { 0021 public: 0022 KisBristleOptionsWidget(QWidget *parent = 0) 0023 : QWidget(parent) { 0024 setupUi(this); 0025 0026 scaleBox->setRange(-10.0, 10.0, 2); 0027 scaleBox->setSingleStep(0.01); 0028 0029 rndBox->setRange(-10.0, 10.0, 2); 0030 rndBox->setSingleStep(0.01); 0031 0032 shearBox->setRange(-2.0, 2.0, 2); 0033 shearBox->setSingleStep(0.01); 0034 0035 densityBox->setRange(0.0, 100.0, 0); 0036 KisSpinBoxI18nHelper::setText(densityBox, i18nc("{n} is the number value, % is the percent sign", "{n}%")); 0037 } 0038 }; 0039 0040 0041 } 0042 0043 0044 struct KisHairyBristleOptionWidget::Private 0045 { 0046 Private(lager::cursor<KisHairyBristleOptionData> optionData) 0047 : model(optionData) 0048 { 0049 } 0050 0051 KisHairyBristleOptionModel model; 0052 }; 0053 0054 0055 KisHairyBristleOptionWidget::KisHairyBristleOptionWidget(lager::cursor<KisHairyBristleOptionData> optionData) 0056 : KisPaintOpOption(i18n("Bristle options"), KisPaintOpOption::GENERAL, true) 0057 , m_d(new Private(optionData)) 0058 { 0059 KisBristleOptionsWidget *widget = new KisBristleOptionsWidget(); 0060 setObjectName("KisHairyBristleOption"); 0061 0062 m_checkable = false; 0063 0064 using namespace KisWidgetConnectionUtils; 0065 0066 connectControl(widget->mousePressureCBox, &m_d->model, "useMousePressure"); 0067 connectControl(widget->thresholdCBox, &m_d->model, "threshold"); 0068 connectControl(widget->scaleBox, &m_d->model, "scaleFactor"); 0069 connectControl(widget->rndBox, &m_d->model, "randomFactor"); 0070 connectControl(widget->shearBox, &m_d->model, "shearFactor"); 0071 connectControl(widget->densityBox, &m_d->model, "densityFactor"); 0072 connectControl(widget->connectedCBox, &m_d->model, "connectedPath"); 0073 connectControl(widget->antialiasCBox, &m_d->model, "antialias"); 0074 connectControl(widget->compositingCBox, &m_d->model, "useCompositing"); 0075 0076 m_d->model.optionData.bind(std::bind(&KisHairyBristleOptionWidget::emitSettingChanged, this)); 0077 0078 setConfigurationPage(widget); 0079 } 0080 0081 KisHairyBristleOptionWidget::~KisHairyBristleOptionWidget() 0082 { 0083 } 0084 0085 void KisHairyBristleOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0086 { 0087 KisHairyBristleOptionData data = *m_d->model.optionData; 0088 data.write(setting.data()); 0089 } 0090 0091 void KisHairyBristleOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0092 { 0093 KisHairyBristleOptionData data = *m_d->model.optionData; 0094 data.read(setting.data()); 0095 m_d->model.optionData.set(data); 0096 }