Krita Source Code Documentation
Loading...
Searching...
No Matches
MyPaintPaintOpSettingsWidget.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2020 Ashwin Dhakaita <ashwingpdhakaita@gmail.com>
3 * SPDX-FileCopyrightText: 2021 L. E. Segovia <amy@amyspark.me>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
8
9#include <klocalizedstring.h>
10
14
19
21
23
24template <typename Data>
25MyPaintCurveOptionWidget* createMyPaintCurveOptionWidget(Data data, const QString &yValueSuffix = "")
26{
27 const qreal yLimit = qAbs(data.strengthMaxValue - data.strengthMinValue);
28 return createOptionWidget<MyPaintCurveOptionWidget>(std::move(data), yLimit, yValueSuffix);
29}
30
31template <typename Data>
33{
34 const qreal yLimit = qAbs(data.strengthMaxValue - data.strengthMinValue);
35 return createOptionWidgetWithLodLimitations<MyPaintCurveOptionWidget>(std::move(data), yLimit, yValueSuffix);
36}
37
38} // namespace KisPaintOpOptionWidgetUtils
39
40
43{
46
47 namespace kpowu = KisPaintOpOptionWidgetUtils;
48
50 kpowu::createMyPaintCurveOptionWidget(MyPaintRadiusLogarithmicData());
51 MyPaintCurveOptionWidget *hardnessWidget =
52 kpowu::createMyPaintCurveOptionWidget(MyPaintHardnessData());
53 MyPaintCurveOptionWidget *opacityWidget =
54 kpowu::createMyPaintCurveOptionWidget(MyPaintOpacityData());
55
57 kpowu::createOptionWidget<MyPaintBasicOptionWidget>(MyPaintBasicOptionData(),
59 hardnessWidget->strengthValueDenorm(),
60 opacityWidget->strengthValueDenorm()));
61
63 BASIC);
64 addPaintOpOption(kpowu::createMyPaintCurveOptionWidgetWithLodLimitations(MyPaintRadiusByRandomData()),
65 BASIC);
66 addPaintOpOption(hardnessWidget,
67 BASIC);
68 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintAntiAliasingData()),
69 BASIC);
70 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintEllipticalDabAngleData(), "°"),
71 BASIC);
72 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintEllipticalDabRatioData()),
73 BASIC);
74 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintDirectionFilterData()),
75 BASIC);
76 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSnapToPixelsData()),
77 BASIC);
78 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintPressureGainData()),
79 BASIC);
80
81 addPaintOpOption(kpowu::createOptionWidget<KisAirbrushOptionWidget>(),
82 AIRBRUSH);
83
84 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintChangeColorHData()),
85 COLOR);
86 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintChangeColorLData()),
87 COLOR);
88 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintChangeColorVData()),
89 COLOR);
90 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintChangeColorHSLSData()),
91 COLOR);
92 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintChangeColorHSVSData()),
93 COLOR);
94 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintColorizeData()),
95 COLOR);
96 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintPosterizeData()),
97 COLOR);
98 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintPosterizationLevelsData()),
99 COLOR);
100
101 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintFineSpeedGammaData()),
102 SPEED);
103 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintGrossSpeedGammaData()),
104 SPEED);
105 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintFineSpeedSlownessData()),
106 SPEED);
107 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintGrossSpeedSlownessData()),
108 SPEED);
109 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintOffsetBySpeedData()),
110 SPEED);
111 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintOffsetBySpeedFilterData()),
112 SPEED);
113 addPaintOpOption(kpowu::createMyPaintCurveOptionWidgetWithLodLimitations(MyPaintOffsetByRandomData()),
114 SPEED);
115
116 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintDabsPerBasicRadiusData()),
117 DABS);
118 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintDabsPerActualRadiusData()),
119 DABS);
120 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintDabsPerSecondData()),
121 DABS);
122
123 addPaintOpOption(opacityWidget,
124 OPACITY);
125 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintOpaqueLinearizeData()),
126 OPACITY);
127 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintOpaqueMultiplyData()),
128 OPACITY);
129
130 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSlowTrackingPerDabData()),
131 TRACKING);
132 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSlowTrackingData()),
133 TRACKING);
134 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintTrackingNoiseData()),
135 TRACKING);
136
137 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeData()),
138 SMUDGE);
139 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeLengthData()),
140 SMUDGE);
141 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeLengthMultiplierData()),
142 SMUDGE);
143 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeRadiusLogData()),
144 SMUDGE);
145 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeTransparencyData()),
146 SMUDGE);
147 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintSmudgeBucketData()),
148 SMUDGE);
149
150 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintStrokeDurationLogData()),
151 STROKE);
152 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintStrokeHoldtimeData()),
153 STROKE);
154 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintStrokeThresholdData()),
155 STROKE);
156
157 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintCustomInputData()),
158 CUSTOM);
159 addPaintOpOption(kpowu::createMyPaintCurveOptionWidget(MyPaintCustomInputSlownessData()),
160 CUSTOM);
161}
162
163KisMyPaintOpSettingsWidget::~ KisMyPaintOpSettingsWidget()
164{
165}
166
168{
170 config->setProperty("paintop", "mypaintbrush"); // XXX: make this a const id string
171 writeConfiguration(config);
172 return config;
173}
174
176{
177 return m_radiusWidget->strengthValueDenorm().map([] (qreal value) { return 2 * exp(value); });
178}
179
181{
182 QString category;
183
184 switch (id) {
185 case BASIC:
186 category = i18nc("Option Category", "Basic");
187 break;
188 case AIRBRUSH:
189 category = i18n("Airbrush");
190 break;
191 case COLOR:
192 category = i18nc("Option Category", "Color");
193 break;
194 case SPEED:
195 category = i18nc("Option Category", "Speed");
196 break;
197 case DABS:
198 category = i18nc("Option Category", "Dabs");
199 break;
200 case OPACITY:
201 category = i18nc("Option Category", "Opacity");
202 break;
203 case TRACKING:
204 category = i18nc("Option Category", "Tracking");
205 break;
206 case SMUDGE:
207 category = i18nc("Option Category", "Smudge");
208 break;
209 case STROKE:
210 category = i18nc("Option Category", "Stroke");
211 break;
212 case CUSTOM:
213 category = i18nc("Option Category", "Custom");
214 break;
215 }
216
217 return KisPaintOpSettingsWidget::addPaintOpOption(option, category);
218}
float value(const T *src, size_t ch)
void addPaintOpOption(KisPaintOpOption *option, MyPaintPaintopCategory id)
lager::reader< qreal > effectiveBrushSize() const override
KisPropertiesConfigurationSP configuration() const override
MyPaintCurveOptionWidget * m_radiusWidget
KisResourcesInterfaceSP resourcesInterface() const
void addPaintOpOption(KisPaintOpOption *option)
void writeConfiguration(KisPropertiesConfigurationSP config) const override
Reimplemented.
lager::cursor< qreal > strengthValueDenorm()
MyPaintCurveOptionWidget * createMyPaintCurveOptionWidget(Data data, const QString &yValueSuffix="")
MyPaintCurveOptionWidget * createMyPaintCurveOptionWidgetWithLodLimitations(Data data, const QString &yValueSuffix="")
void setProperty(const QString &name, const QVariant &value) override