Krita Source Code Documentation
Loading...
Searching...
No Matches
KisScreentoneGeneratorConfiguration.cpp
Go to the documentation of this file.
1/*
2 * KDE. Krita Project.
3 *
4 * SPDX-FileCopyrightText: 2021 Deif Lou <ginoba@gmail.com>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#include <QStringList>
10#include <QMutex>
11#include <QMutexLocker>
12
13#include <klocalizedstring.h>
14
17
19{
20 return QStringList()
21 << i18nc("Screentone Pattern Type - Dots", "Dots")
22 << i18nc("Screentone Pattern Type - Lines", "Lines");
23}
24
26{
27 if (pattern == KisScreentonePatternType_Dots) {
28 return QStringList()
29 << i18nc("Screentone Pattern - Round Dots", "Round")
30 << i18nc("Screentone Pattern - Ellipse Dots (Krita 4 legacy version)", "Ellipse (Legacy)")
31 << i18nc("Screentone Pattern - Ellipse Dots", "Ellipse")
32 << i18nc("Screentone Pattern - Diamond Dots", "Diamond")
33 << i18nc("Screentone Pattern - Square Dots", "Square");
34 } else if (pattern == KisScreentonePatternType_Lines) {
35 return QStringList()
36 << i18nc("Screentone Pattern - Straight Lines", "Straight")
37 << i18nc("Screentone Pattern - Sine Wave Lines", "Sine Wave")
38 << i18nc("Screentone Pattern - Triangular Wave Lines", "Triangular Wave")
39 << i18nc("Screentone Pattern - Sawtooth Wave Lines", "Sawtooth Wave")
40 << i18nc("Screentone Pattern - Curtains Lines", "Curtains");
41 }
42
43 return QStringList();
44}
45
47{
48 if (pattern == KisScreentonePatternType_Dots) {
52 return QStringList()
53 << i18nc("Screentone Interpolation Method - Linear", "Linear")
54 << i18nc("Screentone Interpolation Method - Sinusoidal", "Sinusoidal");
55 }
56 } else if (pattern == KisScreentonePatternType_Lines) {
57 return QStringList()
58 << i18nc("Screentone Interpolation Method - Linear", "Linear")
59 << i18nc("Screentone Interpolation Method - Sinusoidal", "Sinusoidal");
60 }
61
62 return QStringList();
63}
64
79
83
86
88{
89 QMutexLocker ml(&m_templateMutex);
90 if (!m_cachedTemplate) {
91 m_cachedTemplate.reset(new KisScreentoneGeneratorTemplate(m_q));
92 }
93 return *m_cachedTemplate;
94}
95
97{
98 QMutexLocker ml(&m_templateMutex);
99 m_cachedTemplate.reset();
100}
101
106
108 : KisFilterConfiguration(defaultName(), defaultVersion(), resourcesInterface)
109 , m_d(new Private(this))
110{}
111
114 , m_d(new Private(this))
115{
116 m_d->m_cachedTemplate = rhs.m_d->m_cachedTemplate;
117}
118
121
126
128{
129 return getInt("pattern", defaultPattern());
130}
131
133{
134 return getInt("shape", defaultShape());
135}
136
138{
139 return getInt("interpolation", defaultInterpolation());
140}
141
146
151
156
158{
159 return getInt("foreground_opacity", defaultForegroundOpacity());
160}
161
163{
164 return getInt("background_opacity", defaultBackgroundOpacity());
165}
166
168{
169 return getBool("invert", defaultInvert());
170}
171
173{
174 return getDouble("brightness", defaultBrightness());
175}
176
178{
179 return getDouble("contrast", defaultContrast());
180}
181
186
188{
189 return getInt("units", defaultUnits());
190}
191
193{
194 return getDouble("resolution", defaultResolution());
195}
196
198{
199 return getDouble("frequency_x", defaultFrequencyX());
200}
201
203{
204 return getDouble("frequency_y", defaultFrequencyY());
205}
206
208{
209 return getBool("constrain_frequency", defaultConstrainFrequency());
210}
211
213{
214 return getDouble("position_x", defaultPositionX());
215}
216
218{
219 return getDouble("position_y", defaultPositionY());
220}
221
223{
224 return getDouble("size_x", defaultSizeX());
225}
226
228{
229 return getDouble("size_y", defaultSizeY());
230}
231
233{
234 return getBool("keep_size_square", defaultConstrainSize());
235}
236
238{
239 return getDouble("shear_x", defaultShearX());
240}
241
243{
244 return getDouble("shear_y", defaultShearY());
245}
246
248{
249 return getDouble("rotation", defaultRotation());
250}
251
253{
254 return getBool("align_to_pixel_grid", version() == 1 ? false : defaultAlignToPixelGrid());
255}
256
258{
259 return getInt("align_to_pixel_grid_x", defaultAlignToPixelGridX());
260}
261
263{
264 return getInt("align_to_pixel_grid_y", defaultAlignToPixelGridY());
265}
266
271
273{
274 setProperty("pattern", newPattern);
275 m_d->invalidateTemplate();
276}
277
279{
280 setProperty("shape", newShape);
281 m_d->invalidateTemplate();
282}
283
285{
286 setProperty("interpolation", newInterpolation);
287 m_d->invalidateTemplate();
288}
289
291{
292 setProperty("equalization_mode", newEqualizationMode);
293}
294
296{
297 QVariant v;
298 v.setValue(newForegroundColor);
299 setProperty("foreground_color", v);
300}
301
303{
304 QVariant v;
305 v.setValue(newBackgroundColor);
306 setProperty("background_color", v);
307}
308
310{
311 setProperty("foreground_opacity", newForegroundOpacity);
312}
313
315{
316 setProperty("background_opacity", newBackgroundOpacity);
317}
318
320{
321 setProperty("invert", newInvert);
322}
323
325{
326 setProperty("brightness", newBrightness);
327}
328
330{
331 setProperty("contrast", newContrast);
332}
333
335{
336 setProperty("size_mode", newSizeMode);
337 m_d->invalidateTemplate();
338}
339
341{
342 setProperty("units", newUnits);
343}
344
346{
347 setProperty("resolution", newResolution);
348 m_d->invalidateTemplate();
349}
350
352{
353 setProperty("frequency_x", newFrequencyX);
354 m_d->invalidateTemplate();
355}
356
358{
359 setProperty("frequency_y", newFrequencyY);
360 m_d->invalidateTemplate();
361}
362
364{
365 setProperty("constrain_frequency", newConstrainFrequency);
366 m_d->invalidateTemplate();
367}
368
370{
371 setProperty("position_x", newPositionX);
372 m_d->invalidateTemplate();
373}
374
376{
377 setProperty("position_y", newPositionY);
378 m_d->invalidateTemplate();
379}
380
382{
383 setProperty("size_x", newSizeX);
384 m_d->invalidateTemplate();
385}
386
388{
389 setProperty("size_y", newSizeY);
390 m_d->invalidateTemplate();
391}
392
394{
395 setProperty("keep_size_square", newConstrainSize);
396 m_d->invalidateTemplate();
397}
398
400{
401 setProperty("shear_x", newShearX);
402 m_d->invalidateTemplate();
403}
404
406{
407 setProperty("shear_y", newShearY);
408 m_d->invalidateTemplate();
409}
410
412{
413 setProperty("rotation", newRotation);
414 m_d->invalidateTemplate();
415}
416
418{
419 setProperty("align_to_pixel_grid", newAlignToPixelGrid);
420 m_d->invalidateTemplate();
421}
422
424{
425 setProperty("align_to_pixel_grid_x", newAlignToPixelGridX);
426 m_d->invalidateTemplate();
427}
428
430{
431 setProperty("align_to_pixel_grid_y", newAlignToPixelGridY);
432 m_d->invalidateTemplate();
433}
434
qreal v
QList< QString > QStringList
QStringList screentoneInterpolationNames(int pattern, int shape)
QStringList screentonePatternNames()
QStringList screentoneShapeNames(int pattern)
const KisScreentoneGeneratorTemplate & getTemplate() const
QSharedPointer< KisScreentoneGeneratorTemplate > m_cachedTemplate
void setForegroundColor(const KoColor &newForegroundColor)
virtual KisFilterConfigurationSP clone() const override
void setBackgroundColor(const KoColor &newBackgroundColor)
const KisScreentoneGeneratorTemplate & getTemplate() const
KisScreentoneGeneratorConfiguration(qint32 version, KisResourcesInterfaceSP resourcesInterface)
KisResourcesInterfaceSP resourcesInterface
virtual void setProperty(const QString &name, const QVariant &value)
bool getBool(const QString &name, bool def=false) const
KoColor getColor(const QString &name, const KoColor &color=KoColor()) const
getColor fetch the given property as a KoColor.
int getInt(const QString &name, int def=0) const
double getDouble(const QString &name, double def=0.0) const