69 return getBool(
"Deform/useMovementPaint");
77 qreal width =
getInt(
"Brush/diameter");
84 QPainterPath tiltLine =
makeTiltIndicator(info, QPointF(0.0, 0.0), width * 0.5, 3.0);
85 path.addPath(
outlineFetcher()->fetchOutline(info,
this, tiltLine, mode, alignForZoom, 1.0, 0.0,
true, 0, 0));
104 if (props.isEmpty()) {
108 KoID(
"deform_amount", i18n(
"Amount")),
112 prop->setRange(0.01, 1.0);
113 prop->setSingleStep(0.01);
114 prop->setDecimals(2);
119 option.
read(prop->settings().data());
125 option.
read(prop->settings().data());
127 option.
write(prop->settings().data());
130 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
131 prop->requestReadValue();
139 modes << i18nc(
"Grow as in deform brush engine",
"Grow");
140 modes << i18nc(
"Shrink as in deform brush engine",
"Shrink");
141 modes << i18n(
"Swirl CW");
142 modes << i18n(
"Swirl CCW");
143 modes << i18n(
"Move");
144 modes << i18n(
"Lens Zoom In");
145 modes << i18n(
"Lens Zoom Out");
146 modes << i18nc(
"Rearrange the positions of the pixels under the cursor",
"Color Deformation");
148 prop->setItems(modes);
153 option.
read(prop->settings().data());
159 option.
read(prop->settings().data());
161 option.
write(prop->settings().data());
164 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
165 prop->requestReadValue();
173 KisIntSliderBasedPaintOpPropertyCallback::SubType_Angle,
174 KoID(
"deform_angle", i18n(
"Angle")),
178 const QString degree(QStringLiteral(
"°"));
179 prop->setRange(0, 360);
180 prop->setSingleStep(1);
181 prop->setSuffix(degree);
186 option.
read(prop->settings().data());
193 option.
read(prop->settings().data());
195 option.
write(prop->settings().data());
198 QObject::connect(updateProxy, SIGNAL(sigSettingsChanged()), prop, SLOT(requestReadValue()));
199 prop->requestReadValue();
208 if (prop->id() == opacity.id() ||
209 prop->id() == size.id()) {
float value(const T *src, size_t ch)
void setWriteCallback(Callback func)
void setReadCallback(Callback func)
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
KisCallbackBasedPaintopProperty< KisComboBasedPaintOpProperty > KisComboBasedPaintOpPropertyCallback
const QString AIRBRUSH_ENABLED
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
void write(KisPropertiesConfiguration *setting) const
bool read(const KisPropertiesConfiguration *setting)
static QPainterPath makeTiltIndicator(KisPaintInformation const &info, QPointF const &start, qreal lengthScale, qreal angle)
static KisOptimizedBrushOutline ellipseOutline(qreal width, qreal height, qreal scale, qreal rotation)
QList< KisUniformPaintOpPropertyWSP > uniformProperties
virtual bool hasProperty(const QString &name) const
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