63 d->fadeMaker.setSquareNormCoeffs(
d->xcoef,
d->ycoef);
73 return d->applicator.data();
76inline quint8 KisCurveCircleMaskGenerator::Private::value(qreal dist)
const
78 qreal
distance = dist * curveResolution;
81 qreal alphaValueF =
distance - alphaValue;
84 (1.0 - alphaValueF) * curveData.at(alphaValue) +
85 alphaValueF * curveData.at(alphaValue+1));
87 return (1.0 - alpha) * 255;
97 qreal dist = norme(xr *
d->xcoef, yr *
d->ycoef);
100 if (
d->fadeMaker.needFade(dist, &
value)) {
104 return d->value(dist);
116 if (!
d->dirty &&
softness == 1.0)
return;
129 int size = newList.size();
132 newList.append(newList.at(1));
133 newList[1].setPosition((newList.at(0).position() + newList.at(2).position()) * 0.5);
134 newList[1].setAsCorner(
false);
136 newList[1].setY(qBound<qreal>(0.0,newList.at(1).y() *
softness,1.0));
139 for (
int i = 1; i < size-1; i++){
140 newList[i].setY(qBound<qreal>(0.0,newList.at(i).y() *
softness,1.0));
float value(const T *src, size_t ch)
qreal distance(const QPointF &p1, const QPointF &p2)
auto createOptimizedClass(Args &&...param)
auto createScalarClass(Args &&...params)
quint8 valueAt(qreal x, qreal y) const override
const QScopedPointer< Private > d
~KisCurveCircleMaskGenerator() override
bool shouldVectorize() const override
void setMaskScalarApplicator()
static void transformCurveForSoftness(qreal softness, const QList< KisCubicCurvePoint > &points, int curveResolution, QVector< qreal > &result)
void toXML(QDomDocument &, QDomElement &) const override
KisCurveCircleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, const KisCubicCurve &curve, bool antialiasEdges)
KisMaskGenerator * clone() const override
void setScale(qreal scaleX, qreal scaleY) override
void setSoftness(qreal softness) override
QScopedPointer< KisBrushMaskApplicatorBase > applicator
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