Krita Source Code Documentation
Loading...
Searching...
No Matches
KisDynamicSensor Class Referenceabstract

#include <KisDynamicSensor.h>

+ Inheritance diagram for KisDynamicSensor:

Public Member Functions

KoID id () const
 
virtual bool isAbsoluteRotation () const
 
virtual bool isAdditive () const
 
 KisDynamicSensor (const KoID &id, const KisSensorData &data, std::optional< KisCubicCurve > curveOverride)
 
qreal parameter (const KisPaintInformation &info) const
 
virtual ~KisDynamicSensor ()
 

Static Public Member Functions

static qreal additiveToScaling (qreal x)
 
static qreal scalingToAdditive (qreal x)
 

Protected Member Functions

virtual qreal value (const KisPaintInformation &info) const =0
 

Private Attributes

std::optional< KisCubicCurvem_curve
 
KoID m_id
 

Detailed Description

Definition at line 16 of file KisDynamicSensor.h.

Constructor & Destructor Documentation

◆ KisDynamicSensor()

KisDynamicSensor::KisDynamicSensor ( const KoID & id,
const KisSensorData & data,
std::optional< KisCubicCurve > curveOverride )

Definition at line 11 of file KisDynamicSensor.cpp.

14 : m_id(id),
15 m_curve(curveOverride ?
16 *curveOverride :
17 KisCubicCurve(data.curve))
18{
20
21 if (m_curve->isIdentity()) {
22 m_curve = std::nullopt;
23 }
24}
std::optional< KisCubicCurve > m_curve
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130

References KisSensorData::id, KIS_SAFE_ASSERT_RECOVER_NOOP, and m_curve.

◆ ~KisDynamicSensor()

KisDynamicSensor::~KisDynamicSensor ( )
virtual

Definition at line 26 of file KisDynamicSensor.cpp.

27{
28}

Member Function Documentation

◆ additiveToScaling()

static qreal KisDynamicSensor::additiveToScaling ( qreal x)
inlinestatic

Definition at line 40 of file KisDynamicSensor.h.

40 {
41 return 0.5 * (1.0 + x);
42 }

◆ id()

KoID KisDynamicSensor::id ( ) const

Definition at line 30 of file KisDynamicSensor.cpp.

31{
32 return m_id;
33}

References m_id.

◆ isAbsoluteRotation()

bool KisDynamicSensor::isAbsoluteRotation ( ) const
virtual

Reimplemented in KisDynamicSensorDrawingAngle.

Definition at line 58 of file KisDynamicSensor.cpp.

59{
60 return false;
61}

◆ isAdditive()

bool KisDynamicSensor::isAdditive ( ) const
virtual

Reimplemented in KisDynamicSensorFuzzyBase, KisDynamicSensorRotation, and KisDynamicSensorTiltDirection.

Definition at line 53 of file KisDynamicSensor.cpp.

54{
55 return false;
56}

◆ parameter()

qreal KisDynamicSensor::parameter ( const KisPaintInformation & info) const

Definition at line 35 of file KisDynamicSensor.cpp.

36{
37 const qreal val = value(info);
38 if (m_curve) {
39 qreal scaledVal = isAdditive() ? additiveToScaling(val) :
40 isAbsoluteRotation() ? KisAlgebra2D::wrapValue(val + 0.5, 0.0, 1.0) : val;
41
42 const QVector<qreal> transfer = m_curve->floatTransfer(256);
43 scaledVal = KisCubicCurve::interpolateLinear(scaledVal, transfer);
44
45 return isAdditive() ? scalingToAdditive(scaledVal) :
46 isAbsoluteRotation() ? KisAlgebra2D::wrapValue(scaledVal + 0.5, 0.0, 1.0) : scaledVal;
47 }
48 else {
49 return val;
50 }
51}
static qreal additiveToScaling(qreal x)
virtual bool isAdditive() const
virtual qreal value(const KisPaintInformation &info) const =0
static qreal scalingToAdditive(qreal x)
virtual bool isAbsoluteRotation() const
T wrapValue(T value, T wrapBounds)
static qreal interpolateLinear(qreal normalizedValue, const QVector< qreal > &transfer)

References additiveToScaling(), KisCubicCurve::interpolateLinear(), isAbsoluteRotation(), isAdditive(), m_curve, scalingToAdditive(), value(), and KisAlgebra2D::wrapValue().

◆ scalingToAdditive()

static qreal KisDynamicSensor::scalingToAdditive ( qreal x)
inlinestatic

Definition at line 36 of file KisDynamicSensor.h.

36 {
37 return -1.0 + 2.0 * x;
38 }

◆ value()

Member Data Documentation

◆ m_curve

std::optional<KisCubicCurve> KisDynamicSensor::m_curve
private

Definition at line 46 of file KisDynamicSensor.h.

◆ m_id

KoID KisDynamicSensor::m_id
private

Definition at line 45 of file KisDynamicSensor.h.


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