Add the layer concept to QShaderNode and QShaderGraph::Edge

This will be used in further commits

Change-Id: I49977f1ea482b97dc0a159f69a0d2eda3865ec44
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
bb10
Kevin Ottens 2017-07-18 11:39:13 +02:00 committed by Sean Harmer
parent 3d5c4ce01e
commit 32281653bf
5 changed files with 27 additions and 2 deletions

View File

@ -63,6 +63,7 @@ public:
class Edge
{
public:
QStringList layers;
QUuid sourceNodeUuid;
QString sourcePortName;
QUuid targetNodeUuid;

View File

@ -72,6 +72,16 @@ void QShaderNode::setUuid(const QUuid &uuid) Q_DECL_NOTHROW
m_uuid = uuid;
}
QStringList QShaderNode::layers() const Q_DECL_NOTHROW
{
return m_layers;
}
void QShaderNode::setLayers(const QStringList &layers) Q_DECL_NOTHROW
{
m_layers = layers;
}
QVector<QShaderNodePort> QShaderNode::ports() const Q_DECL_NOTHROW
{
return m_ports;

View File

@ -84,6 +84,9 @@ public:
Q_GUI_EXPORT QUuid uuid() const Q_DECL_NOTHROW;
Q_GUI_EXPORT void setUuid(const QUuid &uuid) Q_DECL_NOTHROW;
Q_GUI_EXPORT QStringList layers() const Q_DECL_NOTHROW;
Q_GUI_EXPORT void setLayers(const QStringList &layers) Q_DECL_NOTHROW;
Q_GUI_EXPORT QVector<QShaderNodePort> ports() const Q_DECL_NOTHROW;
Q_GUI_EXPORT void addPort(const QShaderNodePort &port);
Q_GUI_EXPORT void removePort(const QShaderNodePort &port);
@ -101,6 +104,7 @@ public:
private:
QUuid m_uuid;
QStringList m_layers;
QVector<QShaderNodePort> m_ports;
QHash<QString, QVariant> m_parameters;
QVector<QPair<QShaderFormat, QShaderNode::Rule>> m_rules;

View File

@ -41,23 +41,26 @@ namespace
return port;
}
QShaderNode createNode(const QVector<QShaderNodePort> &ports)
QShaderNode createNode(const QVector<QShaderNodePort> &ports, const QStringList &layers = QStringList())
{
auto node = QShaderNode();
node.setUuid(QUuid::createUuid());
node.setLayers(layers);
for (const auto &port : ports)
node.addPort(port);
return node;
}
QShaderGraph::Edge createEdge(const QUuid &sourceUuid, const QString &sourceName,
const QUuid &targetUuid, const QString &targetName)
const QUuid &targetUuid, const QString &targetName,
const QStringList &layers = QStringList())
{
auto edge = QShaderGraph::Edge();
edge.sourceNodeUuid = sourceUuid;
edge.sourcePortName = sourceName;
edge.targetNodeUuid = targetUuid;
edge.targetPortName = targetName;
edge.layers = layers;
return edge;
}

View File

@ -351,6 +351,7 @@ void tst_QShaderNodes::shouldManipulateNodeMembers()
// THEN (default state)
QCOMPARE(node.type(), QShaderNode::Invalid);
QVERIFY(node.uuid().isNull());
QVERIFY(node.layers().isEmpty());
QVERIFY(node.ports().isEmpty());
QVERIFY(node.parameterNames().isEmpty());
QVERIFY(node.availableFormats().isEmpty());
@ -362,6 +363,12 @@ void tst_QShaderNodes::shouldManipulateNodeMembers()
// THEN
QCOMPARE(node.uuid(), uuid);
// WHEN
node.setLayers({"foo", "bar"});
// THEN
QCOMPARE(node.layers(), QStringList({"foo", "bar"}));
// WHEN
auto firstPort = QShaderNodePort();
firstPort.direction = QShaderNodePort::Input;