Krita Source Code Documentation
Loading...
Searching...
No Matches
KisCachedGradientShapeStrategy Class Reference

#include <kis_cached_gradient_shape_strategy.h>

+ Inheritance diagram for KisCachedGradientShapeStrategy:

Public Member Functions

 KisCachedGradientShapeStrategy (const QRect &rc, qreal xStep, qreal yStep, KisGradientShapeStrategy *baseStrategy)
 
double valueAt (double x, double y) const override
 
 ~KisCachedGradientShapeStrategy () override
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 
- Public Member Functions inherited from KisGradientShapeStrategy
 KisGradientShapeStrategy ()
 
 KisGradientShapeStrategy (const QPointF &gradientVectorStart, const QPointF &gradientVectorEnd)
 
virtual ~KisGradientShapeStrategy ()
 

Public Attributes

QScopedPointer< KisGradientShapeStrategybaseStrategy
 
QRect rc
 
QScopedPointer< KisBSpline2Dspline
 
qreal xStep
 
qreal yStep
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Private Attributes

const QScopedPointer< Privatem_d
 

Additional Inherited Members

- Protected Attributes inherited from KisGradientShapeStrategy
QPointF m_gradientVectorEnd
 
QPointF m_gradientVectorStart
 

Detailed Description

Definition at line 22 of file kis_cached_gradient_shape_strategy.cpp.

Constructor & Destructor Documentation

◆ KisCachedGradientShapeStrategy()

KisCachedGradientShapeStrategy::KisCachedGradientShapeStrategy ( const QRect & rc,
qreal xStep,
qreal yStep,
KisGradientShapeStrategy * baseStrategy )

Definition at line 31 of file kis_cached_gradient_shape_strategy.cpp.

36 m_d(new Private())
37{
38 using namespace std::placeholders; // for _1, _2, _3...
39
40 KIS_ASSERT_RECOVER_NOOP(rc.width() >= 3 && rc.height() >= 3);
41
42 m_d->rc = rc;
43 m_d->xStep = xStep;
44 m_d->yStep = yStep;
45 m_d->baseStrategy.reset(baseStrategy);
46
47 qreal xStart = rc.x();
48 qreal yStart = rc.y();
49 qreal xEnd = rc.x() + rc.width();
50 qreal yEnd = rc.y() + rc.height();
51
52 int numSamplesX = std::ceil(qreal(rc.width()) / xStep);
53 int numSamplesY = std::ceil(qreal(rc.height()) / yStep);
54
55 if (numSamplesX < 2 || numSamplesY < 2) {
57 warnKrita << "############";
58 warnKrita << "WARNING: KisCachedGradientShapeStrategy numSamplesX/Y is too small!" << ppVar(numSamplesX) << ppVar(numSamplesY);
59 warnKrita << "WARNING:" << ppVar(rc) << ppVar(xStep) << ppVar(yStep);
60 warnKrita << "WARNING:" << ppVar(numSamplesX) << ppVar(numSamplesY);
61
62 numSamplesX = qMax(numSamplesX, 2);
63 numSamplesY = qMax(numSamplesY, 2);
64
65 warnKrita << "WARNING: adjusting:" << ppVar(numSamplesX) << ppVar(numSamplesY);
66 warnKrita << "############";
68 }
69
70 m_d->spline.reset(new KisBSpline2D(xStart, xEnd, numSamplesX, Natural,
71 yStart, yEnd, numSamplesY, Natural));
72
73
74 std::function<qreal(qreal, qreal)> valueOp =
75 std::bind(&KisGradientShapeStrategy::valueAt, m_d->baseStrategy.data(), _1, _2);
76
77 m_d->spline->initializeSpline(valueOp);
78
79}
virtual double valueAt(double x, double y) const =0
#define KIS_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:97
#define warnKrita
Definition kis_debug.h:87
#define ppVar(var)
Definition kis_debug.h:155
QScopedPointer< KisGradientShapeStrategy > baseStrategy

References baseStrategy, KIS_ASSERT_RECOVER_NOOP, m_d, KisBSplines::Natural, ppVar, rc, KisGradientShapeStrategy::valueAt(), warnKrita, xStep, and yStep.

◆ ~KisCachedGradientShapeStrategy()

KisCachedGradientShapeStrategy::~KisCachedGradientShapeStrategy ( )
override

Definition at line 81 of file kis_cached_gradient_shape_strategy.cpp.

82{
83}

Member Function Documentation

◆ valueAt()

double KisCachedGradientShapeStrategy::valueAt ( double x,
double y ) const
overridevirtual

Implements KisGradientShapeStrategy.

Definition at line 85 of file kis_cached_gradient_shape_strategy.cpp.

86{
87 QPointF pt = KisAlgebra2D::ensureInRect(QPointF(x, y), m_d->rc);
88 return m_d->spline->value(pt.x(), pt.y());
89}
QPoint ensureInRect(QPoint pt, const QRect &bounds)

References KisAlgebra2D::ensureInRect(), and m_d.

Member Data Documentation

◆ baseStrategy

QScopedPointer<KisGradientShapeStrategy> KisCachedGradientShapeStrategy::baseStrategy

Definition at line 27 of file kis_cached_gradient_shape_strategy.cpp.

◆ m_d

const QScopedPointer<Private> KisCachedGradientShapeStrategy::m_d
private

Definition at line 28 of file kis_cached_gradient_shape_strategy.h.

◆ rc

QRect KisCachedGradientShapeStrategy::rc

Definition at line 24 of file kis_cached_gradient_shape_strategy.cpp.

◆ spline

QScopedPointer<KisBSpline2D> KisCachedGradientShapeStrategy::spline

Definition at line 28 of file kis_cached_gradient_shape_strategy.cpp.

◆ xStep

qreal KisCachedGradientShapeStrategy::xStep

Definition at line 25 of file kis_cached_gradient_shape_strategy.cpp.

◆ yStep

qreal KisCachedGradientShapeStrategy::yStep

Definition at line 26 of file kis_cached_gradient_shape_strategy.cpp.


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