55 d->xcoeff = 1.0 / halfWidth;
56 d->ycoeff = 1.0 / halfHeight;
58 d->fadeMaker.setLimits(halfWidth, halfHeight);
65quint8 KisCurveRectangleMaskGenerator::Private::value(qreal xr, qreal yr)
const
67 xr = qAbs(xr) * xcoeff;
68 yr = qAbs(yr) * ycoeff;
70 int sIndex = qRound(xr * (curveResolution));
71 int tIndex = qRound(yr * (curveResolution));
73 int sIndexInverted = curveResolution - sIndex;
74 int tIndexInverted = curveResolution - tIndex;
76 qreal blend = (curveData.at(sIndex) * (1.0 - curveData.at(sIndexInverted)) *
77 curveData.at(tIndex) * (1.0 - curveData.at(tIndexInverted)));
79 return (1.0 - blend) * 255;
90 if (
d->fadeMaker.needFade(xr, yr, &
value)) {
94 return d->value(xr, yr);
106 if (!
d->dirty &&
softness == 1.0)
return;
120 return d->applicator.data();
float value(const T *src, size_t ch)
auto createOptimizedClass(Args &&...param)
auto createScalarClass(Args &&...params)
static void transformCurveForSoftness(qreal softness, const QList< KisCubicCurvePoint > &points, int curveResolution, QVector< qreal > &result)
void toXML(QDomDocument &, QDomElement &) const override
const QScopedPointer< Private > d
void setMaskScalarApplicator()
KisCurveRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, const KisCubicCurve &curve, bool antialiasEdges)
void setScale(qreal scaleX, qreal scaleY) override
void setSoftness(qreal softness) override
bool shouldVectorize() const override
QScopedPointer< KisBrushMaskApplicatorBase > applicator
quint8 valueAt(qreal x, qreal y) const override
~KisCurveRectangleMaskGenerator() override
KisMaskGenerator * clone() const override
void setCurveString(const QString &curveString)
virtual void setSoftness(qreal softness)
virtual bool shouldSupersample() const
virtual void toXML(QDomDocument &, QDomElement &) const
const QScopedPointer< Private > d
void fixRotation(qreal &xr, qreal &yr) const
qreal effectiveSrcHeight() const
virtual void setScale(qreal scaleX, qreal scaleY)
qreal effectiveSrcWidth() const
QString curveString() const
const KoID SoftId("soft", ki18n("Soft"))
generate brush mask from former softbrush paintop, where softness is based on curve
static const int OVERSAMPLING
const QVector< qreal > floatTransfer(int size=256) const
const QList< KisCubicCurvePoint > & curvePoints() const