Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_roundmarkerop_settings.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
10#include <QPointer>
11
12
17
20 KisCurrentOutlineFetcher::ROTATION_OPTION |
21 KisCurrentOutlineFetcher::MIRROR_OPTION,
22 resourcesInterface),
23 m_d(new Private)
24{
25}
26
30
32 return false;
33}
34
36{
38 option.read(this);
39 option.diameter = value;
40 option.write(this);
41}
42
44{
46 option.read(this);
47 return option.diameter;
48}
49
51{
52 Q_UNUSED(value);
53}
54
56{
57 return 0.0;
58}
59
61{
63
64 if (mode.isVisible) {
65 qreal finalScale = 1.0;
66
68 option.read(this);
69 // Adding 1 for the antialiasing/fade.
70 const qreal radius = (0.5 * option.diameter) + 1;
71
72 QPainterPath realOutline;
73 realOutline.addEllipse(QPointF(), radius, radius);
74
75 path = outlineFetcher()->fetchOutline(info, this, realOutline, mode, alignForZoom, finalScale);
76
77 if (mode.showTiltDecoration) {
78 QPainterPath tiltLine = makeTiltIndicator(info,
79 realOutline.boundingRect().center(),
80 realOutline.boundingRect().width() * 0.5,
81 3.0);
82 path.addPath(outlineFetcher()->fetchOutline(info, this, tiltLine, mode, alignForZoom, finalScale, 0.0, true, realOutline.boundingRect().center().x(), realOutline.boundingRect().center().y()));
83 }
84 }
85
86 return path;
87}
88
92
94{
96 listWeakToStrong(m_d->uniformProperties);
97
98 if (props.isEmpty()) {
99 {
101 new KisUniformPaintOpPropertyCallback(KisUniformPaintOpPropertyCallback::Bool, KoID("auto_spacing", i18n("Auto Spacing")), settings, 0);
102
103 prop->setReadCallback(
104 [](KisUniformPaintOpProperty *prop) {
106 data.read(prop->settings().data());
107
108 prop->setValue(data.useAutoSpacing);
109 });
110 prop->setWriteCallback(
111 [](KisUniformPaintOpProperty *prop) {
113 data.read(prop->settings().data());
114 data.useAutoSpacing = prop->value().toBool();
115 data.write(prop->settings().data());
116 });
117
118 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
119 prop->requestReadValue();
120 props << toQShared(prop);
121 }
122
123 {
125 new KisDoubleSliderBasedPaintOpPropertyCallback(KisDoubleSliderBasedPaintOpPropertyCallback::Double,
126 KoID("spacing", i18n("Spacing")),
127 settings,
128 0);
129
130 prop->setRange(0.01, 10);
131 prop->setSingleStep(0.01);
132 prop->setExponentRatio(3.0);
133
134 prop->setReadCallback(
135 [](KisUniformPaintOpProperty *prop) {
137 data.read(prop->settings().data());
138
139 prop->setValue(data.autoSpacingCoeff);
140 });
141 prop->setWriteCallback(
142 [](KisUniformPaintOpProperty *prop) {
144 data.read(prop->settings().data());
145 data.autoSpacingCoeff = prop->value().toBool();
146 data.write(prop->settings().data());
147 });
148
149 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
150 prop->requestReadValue();
151 props << toQShared(prop);
152 }
153 }
154
155 return KisPaintOpSettings::uniformProperties(settings, updateProxy) + props;
156}
float value(const T *src, size_t ch)
KisOptimizedBrushOutline fetchOutline(const KisPaintInformation &info, const KisPaintOpSettingsSP settings, const KisOptimizedBrushOutline &originalOutline, const KisPaintOpSettings::OutlineMode &mode, qreal alignForZoom, qreal additionalScale=1.0, qreal additionalRotation=0.0, bool tilt=false, qreal tiltcenterx=1.0, qreal tiltcentery=1.0) const
const KisCurrentOutlineFetcher * outlineFetcher() const
KisRoundMarkerOpSettings(KisResourcesInterfaceSP resourcesInterface)
void setPaintOpAngle(qreal value) override
void setPaintOpSize(qreal value) override
const QScopedPointer< Private > m_d
KisOptimizedBrushOutline brushOutline(const KisPaintInformation &info, const OutlineMode &mode, qreal alignForZoom) override
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
KisCallbackBasedPaintopProperty< KisUniformPaintOpProperty > KisUniformPaintOpPropertyCallback
static QPainterPath makeTiltIndicator(KisPaintInformation const &info, QPointF const &start, qreal lengthScale, qreal angle)
QList< KisUniformPaintOpPropertyWSP > uniformProperties
bool read(const KisPropertiesConfiguration *setting)
void write(KisPropertiesConfiguration *setting) const
QList< KisUniformPaintOpPropertyWSP > uniformProperties