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

Inverse lens distortion. More...

#include <deform_brush.h>

+ Inheritance diagram for DeformLens:

Public Member Functions

void setLensFactor (qreal k1, qreal k2)
 
void setMaxDistance (qreal maxX, qreal maxY)
 
void setMode (bool out)
 
void transform (qreal *maskX, qreal *maskY, qreal distance, KisRandomSourceSP randomSource) override
 
- Public Member Functions inherited from DeformBase
 DeformBase ()
 
virtual ~DeformBase ()
 

Private Attributes

qreal m_k1 {0.0}
 
qreal m_k2 {0.0}
 
qreal m_maxX {0.0}
 
qreal m_maxY {0.0}
 
bool m_out {false}
 

Detailed Description

Inverse lens distortion.

Definition at line 109 of file deform_brush.h.

Member Function Documentation

◆ setLensFactor()

void DeformLens::setLensFactor ( qreal k1,
qreal k2 )
inline

Definition at line 112 of file deform_brush.h.

112 {
113 m_k1 = k1;
114 m_k2 = k2;
115 }

References m_k1, and m_k2.

◆ setMaxDistance()

void DeformLens::setMaxDistance ( qreal maxX,
qreal maxY )
inline

Definition at line 116 of file deform_brush.h.

116 {
117 m_maxX = maxX;
118 m_maxY = maxY;
119 }

References m_maxX, and m_maxY.

◆ setMode()

void DeformLens::setMode ( bool out)
inline

Definition at line 120 of file deform_brush.h.

120 {
121 m_out = out;
122 }

References m_out.

◆ transform()

void DeformLens::transform ( qreal * maskX,
qreal * maskY,
qreal distance,
KisRandomSourceSP randomSource )
inlineoverridevirtual

Reimplemented from DeformBase.

Definition at line 124 of file deform_brush.h.

124 {
125 Q_UNUSED(distance);
126 Q_UNUSED(randomSource);
127 //normalize
128 qreal normX = *maskX / m_maxX;
129 qreal normY = *maskY / m_maxY;
130
131 qreal radius_2 = normX * normX + normY * normY;
132 qreal radius_4 = radius_2 * radius_2;
133
134 if (m_out) {
135 *maskX = normX * (1.0 + m_k1 * radius_2 + m_k2 * radius_4);
136 *maskY = normY * (1.0 + m_k1 * radius_2 + m_k2 * radius_4);
137 }
138 else {
139 *maskX = normX / (1.0 + m_k1 * radius_2 + m_k2 * radius_4);
140 *maskY = normY / (1.0 + m_k1 * radius_2 + m_k2 * radius_4);
141 }
142
143 *maskX = m_maxX * (*maskX);
144 *maskY = m_maxY * (*maskY);
145 }
qreal distance(const QPointF &p1, const QPointF &p2)

References distance(), m_k1, m_k2, m_maxX, m_maxY, and m_out.

Member Data Documentation

◆ m_k1

qreal DeformLens::m_k1 {0.0}
private

Definition at line 148 of file deform_brush.h.

148{0.0}, m_k2 {0.0};

◆ m_k2

qreal DeformLens::m_k2 {0.0}
private

Definition at line 148 of file deform_brush.h.

148{0.0}, m_k2 {0.0};

◆ m_maxX

qreal DeformLens::m_maxX {0.0}
private

Definition at line 149 of file deform_brush.h.

149{0.0}, m_maxY {0.0};

◆ m_maxY

qreal DeformLens::m_maxY {0.0}
private

Definition at line 149 of file deform_brush.h.

149{0.0}, m_maxY {0.0};

◆ m_out

bool DeformLens::m_out {false}
private

Definition at line 150 of file deform_brush.h.

150{false};

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