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

#include <kis_rect_mask_generator.h>

+ Inheritance diagram for KisRectangleMaskGenerator:

Public Member Functions

KisBrushMaskApplicatorBaseapplicator () const override
 
KisMaskGeneratorclone () const override
 
 KisRectangleMaskGenerator (const KisRectangleMaskGenerator &rhs)
 
 KisRectangleMaskGenerator (qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges)
 
 Private ()
 
 Private (const Private &rhs)
 
void setMaskScalarApplicator ()
 
void setScale (qreal scaleX, qreal scaleY) override
 
void setSoftness (qreal softness) override
 
bool shouldVectorize () const override
 
quint8 valueAt (qreal x, qreal y) const override
 
 ~KisRectangleMaskGenerator () 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 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

QScopedPointer< KisBrushMaskApplicatorBaseapplicator
 
bool copyOfAntialiasEdges
 
qreal transformedFadeX
 
qreal transformedFadeY
 
qreal xcoeff
 
qreal xfadecoeff
 
qreal ycoeff
 
qreal yfadecoeff
 
- 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< KisRectangleMaskGenerator >
 

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

Represent, serialize and deserialize a rectangular 8-bit mask.

Definition at line 24 of file kis_rect_mask_generator.h.

Constructor & Destructor Documentation

◆ KisRectangleMaskGenerator() [1/2]

KisRectangleMaskGenerator::KisRectangleMaskGenerator ( qreal radius,
qreal ratio,
qreal fh,
qreal fv,
int spikes,
bool antialiasEdges )

Definition at line 26 of file kis_rect_mask_generator.cpp.

28{
29 setScale(1.0, 1.0);
30
31 // store the variable locally to allow vector implementation read it easily
32 d->copyOfAntialiasEdges = antialiasEdges;
34}
auto createOptimizedClass(Args &&...param)
KisMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges, Type type, const KoID &id=DefaultId)
void setScale(qreal scaleX, qreal scaleY) override
const QScopedPointer< Private > d
const KoID DefaultId("default", ki18n("Default"))
generate Krita default mask generator

References KisMaskGenerator::Private::antialiasEdges, createOptimizedClass(), d, and setScale().

◆ KisRectangleMaskGenerator() [2/2]

KisRectangleMaskGenerator::KisRectangleMaskGenerator ( const KisRectangleMaskGenerator & rhs)

Definition at line 36 of file kis_rect_mask_generator.cpp.

References createOptimizedClass(), and d.

◆ ~KisRectangleMaskGenerator()

KisRectangleMaskGenerator::~KisRectangleMaskGenerator ( )
override

Definition at line 48 of file kis_rect_mask_generator.cpp.

49{
50}

Member Function Documentation

◆ applicator()

KisBrushMaskApplicatorBase * KisRectangleMaskGenerator::applicator ( ) const
overridevirtual

Implements KisMaskGenerator.

◆ clone()

KisMaskGenerator * KisRectangleMaskGenerator::clone ( ) const
overridevirtual

Implements KisMaskGenerator.

Definition at line 43 of file kis_rect_mask_generator.cpp.

44{
45 return new KisRectangleMaskGenerator(*this);
46}
KisRectangleMaskGenerator(qreal radius, qreal ratio, qreal fh, qreal fv, int spikes, bool antialiasEdges)

References KisRectangleMaskGenerator().

◆ Private() [1/2]

◆ Private() [2/2]

Definition at line 23 of file kis_rect_mask_generator_p.h.

24 : xcoeff(rhs.xcoeff),
25 ycoeff(rhs.ycoeff),
26 xfadecoeff(rhs.xfadecoeff),
27 yfadecoeff(rhs.yfadecoeff),
28 transformedFadeX(rhs.transformedFadeX),
29 transformedFadeY(rhs.transformedFadeY),
30 copyOfAntialiasEdges(rhs.copyOfAntialiasEdges)
31 {
32 }

◆ setMaskScalarApplicator()

void KisRectangleMaskGenerator::setMaskScalarApplicator ( )

Definition at line 83 of file kis_rect_mask_generator.cpp.

84{
85 d->applicator.reset(
87 this));
88}
auto createScalarClass(Args &&...params)

References createScalarClass(), and d.

◆ setScale()

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

Reimplemented from KisMaskGenerator.

Definition at line 52 of file kis_rect_mask_generator.cpp.

53{
55
56 d->xcoeff = 2.0 / effectiveSrcWidth();
57 d->ycoeff = 2.0 / effectiveSrcHeight();
58 d->xfadecoeff = (horizontalFade() == 0) ? 1 : (2.0 / (horizontalFade() * effectiveSrcWidth()));
59 d->yfadecoeff = (verticalFade() == 0) ? 1 : (2.0 / (verticalFade() * effectiveSrcHeight()));
60
61 setSoftness(this->softness());
62}
virtual void setScale(qreal scaleX, qreal scaleY)
void setSoftness(qreal softness) override

References d, KisMaskGenerator::effectiveSrcHeight(), KisMaskGenerator::effectiveSrcWidth(), KisMaskGenerator::horizontalFade(), KisMaskGenerator::Private::scaleX, KisMaskGenerator::Private::scaleY, KisMaskGenerator::setScale(), setSoftness(), KisMaskGenerator::Private::softness, and KisMaskGenerator::verticalFade().

◆ setSoftness()

void KisRectangleMaskGenerator::setSoftness ( qreal softness)
overridevirtual

Reimplemented from KisMaskGenerator.

Definition at line 64 of file kis_rect_mask_generator.cpp.

65{
67 qreal safeSoftnessCoeff = qreal(1.0) / qMax(qreal(0.01), softness);
68
69 d->transformedFadeX = d->xfadecoeff * safeSoftnessCoeff;
70 d->transformedFadeY = d->yfadecoeff * safeSoftnessCoeff;
71}
virtual void setSoftness(qreal softness)

References d, KisMaskGenerator::setSoftness(), and KisMaskGenerator::Private::softness.

◆ shouldVectorize()

bool KisRectangleMaskGenerator::shouldVectorize ( ) const
overridevirtual

Reimplemented from KisMaskGenerator.

Definition at line 73 of file kis_rect_mask_generator.cpp.

74{
75 return !shouldSupersample() && spikes() == 2;
76}
virtual bool shouldSupersample() const

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

◆ valueAt()

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

Implements KisMaskGenerator.

Definition at line 90 of file kis_rect_mask_generator.cpp.

91{
92 if (isEmpty()) return 255;
93 qreal xr = qAbs(x /*- m_xcenter*/);
94 qreal yr = qAbs(y /*- m_ycenter*/);
95 fixRotation(xr, yr);
96
97 xr = qAbs(xr);
98 yr = qAbs(yr);
99
100 qreal nxr = xr * d->xcoeff;
101 qreal nyr = yr * d->ycoeff;
102
103 if (nxr > 1.0 || nyr > 1.0) return 255;
104
105 if (antialiasEdges()) {
106 xr += 1.0;
107 yr += 1.0;
108 }
109
110 qreal fxr = xr * d->transformedFadeX;
111 qreal fyr = yr * d->transformedFadeY;
112
113 qreal fxnorm = nxr * (fxr - 1.0) / (fxr - nxr);
114 qreal fynorm = nyr * (fyr - 1.0) / (fyr - nyr);
115
116 qreal retValue = 0;
117
118 if(fxr > 1.0) {
119 retValue = fxnorm;
120 }
121
122 if (fxnorm < fynorm && fyr > 1.0) {
123 retValue = fynorm;
124 }
125
126 return retValue * 255;
127}
void fixRotation(qreal &xr, qreal &yr) const

References KisMaskGenerator::Private::antialiasEdges, d, KisMaskGenerator::fixRotation(), and KisMaskGenerator::isEmpty().

Friends And Related Symbol Documentation

◆ FastRowProcessor< KisRectangleMaskGenerator >

Definition at line 44 of file kis_rect_mask_generator.h.

Member Data Documentation

◆ applicator

KisBrushMaskApplicatorBase * KisRectangleMaskGenerator::applicator

Definition at line 42 of file kis_rect_mask_generator_p.h.

◆ copyOfAntialiasEdges

bool KisRectangleMaskGenerator::copyOfAntialiasEdges

Definition at line 40 of file kis_rect_mask_generator_p.h.

◆ d

const QScopedPointer<Private> KisRectangleMaskGenerator::d
private

Definition at line 44 of file kis_rect_mask_generator.h.

◆ transformedFadeX

qreal KisRectangleMaskGenerator::transformedFadeX

Definition at line 37 of file kis_rect_mask_generator_p.h.

◆ transformedFadeY

qreal KisRectangleMaskGenerator::transformedFadeY

Definition at line 38 of file kis_rect_mask_generator_p.h.

◆ xcoeff

qreal KisRectangleMaskGenerator::xcoeff

Definition at line 33 of file kis_rect_mask_generator_p.h.

◆ xfadecoeff

qreal KisRectangleMaskGenerator::xfadecoeff

Definition at line 35 of file kis_rect_mask_generator_p.h.

◆ ycoeff

qreal KisRectangleMaskGenerator::ycoeff

Definition at line 34 of file kis_rect_mask_generator_p.h.

◆ yfadecoeff

qreal KisRectangleMaskGenerator::yfadecoeff

Definition at line 36 of file kis_rect_mask_generator_p.h.


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