1 /*
2 * Copyright (c) 2008-2010 Lukáš Tvrdý <lukast.dev@gmail.com>
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 */
18 #include "kis_hairy_ink_option.h"
19 #include "kis_hairy_paintop_settings.h"
20
21 #include <klocalizedstring.h>
22 #include "ui_wdgInkOptions.h"
23
24 class KisInkOptionsWidget: public QWidget, public Ui::WdgInkOptions
25 {
26 public:
KisInkOptionsWidget(QWidget * parent=0)27 KisInkOptionsWidget(QWidget *parent = 0)
28 : QWidget(parent) {
29 setupUi(this);
30 }
31 };
32
KisHairyInkOption()33 KisHairyInkOption::KisHairyInkOption()
34 : KisPaintOpOption(KisPaintOpOption::COLOR, false)
35 {
36 setObjectName("KisHairyInkOption");
37
38
39 m_checkable = true;
40 m_options = new KisInkOptionsWidget();
41
42 // init values for slider
43 m_options->pressureSlider->setRange(0.0, 100, 0);
44 m_options->pressureSlider->setValue(50);
45 m_options->pressureSlider->setSuffix(i18n("%"));
46
47 m_options->bristleLengthSlider->setRange(0, 100, 0);
48 m_options->bristleLengthSlider->setValue(50);
49 m_options->bristleLengthSlider->setSuffix(i18n("%"));
50
51 m_options->bristleInkAmountSlider->setRange(0, 100, 0);
52 m_options->bristleInkAmountSlider->setValue(50);
53 m_options->bristleInkAmountSlider->setSuffix(i18n("%"));
54
55 m_options->inkDepletionSlider->setRange(0, 100, 0);
56 m_options->inkDepletionSlider->setValue(50);
57 m_options->inkDepletionSlider->setSuffix(i18n("%"));
58
59
60 connect(m_options->inkAmountSpinBox, SIGNAL(valueChanged(int)), SLOT(emitSettingChanged()));
61 connect(m_options->saturationCBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
62 connect(m_options->opacityCBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
63 connect(m_options->useWeightCHBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
64 connect(m_options->pressureSlider, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
65 connect(m_options->bristleLengthSlider, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
66 connect(m_options->bristleInkAmountSlider, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
67 connect(m_options->inkDepletionSlider, SIGNAL(valueChanged(qreal)), SLOT(emitSettingChanged()));
68 connect(m_options->inkCurve, SIGNAL(modified()), SLOT(emitSettingChanged()));
69 connect(m_options->soakInkCBox, SIGNAL(toggled(bool)), SLOT(emitSettingChanged()));
70
71 setConfigurationPage(m_options);
72 }
73
~KisHairyInkOption()74 KisHairyInkOption::~KisHairyInkOption()
75 {
76 delete m_options;
77 }
78
79
readOptionSetting(const KisPropertiesConfigurationSP settings)80 void KisHairyInkOption::readOptionSetting(const KisPropertiesConfigurationSP settings)
81 {
82 setChecked(settings->getBool(HAIRY_INK_DEPLETION_ENABLED));
83 m_options->inkAmountSpinBox->setValue(settings->getInt(HAIRY_INK_AMOUNT));
84 m_options->saturationCBox->setChecked(settings->getBool(HAIRY_INK_USE_SATURATION));
85 m_options->opacityCBox->setChecked(settings->getBool(HAIRY_INK_USE_OPACITY));
86 m_options->useWeightCHBox->setChecked(settings->getBool(HAIRY_INK_USE_WEIGHTS));
87 m_options->pressureSlider->setValue(settings->getInt(HAIRY_INK_PRESSURE_WEIGHT));
88 m_options->bristleLengthSlider->setValue(settings->getInt(HAIRY_INK_BRISTLE_LENGTH_WEIGHT));
89 m_options->bristleInkAmountSlider->setValue(settings->getInt(HAIRY_INK_BRISTLE_INK_AMOUNT_WEIGHT));
90 m_options->inkDepletionSlider->setValue(settings->getInt(HAIRY_INK_DEPLETION_WEIGHT));
91 m_options->inkCurve->setCurve(settings->getCubicCurve(HAIRY_INK_DEPLETION_CURVE));
92 m_options->soakInkCBox->setChecked(settings->getBool(HAIRY_INK_SOAK));
93 }
94
writeOptionSetting(KisPropertiesConfigurationSP settings) const95 void KisHairyInkOption::writeOptionSetting(KisPropertiesConfigurationSP settings) const
96 {
97 settings->setProperty(HAIRY_INK_DEPLETION_ENABLED, isChecked());
98 settings->setProperty(HAIRY_INK_AMOUNT, inkAmount());
99 settings->setProperty(HAIRY_INK_USE_SATURATION, useSaturation());
100 settings->setProperty(HAIRY_INK_USE_OPACITY, useOpacity());
101 settings->setProperty(HAIRY_INK_USE_WEIGHTS, useWeights());
102 settings->setProperty(HAIRY_INK_PRESSURE_WEIGHT, pressureWeight());
103 settings->setProperty(HAIRY_INK_BRISTLE_LENGTH_WEIGHT, bristleLengthWeight());
104 settings->setProperty(HAIRY_INK_BRISTLE_INK_AMOUNT_WEIGHT, bristleInkAmountWeight());
105 settings->setProperty(HAIRY_INK_DEPLETION_WEIGHT, inkDepletionWeight());
106 settings->setProperty(HAIRY_INK_DEPLETION_CURVE, qVariantFromValue(m_options->inkCurve->curve()));
107 settings->setProperty(HAIRY_INK_SOAK, m_options->soakInkCBox->isChecked());
108 }
109
110
inkAmount() const111 int KisHairyInkOption::inkAmount() const
112 {
113 return m_options->inkAmountSpinBox->value();
114 }
115
116
useOpacity() const117 bool KisHairyInkOption::useOpacity() const
118 {
119 return m_options->opacityCBox->isChecked();
120 }
121
122
useSaturation() const123 bool KisHairyInkOption::useSaturation() const
124 {
125 return m_options->saturationCBox->isChecked();
126 }
127
128
useWeights() const129 bool KisHairyInkOption::useWeights() const
130 {
131 return m_options->useWeightCHBox->isChecked();
132 }
133
134
pressureWeight() const135 int KisHairyInkOption::pressureWeight() const
136 {
137 return m_options->pressureSlider->value();
138 }
139
140
bristleLengthWeight() const141 int KisHairyInkOption::bristleLengthWeight() const
142 {
143 return m_options->bristleLengthSlider->value();
144 }
145
146
bristleInkAmountWeight() const147 int KisHairyInkOption::bristleInkAmountWeight() const
148 {
149 return m_options->bristleInkAmountSlider->value();
150 }
151
152
inkDepletionWeight() const153 int KisHairyInkOption::inkDepletionWeight() const
154 {
155 return m_options->inkDepletionSlider->value();
156 }
157
158
159