File indexing completed on 2024-06-16 04:17:20
0001 /* 0002 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "KisDeformOptionWidget.h" 0007 0008 #include <QButtonGroup> 0009 0010 #include <lager/constant.hpp> 0011 #include "ui_wdgdeformoptions.h" 0012 0013 #include "KisDeformOptionModel.h" 0014 0015 namespace { 0016 0017 0018 class KisDeformOptionsWidget: public QWidget, public Ui::WdgDeformOptions 0019 { 0020 public: 0021 KisDeformOptionsWidget(QWidget *parent = 0) 0022 : QWidget(parent) { 0023 setupUi(this); 0024 0025 deformAmount->setRange(0.0, 1.0, 2); 0026 deformAmount->setSingleStep(0.01); 0027 } 0028 }; 0029 0030 0031 } 0032 0033 0034 struct KisDeformOptionWidget::Private 0035 { 0036 Private(lager::cursor<KisDeformOptionData> optionData) 0037 : model(optionData) 0038 { 0039 } 0040 0041 KisDeformOptionModel model; 0042 }; 0043 0044 0045 KisDeformOptionWidget::KisDeformOptionWidget(lager::cursor<KisDeformOptionData> optionData) 0046 : KisPaintOpOption(i18n("Deform Options"), KisPaintOpOption::COLOR, true) 0047 , m_d(new Private(optionData)) 0048 { 0049 KisDeformOptionsWidget *widget = new KisDeformOptionsWidget(); 0050 setObjectName("KisDeformOption"); 0051 0052 m_checkable = false; 0053 0054 using namespace KisWidgetConnectionUtils; 0055 0056 connectControl(widget->deformAmount, &m_d->model, "deformAmount"); 0057 connectControl(widget->interpolationChBox, &m_d->model, "deformUseBilinear"); 0058 connectControl(widget->useCounter, &m_d->model, "deformUseCounter"); 0059 connectControl(widget->useOldData, &m_d->model, "deformUseOldData"); 0060 0061 QButtonGroup *group = new QButtonGroup(widget); 0062 group->addButton(widget->growBtn, static_cast<int>(DeformModes::GROW)); 0063 group->addButton(widget->shrinkBtn, static_cast<int>(DeformModes::SHRINK)); 0064 group->addButton(widget->swirlCWBtn, static_cast<int>(DeformModes::SWIRL_CW)); 0065 group->addButton(widget->swirlCCWBtn, static_cast<int>(DeformModes::SWIRL_CCW)); 0066 group->addButton(widget->moveBtn, static_cast<int>(DeformModes::MOVE)); 0067 group->addButton(widget->lensBtn, static_cast<int>(DeformModes::LENS_IN)); 0068 group->addButton(widget->lensOutBtn, static_cast<int>(DeformModes::LENS_OUT)); 0069 group->addButton(widget->colorBtn, static_cast<int>(DeformModes::DEFORM_COLOR)); 0070 group->setExclusive(true); 0071 connectControl(group, &m_d->model, "deformAction"); 0072 0073 m_d->model.optionData.bind(std::bind(&KisDeformOptionWidget::emitSettingChanged, this)); 0074 0075 setConfigurationPage(widget); 0076 } 0077 0078 KisDeformOptionWidget::~KisDeformOptionWidget() 0079 { 0080 } 0081 0082 void KisDeformOptionWidget::writeOptionSetting(KisPropertiesConfigurationSP setting) const 0083 { 0084 KisDeformOptionData data = *m_d->model.optionData; 0085 data.write(setting.data()); 0086 } 0087 0088 void KisDeformOptionWidget::readOptionSetting(const KisPropertiesConfigurationSP setting) 0089 { 0090 KisDeformOptionData data = *m_d->model.optionData; 0091 data.read(setting.data()); 0092 m_d->model.optionData.set(data); 0093 }