Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_experiment_paintop_settings.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2009, 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
9#include "kis_algebra_2d.h"
11
16
22
26
28{
33 return false;
34}
35
37{
38 QPainterPath path;
39 if (mode.isVisible) {
40
41 QRectF ellipse(0, 0, 3, 3);
42 ellipse.translate(-ellipse.center());
43 path.addEllipse(ellipse);
44 ellipse.setRect(0,0, 12, 12);
45 ellipse.translate(-ellipse.center());
46 path.addEllipse(ellipse);
47
48 if (mode.showTiltDecoration) {
49 path.addPath(makeTiltIndicator(info, QPointF(0.0, 0.0), 0.0, 3.0));
50 }
51
52 path.translate(KisAlgebra2D::alignForZoom(info.pos(), alignForZoom));
53 }
54 return path;
55}
56
58#include "kis_paintop_preset.h"
63
64
65
67{
69 listWeakToStrong(m_d->uniformProperties);
70
71 if (props.isEmpty()) {
72 {
74 new KisIntSliderBasedPaintOpPropertyCallback(KisIntSliderBasedPaintOpPropertyCallback::Int, KoID("shape_speed", i18n("Speed")), settings, 0);
75
76 prop->setRange(0, 100);
77 prop->setSingleStep(1);
78 prop->setSuffix(i18n("%"));
79
80 prop->setReadCallback(
83 option.read(prop->settings().data());
84
85 prop->setValue(int(option.speed));
86 });
87 prop->setWriteCallback(
90 option.read(prop->settings().data());
91 option.speed = prop->value().toInt();
92 option.write(prop->settings().data());
93 });
95 [](const KisUniformPaintOpProperty *prop) -> bool {
97 option.read(prop->settings().data());
98 return option.isSpeedEnabled;
99 });
100
101 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
102 prop->requestReadValue();
103 props << toQShared(prop);
104 }
105 {
107 new KisIntSliderBasedPaintOpPropertyCallback(KisIntSliderBasedPaintOpPropertyCallback::Int, KoID("shape_smooth", i18n("Smooth")), settings, 0);
108
109 prop->setRange(0, 100);
110 prop->setSingleStep(1);
111 prop->setSuffix(i18n(" px"));
112
113 prop->setReadCallback(
114 [](KisUniformPaintOpProperty *prop) {
116 option.read(prop->settings().data());
117
118 prop->setValue(int(option.smoothing));
119 });
120 prop->setWriteCallback(
121 [](KisUniformPaintOpProperty *prop) {
123 option.read(prop->settings().data());
124 option.smoothing = prop->value().toInt();
125 option.write(prop->settings().data());
126 });
128 [](const KisUniformPaintOpProperty *prop) {
130 option.read(prop->settings().data());
131 return option.isSmoothingEnabled;
132 });
133
134 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
135 prop->requestReadValue();
136 props << toQShared(prop);
137 }
138
139 {
140 KisIntSliderBasedPaintOpPropertyCallback *prop = new KisIntSliderBasedPaintOpPropertyCallback(KisIntSliderBasedPaintOpPropertyCallback::Int,
141 KoID("shape_displace", i18n("Displace")),
142 settings,
143 0);
144
145 prop->setRange(0, 100);
146 prop->setSingleStep(1);
147 prop->setSuffix(i18n("%"));
148
149 prop->setReadCallback(
150 [](KisUniformPaintOpProperty *prop) {
152 option.read(prop->settings().data());
153
154 prop->setValue(int(option.displacement));
155 });
156 prop->setWriteCallback(
157 [](KisUniformPaintOpProperty *prop) {
159 option.read(prop->settings().data());
160 option.displacement = prop->value().toInt();
161 option.write(prop->settings().data());
162 });
164 [](const KisUniformPaintOpProperty *prop) {
166 option.read(prop->settings().data());
167 return option.isDisplacementEnabled;
168 });
169
170 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
171 prop->requestReadValue();
172 props << toQShared(prop);
173 }
174
175 {
177 new KisUniformPaintOpPropertyCallback(KisUniformPaintOpPropertyCallback::Bool, KoID("shape_windingfill", i18n("Winding Fill")), settings, 0);
178
179 prop->setReadCallback(
180 [](KisUniformPaintOpProperty *prop) {
182 option.read(prop->settings().data());
183
184 prop->setValue(option.windingFill);
185 });
186 prop->setWriteCallback(
187 [](KisUniformPaintOpProperty *prop) {
189 option.read(prop->settings().data());
190 option.windingFill = prop->value().toBool();
191 option.write(prop->settings().data());
192 });
193
194 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
195 prop->requestReadValue();
196 props << toQShared(prop);
197 }
198
199 {
201 new KisUniformPaintOpPropertyCallback(KisUniformPaintOpPropertyCallback::Bool, KoID("shape_hardedge", i18n("Hard Edge")), settings, 0);
202
203 prop->setReadCallback(
204 [](KisUniformPaintOpProperty *prop) {
206 option.read(prop->settings().data());
207
208 prop->setValue(option.hardEdge);
209 });
210 prop->setWriteCallback(
211 [](KisUniformPaintOpProperty *prop) {
213 option.read(prop->settings().data());
214 option.hardEdge = prop->value().toBool();
215 option.write(prop->settings().data());
216 });
217
218 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
219 prop->requestReadValue();
220 props << toQShared(prop);
221 }
222 }
223
224 {
226
227 Q_FOREACH (KisUniformPaintOpPropertySP prop, KisPaintOpSettings::uniformProperties(settings, updateProxy)) {
228 if (prop->id() == opacity.id()) {
229 props.prepend(prop);
230 }
231 }
232 }
233
234 return props;
235}
KisOptimizedBrushOutline brushOutline(const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom) override
const QScopedPointer< Private > m_d
KisExperimentPaintOpSettings(KisResourcesInterfaceSP resourcesInterface)
const QPointF & pos() const
Definition KoID.h:30
QSharedPointer< T > toQShared(T *ptr)
Container< QSharedPointer< T > > listWeakToStrong(const Container< QWeakPointer< T > > &container, bool allOrNothing=true)
KisCallbackBasedPaintopProperty< KisSliderBasedPaintOpProperty< int > > KisIntSliderBasedPaintOpPropertyCallback
KisCallbackBasedPaintopProperty< KisUniformPaintOpProperty > KisUniformPaintOpPropertyCallback
QPointF alignForZoom(const QPointF &pt, qreal zoom)
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
QList< KisUniformPaintOpPropertyWSP > uniformProperties
static QPainterPath makeTiltIndicator(KisPaintInformation const &info, QPointF const &start, qreal lengthScale, qreal angle)
QList< KisUniformPaintOpPropertyWSP > uniformProperties