Krita Source Code Documentation
Loading...
Searching...
No Matches
KisBezierGradientMeshDetail Namespace Reference

Classes

struct  GradientMeshNode
 
struct  GradientMeshPatch
 
class  KisBezierGradientMesh
 
struct  QImageGradientOp
 

Functions

void assignPatchData (GradientMeshPatch *patch, const QRectF &srcRect, const GradientMeshNode &tl, const GradientMeshNode &tr, const GradientMeshNode &bl, const GradientMeshNode &br)
 
QColor lerp (const QColor &c1, const QColor &c2, qreal t)
 
void lerpNodeData (const GradientMeshNode &left, const GradientMeshNode &right, qreal t, GradientMeshNode &dst)
 
bool loadValue (const QDomElement &parent, const QString &tag, KisBezierGradientMesh *mesh)
 
bool loadValue (const QDomElement &parent, GradientMeshNode *node)
 
void saveValue (QDomElement *parent, const QString &tag, const GradientMeshNode &node)
 
void saveValue (QDomElement *parent, const QString &tag, const KisBezierGradientMesh &mesh)
 

Function Documentation

◆ assignPatchData()

void KisBezierGradientMeshDetail::assignPatchData ( GradientMeshPatch * patch,
const QRectF & srcRect,
const GradientMeshNode & tl,
const GradientMeshNode & tr,
const GradientMeshNode & bl,
const GradientMeshNode & br )
inline

Definition at line 47 of file KisBezierGradientMesh.h.

53{
54 Q_UNUSED(srcRect);
55
56 patch->originalRect = QRectF(0.0, 0.0, 1.0, 1.0);
57 patch->colors[0] = tl.color;
58 patch->colors[1] = tr.color;
59 patch->colors[2] = bl.color;
60 patch->colors[3] = br.color;
61}

References KisBezierGradientMeshDetail::GradientMeshNode::color, KisBezierGradientMeshDetail::GradientMeshPatch::colors, and KisBezierPatch::originalRect.

◆ lerp()

QColor KisBezierGradientMeshDetail::lerp ( const QColor & c1,
const QColor & c2,
qreal t )
inline

Definition at line 17 of file KisBezierGradientMesh.h.

17 {
19
20 return QColor::fromRgbF(lerp(c1.redF(), c2.redF(), t),
21 lerp(c1.greenF(), c2.greenF(), t),
22 lerp(c1.blueF(), c2.blueF(), t),
23 lerp(c1.alphaF(), c2.alphaF(), t));
24}
QPointF lerp(const QPointF &p1, const QPointF &p2, qreal t)
Point lerp(const Point &pt1, const Point &pt2, qreal t)

References KisAlgebra2D::lerp(), and lerp().

◆ lerpNodeData()

void KisBezierGradientMeshDetail::lerpNodeData ( const GradientMeshNode & left,
const GradientMeshNode & right,
qreal t,
GradientMeshNode & dst )
inline

Definition at line 42 of file KisBezierGradientMesh.h.

43{
44 dst.color = lerp(left.color, right.color, t);
45}

References KisBezierGradientMeshDetail::GradientMeshNode::color, and lerp().

◆ loadValue() [1/2]

KRITAIMAGE_EXPORT bool KisBezierGradientMeshDetail::loadValue ( const QDomElement & parent,
const QString & tag,
KisBezierGradientMesh * mesh )

Definition at line 112 of file KisBezierGradientMesh.cpp.

113{
114 QDomElement e;
115 if (!KisDomUtils::findOnlyElement(parent, tag, &e)) return false;
116
117 if (!KisDomUtils::Private::checkType(e, "gradient-mesh")) return false;
118
119 mesh->m_columns.clear();
120 mesh->m_rows.clear();
121 mesh->m_nodes.clear();
122
123 KisDomUtils::loadValue(e, "size", &mesh->m_size);
124 KisDomUtils::loadValue(e, "srcRect", &mesh->m_originalRect);
125 KisDomUtils::loadValue(e, "columns", &mesh->m_columns);
126 KisDomUtils::loadValue(e, "rows", &mesh->m_rows);
127 KisDomUtils::loadValue(e, "nodes", &mesh->m_nodes);
128
129 return true;
130}
std::vector< qreal > m_rows
std::vector< qreal > m_columns
std::vector< Node > m_nodes
bool checkType(const QDomElement &e, const QString &expectedType)
bool findOnlyElement(const QDomElement &parent, const QString &tag, QDomElement *el, QStringList *errorMessages)
bool loadValue(const QDomElement &e, float *v)

◆ loadValue() [2/2]

KRITAIMAGE_EXPORT bool KisBezierGradientMeshDetail::loadValue ( const QDomElement & parent,
GradientMeshNode * node )

◆ saveValue() [1/2]

KRITAIMAGE_EXPORT void KisBezierGradientMeshDetail::saveValue ( QDomElement * parent,
const QString & tag,
const GradientMeshNode & node )

Definition at line 68 of file KisBezierGradientMesh.cpp.

69{
70 QDomDocument doc = parent->ownerDocument();
71 QDomElement e = doc.createElement(tag);
72 parent->appendChild(e);
73
74 e.setAttribute("type", "gradient-mesh-node");
75 KisDomUtils::saveValue(&e, "color", node.color);
76 KisDomUtils::saveValue(&e, "node", node.node);
77 KisDomUtils::saveValue(&e, "left-control", node.leftControl);
78 KisDomUtils::saveValue(&e, "right-control", node.rightControl);
79 KisDomUtils::saveValue(&e, "top-control", node.topControl);
80 KisDomUtils::saveValue(&e, "bottom-control", node.bottomControl);
81
82}
void saveValue(QDomElement *parent, const QString &tag, const QSize &size)

References KisBezierMeshDetails::BaseMeshNode::bottomControl, KisBezierGradientMeshDetail::GradientMeshNode::color, KisBezierMeshDetails::BaseMeshNode::leftControl, KisBezierMeshDetails::BaseMeshNode::node, KisBezierMeshDetails::BaseMeshNode::rightControl, KisDomUtils::saveValue(), and KisBezierMeshDetails::BaseMeshNode::topControl.

◆ saveValue() [2/2]

KRITAIMAGE_EXPORT void KisBezierGradientMeshDetail::saveValue ( QDomElement * parent,
const QString & tag,
const KisBezierGradientMesh & mesh )

Definition at line 97 of file KisBezierGradientMesh.cpp.

98{
99 QDomDocument doc = parent->ownerDocument();
100 QDomElement e = doc.createElement(tag);
101 parent->appendChild(e);
102
103 e.setAttribute("type", "gradient-mesh");
104
105 KisDomUtils::saveValue(&e, "size", mesh.m_size);
106 KisDomUtils::saveValue(&e, "srcRect", mesh.m_originalRect);
107 KisDomUtils::saveValue(&e, "columns", mesh.m_columns);
108 KisDomUtils::saveValue(&e, "rows", mesh.m_rows);
109 KisDomUtils::saveValue(&e, "nodes", mesh.m_nodes);
110}