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

#include <KisScatterOption.h>

+ Inheritance diagram for KisScatterOption:

Public Member Functions

QPointF apply (const KisPaintInformation &info, qreal width, qreal height) const
 
 KisScatterOption (const KisPropertiesConfiguration *setting)
 
- Public Member Functions inherited from KisCurveOption
qreal computeRotationLikeValue (const KisPaintInformation &info, qreal baseValue, bool absoluteAxesFlipped, qreal scalingPartCoeff, bool disableScalingPart) const
 
qreal computeSizeLikeValue (const KisPaintInformation &info, bool useStrengthValue=true) const
 
ValueComponents computeValueComponents (const KisPaintInformation &info, bool useStrengthValue) const
 
bool isChecked () const
 
bool isRandom () const
 
 KisCurveOption (const KisCurveOptionData &data)
 
 KisCurveOption (KisCurveOption &)=delete
 
KisCurveOptionoperator= (KisCurveOption &)=delete
 
qreal strengthMaxValue () const
 
qreal strengthMinValue () const
 
qreal strengthValue () const
 

Private Member Functions

 KisScatterOption (const KisScatterOptionData &data)
 

Private Attributes

bool m_axisX
 
bool m_axisY
 

Detailed Description

Definition at line 13 of file KisScatterOption.h.

Constructor & Destructor Documentation

◆ KisScatterOption() [1/2]

KisScatterOption::KisScatterOption ( const KisPropertiesConfiguration * setting)

Definition at line 20 of file KisScatterOption.cpp.

21 : KisScatterOption(kpou::loadOptionData<KisScatterOptionData>(setting))
22{
23}
KisScatterOption(const KisPropertiesConfiguration *setting)

◆ KisScatterOption() [2/2]

KisScatterOption::KisScatterOption ( const KisScatterOptionData & data)
private

Definition at line 25 of file KisScatterOption.cpp.

26 : KisCurveOption(data)
27 , m_axisX(data.axisX)
28 , m_axisY(data.axisY)
29{
30}
KisCurveOption(const KisCurveOptionData &data)

Member Function Documentation

◆ apply()

QPointF KisScatterOption::apply ( const KisPaintInformation & info,
qreal width,
qreal height ) const

Definition at line 32 of file KisScatterOption.cpp.

33{
34 if ((!m_axisX && !m_axisY) || (!isChecked())) {
35 return info.pos();
36 }
37
38 // just use the most significant dimension for calculations
39 qreal diameter = qMax(width, height);
40 qreal sensorValue = computeSizeLikeValue(info);
41
42 qreal jitter = (2.0 * info.randomSource()->generateNormalized() - 1.0) * diameter * sensorValue;
43 QPointF result(0.0, 0.0);
44
45 if (m_axisX && m_axisY) {
46 qreal jitterY = (2.0 * info.randomSource()->generateNormalized() - 1.0) * diameter * sensorValue;
47 result = QPointF(jitter, jitterY);
48 return info.pos() + result;
49 }
50
51 qreal drawingAngle = info.drawingAngle();
52 QVector2D movement(cos(drawingAngle), sin(drawingAngle));
53 if (m_axisX) {
54 movement *= jitter;
55 result = movement.toPointF();
56 }
57 else if (m_axisY) {
58 QVector2D movementNormal(-movement.y(), movement.x());
59 movementNormal *= jitter;
60 result = movementNormal.toPointF();
61 }
62
63 return info.pos() + result;
64}
bool isChecked() const
qreal computeSizeLikeValue(const KisPaintInformation &info, bool useStrengthValue=true) const
KisRandomSourceSP randomSource() const
const QPointF & pos() const
qreal drawingAngle(bool considerLockedAngle=false) const
qreal generateNormalized() const

References KisCurveOption::computeSizeLikeValue(), KisPaintInformation::drawingAngle(), KisRandomSource::generateNormalized(), KisCurveOption::isChecked(), m_axisX, m_axisY, KisPaintInformation::pos(), and KisPaintInformation::randomSource().

Member Data Documentation

◆ m_axisX

bool KisScatterOption::m_axisX
private

Definition at line 24 of file KisScatterOption.h.

◆ m_axisY

bool KisScatterOption::m_axisY
private

Definition at line 25 of file KisScatterOption.h.


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