Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_hatching_paintop_settings.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2010 Lukáš Tvrdý <lukast.dev@gmail.com>
3 * SPDX-FileCopyrightText: 2010 José Luis Vergara <pentalis@gmail.com>
4 *
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 */
7
9
14
15
21
25
27{
28 // XXX: this is a nice way to reinvent the copy constructor?
29
30 /*--------DO NOT REMOVE please, use this to review the XML config tree
31 QMap<QString, QVariant> rofl = QMap<QString, QVariant>(getProperties());
32
33 QMap<QString, QVariant>::const_iterator i;
34 for (i = rofl.constBegin(); i != rofl.constEnd(); ++i)
35 dbgKrita << i.key() << ":" << i.value();
36 /----------DO NOT REMOVE----------------*/
37
38 KisHatchingPaintOpSettings *convenienttwin = static_cast<KisHatchingPaintOpSettings*>(settings.data());
39
40 convenienttwin->enabledcurveangle = getBool("PressureAngle");
41 convenienttwin->enabledcurvecrosshatching = getBool("PressureCrosshatching");
42 convenienttwin->enabledcurveopacity = getBool("PressureOpacity");
43 convenienttwin->enabledcurveseparation = getBool("PressureSeparation");
44 convenienttwin->enabledcurvesize = getBool("PressureSize");
45 convenienttwin->enabledcurvethickness = getBool("PressureThickness");
46
47 convenienttwin->angle = getDouble("Hatching/angle");
48 convenienttwin->separation = getDouble("Hatching/separation");
49 convenienttwin->thickness = getDouble("Hatching/thickness");
50 convenienttwin->origin_x = getDouble("Hatching/origin_x");
51 convenienttwin->origin_y = getDouble("Hatching/origin_y");
52
53 convenienttwin->nocrosshatching = getBool("Hatching/bool_nocrosshatching");
54 convenienttwin->perpendicular = getBool("Hatching/bool_perpendicular");
55 convenienttwin->minusthenplus = getBool("Hatching/bool_minusthenplus");
56 convenienttwin->plusthenminus = getBool("Hatching/bool_plusthenminus");
57 convenienttwin->moirepattern = getBool("Hatching/bool_moirepattern");
58
59 convenienttwin->separationintervals = getInt("Hatching/separationintervals");
60
61 //convenienttwin->trigonometryalgebra = getBool("Hatching/bool_trigonometryalgebra");
62 //convenienttwin->scratchoff = getBool("Hatching/bool_scratchoff");
63 convenienttwin->antialias = getBool("Hatching/bool_antialias");
64 convenienttwin->opaquebackground = getBool("Hatching/bool_opaquebackground");
65 convenienttwin->subpixelprecision = getBool("Hatching/bool_subpixelprecision");
66
67 if (getBool("Hatching/bool_nocrosshatching"))
68 convenienttwin->crosshatchingstyle = 0;
69 else if (getBool("Hatching/bool_perpendicular"))
70 convenienttwin->crosshatchingstyle = 1;
71 else if (getBool("Hatching/bool_minusthenplus"))
72 convenienttwin->crosshatchingstyle = 2;
73 else if (getBool("Hatching/bool_plusthenminus"))
74 convenienttwin->crosshatchingstyle = 3;
75 if (getBool("Hatching/bool_moirepattern"))
76 convenienttwin->crosshatchingstyle = 4;
77
78}
79
80
82#include "kis_paintop_preset.h"
85
86
88{
90 listWeakToStrong(m_d->uniformProperties);
91
92 if (props.isEmpty()) {
93 {
95 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
96 KisDoubleSliderBasedPaintOpPropertyCallback::SubType_Angle,
97 KoID("hatching_angle", i18n("Hatching Angle")),
98 settings,
99 0);
100
101 prop->setRange(-90, 90);
102 prop->setSingleStep(0.01);
103 prop->setDecimals(2);
104 prop->setSuffix(QStringLiteral("°"));
105
106 prop->setReadCallback(
107 [](KisUniformPaintOpProperty *prop) {
109 option.read(prop->settings().data());
110 prop->setValue(option.angle);
111 });
112 prop->setWriteCallback(
113 [](KisUniformPaintOpProperty *prop) {
115 option.read(prop->settings().data());
116 option.angle = prop->value().toReal();
117 option.write(prop->settings().data());
118 });
119
120 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
121 prop->requestReadValue();
122 props << toQShared(prop);
123 }
124 {
126 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
127 KoID("hatching_separation", i18n("Separation")),
128 settings,
129 0);
130
131 prop->setRange(1.0, 30);
132 prop->setSingleStep(0.01);
133 prop->setDecimals(2);
134 prop->setSuffix(i18n(" px"));
135
136 prop->setReadCallback(
137 [](KisUniformPaintOpProperty *prop) {
139 option.read(prop->settings().data());
140 prop->setValue(option.separation);
141 });
142 prop->setWriteCallback(
143 [](KisUniformPaintOpProperty *prop) {
145 option.read(prop->settings().data());
146 option.separation = prop->value().toReal();
147 option.write(prop->settings().data());
148 });
149
150 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
151 prop->requestReadValue();
152 props << toQShared(prop);
153 }
154 {
156 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
157 KoID("hatching_thickness", i18n("Thickness")),
158 settings,
159 0);
160
161 prop->setRange(1.0, 30);
162 prop->setSingleStep(0.01);
163 prop->setDecimals(2);
164 prop->setSuffix(i18n(" px"));
165
166 prop->setReadCallback(
167 [](KisUniformPaintOpProperty *prop) {
169 option.read(prop->settings().data());
170 prop->setValue(option.thickness);
171 });
172 prop->setWriteCallback(
173 [](KisUniformPaintOpProperty *prop) {
175 option.read(prop->settings().data());
176 option.thickness = prop->value().toReal();
177 option.write(prop->settings().data());
178 });
179
180 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
181 prop->requestReadValue();
182 props << toQShared(prop);
183 }
184 }
185
186 return KisPaintOpSettings::uniformProperties(settings, updateProxy) + props;
187}
188
const QScopedPointer< Private > m_d
KisHatchingPaintOpSettings(KisResourcesInterfaceSP resourcesInterface)
void initializeTwin(KisPaintOpSettingsSP convenienttwin) const
Definition KoID.h:30
QSharedPointer< T > toQShared(T *ptr)
Container< QSharedPointer< T > > listWeakToStrong(const Container< QWeakPointer< T > > &container, bool allOrNothing=true)
KisCallbackBasedPaintopProperty< KisSliderBasedPaintOpProperty< qreal > > KisDoubleSliderBasedPaintOpPropertyCallback
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
QList< KisUniformPaintOpPropertyWSP > uniformProperties
QList< KisUniformPaintOpPropertyWSP > uniformProperties
bool getBool(const QString &name, bool def=false) const
int getInt(const QString &name, int def=0) const
double getDouble(const QString &name, double def=0.0) const