added clone functions for nodes

Since nodes are are extremely derivative types, we use a clone/copy function
to produce new types of the derived class easily.
This commit is contained in:
itsmattkc
2019-11-22 16:53:30 +09:00
parent 2599c1e8a4
commit 492c8f474a
23 changed files with 69 additions and 7 deletions
+5
View File
@@ -25,6 +25,11 @@ AlphaOverBlend::AlphaOverBlend()
}
Node *AlphaOverBlend::copy()
{
return new AlphaOverBlend();
}
QString AlphaOverBlend::Name()
{
return tr("Alpha Over");
+2
View File
@@ -28,6 +28,8 @@ class AlphaOverBlend : public BlendNode
public:
AlphaOverBlend();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Description() override;
-2
View File
@@ -41,8 +41,6 @@ public:
kEnd
};
virtual Block* copy() = 0;
virtual Type type() = 0;
virtual QString Category() override;
+1 -1
View File
@@ -27,7 +27,7 @@ ClipBlock::ClipBlock()
AddParameter(texture_input_);
}
Block *ClipBlock::copy()
Node *ClipBlock::copy()
{
ClipBlock* c = new ClipBlock();
+1 -1
View File
@@ -32,7 +32,7 @@ class ClipBlock : public Block
public:
ClipBlock();
virtual Block* copy() override;
virtual Node* copy() override;
virtual Type type() override;
+1 -1
View File
@@ -24,7 +24,7 @@ GapBlock::GapBlock()
{
}
Block *GapBlock::copy()
Node *GapBlock::copy()
{
GapBlock* c = new GapBlock();
+1 -1
View File
@@ -32,7 +32,7 @@ class GapBlock : public Block
public:
GapBlock();
virtual Block * copy() override;
virtual Node * copy() override;
virtual Type type() override;
+5
View File
@@ -37,6 +37,11 @@ OpacityNode::OpacityNode()
AddParameter(texture_output_);
}
Node *OpacityNode::copy()
{
return new OpacityNode();
}
QString OpacityNode::Name()
{
return tr("Opacity");
+2
View File
@@ -29,6 +29,8 @@ class OpacityNode : public Node
public:
OpacityNode();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString Category() override;
virtual QString Description() override;
+5
View File
@@ -46,6 +46,11 @@ TransformDistort::TransformDistort()
AddParameter(matrix_output_);
}
Node *TransformDistort::copy()
{
return new TransformDistort();
}
QString TransformDistort::Name()
{
return tr("Transform");
+2
View File
@@ -29,6 +29,8 @@ class TransformDistort : public Node
public:
TransformDistort();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+5
View File
@@ -31,6 +31,11 @@ SolidGenerator::SolidGenerator() :
AddParameter(texture_output_);
}
Node *SolidGenerator::copy()
{
return new SolidGenerator();
}
QString SolidGenerator::Name()
{
return tr("Solid");
+2
View File
@@ -34,6 +34,8 @@ class SolidGenerator : public Node
public:
SolidGenerator();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+5
View File
@@ -6,6 +6,11 @@ AudioInput::AudioInput()
AddParameter(samples_output_);
}
Node *AudioInput::copy()
{
return new AudioInput();
}
QString AudioInput::Name()
{
return tr("Audio Input");
+2
View File
@@ -8,6 +8,8 @@ class AudioInput : public MediaInput
public:
AudioInput();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+5
View File
@@ -18,6 +18,11 @@ VideoInput::VideoInput()
AddParameter(texture_output_);
}
Node *VideoInput::copy()
{
return new VideoInput();
}
QString VideoInput::Name()
{
return tr("Video Input");
+2
View File
@@ -11,6 +11,8 @@ class VideoInput : public MediaInput
public:
VideoInput();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+8
View File
@@ -50,6 +50,14 @@ class Node : public QObject
public:
Node();
/**
* @brief Creates a clone of the Node
*
* By default, the clone will NOT have the values and connections of the original node. The caller is responsible for
* copying that data with functions like CopyInputs() as copies may be done for different reasons.
*/
virtual Node* copy() = 0;
/**
* @brief Return the name of the node
*
+5
View File
@@ -53,6 +53,11 @@ TimelineOutput::TimelineOutput()
AddParameter(length_output_);
}
Node *TimelineOutput::copy()
{
return new TimelineOutput();
}
QString TimelineOutput::Name()
{
return tr("Timeline");
+2
View File
@@ -37,6 +37,8 @@ class TimelineOutput : public Node
public:
TimelineOutput();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+5
View File
@@ -35,6 +35,11 @@ ViewerOutput::ViewerOutput()
AddParameter(length_input_);
}
Node *ViewerOutput::copy()
{
return new ViewerOutput();
}
QString ViewerOutput::Name()
{
return tr("Viewer");
+2
View File
@@ -36,6 +36,8 @@ class ViewerOutput : public Node
public:
ViewerOutput();
virtual Node* copy() override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Category() override;
+1 -1
View File
@@ -25,7 +25,7 @@
#include <QDebug>
Block* CreateSplitBlock(Block* block, rational point, QObject* parent = nullptr)
{
Block* copy = block->copy();
Block* copy = static_cast<Block*>(block->copy());
copy->set_length_and_media_in(block->length() - (point - block->in()));
copy->setParent(parent);