From c616bc2b61fafbdb29c99430ce30dc861b0765fb Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 17 May 2019 18:45:44 +1000 Subject: [PATCH] allowed parameters to have data without fields --- CMakeLists.txt | 2 ++ nodes/node.cpp | 5 +++++ nodes/node.h | 1 + nodes/nodedatatypes.cpp | 4 ++-- nodes/nodedatatypes.h | 2 +- nodes/nodeio.cpp | 9 +++++++++ nodes/nodeio.h | 5 +++++ 7 files changed, 25 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1ca38895f..fb3d9e5d7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -225,6 +225,8 @@ set(OLIVE_SOURCES nodes/nodes.h nodes/oldeffectnode.h nodes/oldeffectnode.cpp + nodes/nodes/nodeblock.h + nodes/nodes/nodeblock.cpp nodes/nodes/nodeimageoutput.cpp nodes/nodes/nodeimageoutput.h nodes/nodes/nodemedia.cpp diff --git a/nodes/node.cpp b/nodes/node.cpp index 591eee1e3..e28a638bf 100644 --- a/nodes/node.cpp +++ b/nodes/node.cpp @@ -12,6 +12,11 @@ QString Node::name() return tr("Node"); } +QString Node::id() +{ + return "node"; +} + void Node::AddParameter(NodeIO *param) { param->setParent(this); diff --git a/nodes/node.h b/nodes/node.h index 94799c2f9..b8e00c1db 100644 --- a/nodes/node.h +++ b/nodes/node.h @@ -14,6 +14,7 @@ public: Node(NodeGraph* parent); virtual QString name(); + virtual QString id(); void AddParameter(NodeIO* row); int IndexOfParameter(NodeIO* row); diff --git a/nodes/nodedatatypes.cpp b/nodes/nodedatatypes.cpp index 5b35d0edf..18022f9fe 100644 --- a/nodes/nodedatatypes.cpp +++ b/nodes/nodedatatypes.cpp @@ -30,7 +30,7 @@ QString olive::nodes::DataTypeToString(DataType type) { return "TEXTURE"; case kMatrix: return "MATRIX"; - case kClip: + case kBlock: return "CLIP"; default: return QString(); @@ -68,7 +68,7 @@ olive::nodes::DataType olive::nodes::StringToDataType(const QString &s) } else if (s == "MATRIX") { return kMatrix; } else if (s == "CLIP") { - return kClip; + return kBlock; } return kInvalid; } diff --git a/nodes/nodedatatypes.h b/nodes/nodedatatypes.h index 481c6234e..8d542d659 100644 --- a/nodes/nodedatatypes.h +++ b/nodes/nodedatatypes.h @@ -61,7 +61,7 @@ enum DataType { kMatrix, /** Value is a Clip node */ - kClip, + kBlock, /** Total count of valid node data types. Never use this as an actual data type. */ kDataTypeCount diff --git a/nodes/nodeio.cpp b/nodes/nodeio.cpp index 31a2ec8c5..4e82a52a1 100644 --- a/nodes/nodeio.cpp +++ b/nodes/nodeio.cpp @@ -138,6 +138,10 @@ bool NodeIO::IsKeyframable() QVariant NodeIO::GetValueAt(double timecode) { + if (FieldCount() == 0) { + return data_; + } + Q_ASSERT(FieldCount() == 1); return Field(0)->GetValueAt(timecode); @@ -145,6 +149,11 @@ QVariant NodeIO::GetValueAt(double timecode) void NodeIO::SetValueAt(double timecode, const QVariant &value) { + if (FieldCount() == 0) { + data_ = value; + return; + } + Q_ASSERT(FieldCount() == 1); Field(0)->SetValueAt(timecode, value); diff --git a/nodes/nodeio.h b/nodes/nodeio.h index 9cfbf1390..215e6cc47 100644 --- a/nodes/nodeio.h +++ b/nodes/nodeio.h @@ -461,6 +461,11 @@ private: * @brief Internal array of node edges. Access with AddEdge() and RemoveEdge(). */ QVector node_edges_; + + /** + * @brief Internal data object for rows without fields + */ + QVariant data_; }; #endif // EFFECTROW_H