From 32281653bf3564afe075fd684365b640082c695f Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Tue, 18 Jul 2017 11:39:13 +0200 Subject: [PATCH] Add the layer concept to QShaderNode and QShaderGraph::Edge This will be used in further commits Change-Id: I49977f1ea482b97dc0a159f69a0d2eda3865ec44 Reviewed-by: Sean Harmer --- src/gui/util/qshadergraph_p.h | 1 + src/gui/util/qshadernode.cpp | 10 ++++++++++ src/gui/util/qshadernode_p.h | 4 ++++ tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp | 7 +++++-- tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp | 7 +++++++ 5 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/gui/util/qshadergraph_p.h b/src/gui/util/qshadergraph_p.h index fd8ddf6e05..ced6b1430b 100644 --- a/src/gui/util/qshadergraph_p.h +++ b/src/gui/util/qshadergraph_p.h @@ -63,6 +63,7 @@ public: class Edge { public: + QStringList layers; QUuid sourceNodeUuid; QString sourcePortName; QUuid targetNodeUuid; diff --git a/src/gui/util/qshadernode.cpp b/src/gui/util/qshadernode.cpp index f255922c42..676667ddcf 100644 --- a/src/gui/util/qshadernode.cpp +++ b/src/gui/util/qshadernode.cpp @@ -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 QShaderNode::ports() const Q_DECL_NOTHROW { return m_ports; diff --git a/src/gui/util/qshadernode_p.h b/src/gui/util/qshadernode_p.h index 2f8bf1e438..494c87bc18 100644 --- a/src/gui/util/qshadernode_p.h +++ b/src/gui/util/qshadernode_p.h @@ -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 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 m_ports; QHash m_parameters; QVector> m_rules; diff --git a/tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp b/tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp index b2a9d99b19..25b45f7fa6 100644 --- a/tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp +++ b/tests/auto/gui/util/qshadergraph/tst_qshadergraph.cpp @@ -41,23 +41,26 @@ namespace return port; } - QShaderNode createNode(const QVector &ports) + QShaderNode createNode(const QVector &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; } diff --git a/tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp b/tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp index 0280f6559b..9eb738a1b2 100644 --- a/tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp +++ b/tests/auto/gui/util/qshadernodes/tst_qshadernodes.cpp @@ -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;