summaryrefslogtreecommitdiffstats
path: root/src/gui/util/qshadergraph_p.h
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2017-03-30 09:29:14 +0200
committerKevin Ottens <kevin.ottens@kdab.com>2017-06-20 21:35:36 +0000
commit42124518844034f786ac1c434dd54c0a300b0999 (patch)
treecf7ef365350c0d7188b8c8ca3fd070add5fedb8e /src/gui/util/qshadergraph_p.h
parent29a748511a8bd9dac373d1390d38999b9fd7c49d (diff)
[Shader Graph Gen.] Introduce QShaderGraph::Statement
This is our "byte code" representing a flattened graph. It will be used as input for the code generation. Change-Id: Ie02a60d07c035f3d16872e79931eb7cde168a8d1 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/gui/util/qshadergraph_p.h')
-rw-r--r--src/gui/util/qshadergraph_p.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/gui/util/qshadergraph_p.h b/src/gui/util/qshadergraph_p.h
index c582dcd18b..fd8ddf6e05 100644
--- a/src/gui/util/qshadergraph_p.h
+++ b/src/gui/util/qshadergraph_p.h
@@ -69,6 +69,17 @@ public:
QString targetPortName;
};
+ class Statement
+ {
+ public:
+ Q_GUI_EXPORT QUuid uuid() const Q_DECL_NOTHROW;
+ Q_GUI_EXPORT int portIndex(QShaderNodePort::Direction direction, const QString &portName) const Q_DECL_NOTHROW;
+
+ QShaderNode node;
+ QVector<int> inputs;
+ QVector<int> outputs;
+ };
+
Q_GUI_EXPORT void addNode(const QShaderNode &node);
Q_GUI_EXPORT void removeNode(const QShaderNode &node);
Q_GUI_EXPORT QVector<QShaderNode> nodes() const Q_DECL_NOTHROW;
@@ -77,6 +88,8 @@ public:
Q_GUI_EXPORT void removeEdge(const Edge &edge);
Q_GUI_EXPORT QVector<Edge> edges() const Q_DECL_NOTHROW;
+ Q_GUI_EXPORT QVector<Statement> createStatements() const;
+
private:
QVector<QShaderNode> m_nodes;
QVector<Edge> m_edges;
@@ -89,12 +102,21 @@ inline bool operator!=(const QShaderGraph::Edge &lhs, const QShaderGraph::Edge &
return !(lhs == rhs);
}
+Q_GUI_EXPORT bool operator==(const QShaderGraph::Statement &lhs, const QShaderGraph::Statement &rhs) Q_DECL_NOTHROW;
+
+inline bool operator!=(const QShaderGraph::Statement &lhs, const QShaderGraph::Statement &rhs) Q_DECL_NOTHROW
+{
+ return !(lhs == rhs);
+}
+
Q_DECLARE_TYPEINFO(QShaderGraph, Q_MOVABLE_TYPE);
Q_DECLARE_TYPEINFO(QShaderGraph::Edge, Q_MOVABLE_TYPE);
+Q_DECLARE_TYPEINFO(QShaderGraph::Statement, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(QShaderGraph)
Q_DECLARE_METATYPE(QShaderGraph::Edge)
+Q_DECLARE_METATYPE(QShaderGraph::Statement)
#endif // QSHADERGRAPH_P_H