Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_particle_paintop_settings.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
7
10
12
17
23
27
34
35
37#include "kis_paintop_preset.h"
40
41
43{
45 listWeakToStrong(m_d->uniformProperties);
46
47 if (props.isEmpty()) {
48 {
49 KisIntSliderBasedPaintOpPropertyCallback *prop = new KisIntSliderBasedPaintOpPropertyCallback(KisIntSliderBasedPaintOpPropertyCallback::Int,
50 KoID("particle_particles", i18n("Particles")),
51 settings,
52 0);
53
54 prop->setRange(1, 500);
55 prop->setSingleStep(1);
56
57 prop->setReadCallback(
60 option.read(prop->settings().data());
61
62 prop->setValue(int(option.particleCount));
63 });
64 prop->setWriteCallback(
67 option.read(prop->settings().data());
68 option.particleCount = prop->value().toInt();
69 option.write(prop->settings().data());
70 });
71
72 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
73 prop->requestReadValue();
74 props << toQShared(prop);
75 }
76 {
78 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
79 KoID("particle_opecityweight", i18n("Opacity Weight")),
80 settings,
81 0);
82
83 prop->setRange(0.01, 1.0);
84 prop->setSingleStep(0.01);
85 prop->setDecimals(2);
86
87 prop->setReadCallback(
90 option.read(prop->settings().data());
91 prop->setValue(option.particleWeight);
92 });
93 prop->setWriteCallback(
96 option.read(prop->settings().data());
97 option.particleWeight = prop->value().toReal();
98 option.write(prop->settings().data());
99 });
100
101 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
102 prop->requestReadValue();
103 props << toQShared(prop);
104 }
105 {
107 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
108 KoID("particle_dx_scale", i18n("dx scale")),
109 settings,
110 0);
111
112 prop->setRange(-2, 2);
113 prop->setSingleStep(0.01);
114 prop->setDecimals(2);
115
116 prop->setReadCallback(
117 [](KisUniformPaintOpProperty *prop) {
119 option.read(prop->settings().data());
120 prop->setValue(option.particleScaleX);
121 });
122 prop->setWriteCallback(
123 [](KisUniformPaintOpProperty *prop) {
125 option.read(prop->settings().data());
126 option.particleScaleX = prop->value().toReal();
127 option.write(prop->settings().data());
128 });
129
130 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
131 prop->requestReadValue();
132 props << toQShared(prop);
133 }
134 {
136 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
137 KoID("particle_dy_scale", i18n("dy scale")),
138 settings,
139 0);
140
141 prop->setRange(-2, 2);
142 prop->setSingleStep(0.01);
143 prop->setDecimals(2);
144
145 prop->setReadCallback(
146 [](KisUniformPaintOpProperty *prop) {
148 option.read(prop->settings().data());
149 prop->setValue(option.particleScaleY);
150 });
151 prop->setWriteCallback(
152 [](KisUniformPaintOpProperty *prop) {
154 option.read(prop->settings().data());
155 option.particleScaleY = prop->value().toReal();
156 option.write(prop->settings().data());
157 });
158
159 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
160 prop->requestReadValue();
161 props << toQShared(prop);
162 }
163 {
165 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
166 KoID("particle_gravity", i18n("Gravity")),
167 settings,
168 0);
169
170 prop->setRange(0.01, 1.0);
171 prop->setSingleStep(0.01);
172 prop->setDecimals(2);
173
174 prop->setReadCallback(
175 [](KisUniformPaintOpProperty *prop) {
177 option.read(prop->settings().data());
178 prop->setValue(option.particleGravity);
179 });
180 prop->setWriteCallback(
181 [](KisUniformPaintOpProperty *prop) {
183 option.read(prop->settings().data());
184 option.particleGravity = prop->value().toReal();
185 option.write(prop->settings().data());
186 });
187
188 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
189 prop->requestReadValue();
190 props << toQShared(prop);
191 }
192 {
193 KisIntSliderBasedPaintOpPropertyCallback *prop = new KisIntSliderBasedPaintOpPropertyCallback(KisIntSliderBasedPaintOpPropertyCallback::Int,
194 KoID("particle_iterations", i18n("Iterations")),
195 settings,
196 0);
197
198 prop->setRange(1, 300);
199 prop->setSingleStep(1);
200
201 prop->setReadCallback(
202 [](KisUniformPaintOpProperty *prop) {
204 option.read(prop->settings().data());
205
206 prop->setValue(int(option.particleIterations));
207 });
208 prop->setWriteCallback(
209 [](KisUniformPaintOpProperty *prop) {
211 option.read(prop->settings().data());
212 option.particleIterations = prop->value().toInt();
213 option.write(prop->settings().data());
214 });
215
216 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
217 prop->requestReadValue();
218 props << toQShared(prop);
219 }
220 }
221
222 {
224
225 Q_FOREACH (KisUniformPaintOpPropertySP prop, KisPaintOpSettings::uniformProperties(settings, updateProxy)) {
226 if (prop->id() == opacity.id()) {
227 props.prepend(prop);
228 }
229 }
230 }
231
232 return props;
233}
const QScopedPointer< Private > m_d
KisParticlePaintOpSettings(KisResourcesInterfaceSP resourcesInterface)
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< KisSliderBasedPaintOpProperty< qreal > > KisDoubleSliderBasedPaintOpPropertyCallback
QList< KisUniformPaintOpPropertyWSP > uniformProperties
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
bool read(const KisPropertiesConfiguration *setting)
QList< KisUniformPaintOpPropertyWSP > uniformProperties