Krita Source Code Documentation
Loading...
Searching...
No Matches
KisGaussRectangleMaskGenerator Struct Reference

#include <kis_gauss_rect_mask_generator.h>

+ Inheritance diagram for KisGaussRectangleMaskGenerator:

Public Member Functions

KisBrushMaskApplicatorBaseapplicator () const override
 
KisMaskGeneratorclone () const override
 
 KisGaussRectangleMaskGenerator (const KisGaussRectangleMaskGenerator &rhs)
 
 KisGaussRectangleMaskGenerator (qreal diameter, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges)
 
 Private (bool enableAntialiasing)
 
 Private (const Private &rhs)
 
void setMaskScalarApplicator ()
 
void setScale (qreal scaleX, qreal scaleY) override
 
bool shouldVectorize () const override
 
quint8 value (qreal x, qreal y) const
 
quint8 valueAt (qreal x, qreal y) const override
 
 ~KisGaussRectangleMaskGenerator () override
 
- Public Member Functions inherited from KisMaskGenerator
bool antialiasEdges () const
 
QString curveString () const
 
qreal diameter () const
 
void fixRotation (qreal &xr, qreal &yr) const
 
qreal height () const
 
qreal horizontalFade () const
 
QString id () const
 
bool isEmpty () const
 
 KisMaskGenerator (const KisMaskGenerator &rhs)
 
 KisMaskGenerator (qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges, Type type, const KoID &id=DefaultId)
 
QString name () const
 
qreal ratio () const
 
void setCurveString (const QString &curveString)
 
void setDiameter (qreal value)
 
virtual void setSoftness (qreal softness)
 
virtual bool shouldSupersample () const
 
virtual bool shouldSupersample6x6 () const
 
qreal softness () const
 
int spikes () const
 
virtual void toXML (QDomDocument &, QDomElement &) const
 
Type type () const
 
qreal verticalFade () const
 
qreal width () const
 
virtual ~KisMaskGenerator ()
 
- Public Member Functions inherited from KisMaskGenerator::Private
 Private ()
 
 Private (const Private &rhs)
 

Public Attributes

qreal alphafactor {0.0}
 
QScopedPointer< KisBrushMaskApplicatorBaseapplicator
 
KisAntialiasingFadeMaker2D< PrivatefadeMaker
 
qreal halfHeight {0.0}
 
qreal halfWidth {0.0}
 
qreal xfade {0.0}
 
qreal yfade {0.0}
 
- Public Attributes inherited from KisMaskGenerator::Private
bool antialiasEdges
 
qreal cachedSpikesAngle
 
qreal cs
 
QString curveString
 
qreal diameter
 
bool empty
 
qreal fh
 
qreal fv
 
qreal ratio
 
qreal scaleX
 
qreal scaleY
 
qreal softness
 
int spikes
 
qreal ss
 
Type type
 

Private Attributes

const QScopedPointer< Privated
 

Friends

struct FastRowProcessor< KisGaussRectangleMaskGenerator >
 

Additional Inherited Members

- Public Types inherited from KisMaskGenerator
enum  Type { CIRCLE , RECTANGLE }
 
- Static Public Member Functions inherited from KisMaskGenerator
static KisMaskGeneratorfromXML (const QDomElement &)
 
static QList< KoIDmaskGeneratorIds ()
 
- Protected Member Functions inherited from KisMaskGenerator
qreal effectiveSrcHeight () const
 
qreal effectiveSrcWidth () const
 

Detailed Description

This mask generator uses a Gaussian-blurred rectangle

Definition at line 22 of file kis_gauss_rect_mask_generator.h.

Constructor & Destructor Documentation

◆ KisGaussRectangleMaskGenerator() [1/2]

KisGaussRectangleMaskGenerator::KisGaussRectangleMaskGenerator ( qreal diameter,
qreal ratio,
qreal fh,
qreal fv,
int spikes,
bool antialiasEdges )

Definition at line 36 of file kis_gauss_rect_mask_generator.cpp.

38{
39 setScale(1.0, 1.0);
40
42}
auto createOptimizedClass(Args &&...param)
void setScale(qreal scaleX, qreal scaleY) override
KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges, Type type, const KoID &id=DefaultId)
const KoID GaussId("gauss", ki18n("Gaussian"))
generate brush mask with a Gaussian-blurred edge

References createOptimizedClass(), d, and setScale().

◆ KisGaussRectangleMaskGenerator() [2/2]

KisGaussRectangleMaskGenerator::KisGaussRectangleMaskGenerator ( const KisGaussRectangleMaskGenerator & rhs)

Definition at line 44 of file kis_gauss_rect_mask_generator.cpp.

45 : KisMaskGenerator(rhs),
46 d(new Private(*rhs.d))
47{
49}

References createOptimizedClass(), and d.

◆ ~KisGaussRectangleMaskGenerator()

KisGaussRectangleMaskGenerator::~KisGaussRectangleMaskGenerator ( )
override

Definition at line 76 of file kis_gauss_rect_mask_generator.cpp.

77{
78}

Member Function Documentation

◆ applicator()

KisBrushMaskApplicatorBase * KisGaussRectangleMaskGenerator::applicator ( ) const
overridevirtual

Implements KisMaskGenerator.

◆ clone()

KisMaskGenerator * KisGaussRectangleMaskGenerator::clone ( ) const
overridevirtual

Implements KisMaskGenerator.

Definition at line 51 of file kis_gauss_rect_mask_generator.cpp.

52{
53 return new KisGaussRectangleMaskGenerator(*this);
54}
KisGaussRectangleMaskGenerator(qreal diameter, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges)

References KisGaussRectangleMaskGenerator().

◆ Private() [1/2]

KisGaussRectangleMaskGenerator::Private ( bool enableAntialiasing)
inline

Definition at line 18 of file kis_gauss_rect_mask_generator_p.h.

19 : fadeMaker(*this, enableAntialiasing)
20 {
21 }
KisAntialiasingFadeMaker2D< Private > fadeMaker

◆ Private() [2/2]

◆ setMaskScalarApplicator()

void KisGaussRectangleMaskGenerator::setMaskScalarApplicator ( )

Definition at line 111 of file kis_gauss_rect_mask_generator.cpp.

112{
113 d->applicator.reset(
116}
auto createScalarClass(Args &&...params)

References createScalarClass(), and KisMaskGenerator::d.

◆ setScale()

void KisGaussRectangleMaskGenerator::setScale ( qreal scaleX,
qreal scaleY )
overridevirtual

Reimplemented from KisMaskGenerator.

Definition at line 56 of file kis_gauss_rect_mask_generator.cpp.

57{
59
60 qreal width = effectiveSrcWidth();
61 qreal height = effectiveSrcHeight();
62
63 qreal xfade = (1.0 - horizontalFade()/2.0) * width * 0.1;
64 qreal yfade = (1.0 - verticalFade()/2.0) * height * 0.1;
65 d->xfade = 1.0 / (M_SQRT_2 * xfade);
66 d->yfade = 1.0 / (M_SQRT_2 * yfade);
67 d->halfWidth = width * 0.5 - 2.5 * xfade;
68 d->halfHeight = height * 0.5 - 2.5 * yfade;
69 d->alphafactor = 255.0 / (4.0 * erf(d->halfWidth * d->xfade) * erf(d->halfHeight * d->yfade));
70
71 if (std::isnan(d->alphafactor)) d->alphafactor = 0.0f; // erf can return nan if ratio is 0
72
73 d->fadeMaker.setLimits(0.5 * width, 0.5 * height);
74}
virtual void setScale(qreal scaleX, qreal scaleY)

References d, KisMaskGenerator::effectiveSrcHeight(), KisMaskGenerator::effectiveSrcWidth(), KisMaskGenerator::height(), KisMaskGenerator::horizontalFade(), M_SQRT_2, KisMaskGenerator::Private::scaleX, KisMaskGenerator::Private::scaleY, KisMaskGenerator::setScale(), KisMaskGenerator::verticalFade(), KisMaskGenerator::width(), xfade, and yfade.

◆ shouldVectorize()

bool KisGaussRectangleMaskGenerator::shouldVectorize ( ) const
overridevirtual

Reimplemented from KisMaskGenerator.

Definition at line 101 of file kis_gauss_rect_mask_generator.cpp.

102{
103 return !shouldSupersample() && spikes() == 2;
104}
virtual bool shouldSupersample() const

References KisMaskGenerator::shouldSupersample(), and KisMaskGenerator::spikes().

◆ value()

quint8 KisGaussRectangleMaskGenerator::value ( qreal x,
qreal y ) const
inline

◆ valueAt()

quint8 KisGaussRectangleMaskGenerator::valueAt ( qreal x,
qreal y ) const
overridevirtual
Returns
the alpha value at the position (x,y)

Implements KisMaskGenerator.

Definition at line 86 of file kis_gauss_rect_mask_generator.cpp.

87{
88 if (isEmpty()) return 255;
89 qreal xr = x;
90 qreal yr = qAbs(y);
91 fixRotation(xr, yr);
92
93 quint8 value;
94 if (d->fadeMaker.needFade(xr, yr, &value)) {
95 return value;
96 }
97
98 return d->value(xr, yr);
99}
quint8 value(qreal x, qreal y) const
void fixRotation(qreal &xr, qreal &yr) const

References KisMaskGenerator::d, KisMaskGenerator::fixRotation(), KisMaskGenerator::isEmpty(), and value().

Friends And Related Symbol Documentation

◆ FastRowProcessor< KisGaussRectangleMaskGenerator >

Definition at line 40 of file kis_gauss_rect_mask_generator.h.

Member Data Documentation

◆ alphafactor

qreal KisGaussRectangleMaskGenerator::alphafactor {0.0}

Definition at line 37 of file kis_gauss_rect_mask_generator_p.h.

37{0.0};

◆ applicator

KisBrushMaskApplicatorBase * KisGaussRectangleMaskGenerator::applicator

Definition at line 41 of file kis_gauss_rect_mask_generator_p.h.

◆ d

const QScopedPointer<Private> KisGaussRectangleMaskGenerator::d
private

Definition at line 40 of file kis_gauss_rect_mask_generator.h.

◆ fadeMaker

KisAntialiasingFadeMaker2D<Private> KisGaussRectangleMaskGenerator::fadeMaker

Definition at line 39 of file kis_gauss_rect_mask_generator_p.h.

◆ halfHeight

qreal KisGaussRectangleMaskGenerator::halfHeight {0.0}

Definition at line 36 of file kis_gauss_rect_mask_generator_p.h.

36{0.0};

◆ halfWidth

qreal KisGaussRectangleMaskGenerator::halfWidth {0.0}

Definition at line 35 of file kis_gauss_rect_mask_generator_p.h.

35{0.0};

◆ xfade

qreal KisGaussRectangleMaskGenerator::xfade {0.0}

Definition at line 33 of file kis_gauss_rect_mask_generator_p.h.

33{0.0};

◆ yfade

qreal KisGaussRectangleMaskGenerator::yfade {0.0}

Definition at line 34 of file kis_gauss_rect_mask_generator_p.h.

34{0.0};

The documentation for this struct was generated from the following files: