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:
@@ -25,6 +25,11 @@ AlphaOverBlend::AlphaOverBlend()
|
||||
|
||||
}
|
||||
|
||||
Node *AlphaOverBlend::copy()
|
||||
{
|
||||
return new AlphaOverBlend();
|
||||
}
|
||||
|
||||
QString AlphaOverBlend::Name()
|
||||
{
|
||||
return tr("Alpha Over");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -41,8 +41,6 @@ public:
|
||||
kEnd
|
||||
};
|
||||
|
||||
virtual Block* copy() = 0;
|
||||
|
||||
virtual Type type() = 0;
|
||||
|
||||
virtual QString Category() override;
|
||||
|
||||
@@ -27,7 +27,7 @@ ClipBlock::ClipBlock()
|
||||
AddParameter(texture_input_);
|
||||
}
|
||||
|
||||
Block *ClipBlock::copy()
|
||||
Node *ClipBlock::copy()
|
||||
{
|
||||
ClipBlock* c = new ClipBlock();
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class ClipBlock : public Block
|
||||
public:
|
||||
ClipBlock();
|
||||
|
||||
virtual Block* copy() override;
|
||||
virtual Node* copy() override;
|
||||
|
||||
virtual Type type() override;
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ GapBlock::GapBlock()
|
||||
{
|
||||
}
|
||||
|
||||
Block *GapBlock::copy()
|
||||
Node *GapBlock::copy()
|
||||
{
|
||||
GapBlock* c = new GapBlock();
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class GapBlock : public Block
|
||||
public:
|
||||
GapBlock();
|
||||
|
||||
virtual Block * copy() override;
|
||||
virtual Node * copy() override;
|
||||
|
||||
virtual Type type() override;
|
||||
|
||||
|
||||
@@ -37,6 +37,11 @@ OpacityNode::OpacityNode()
|
||||
AddParameter(texture_output_);
|
||||
}
|
||||
|
||||
Node *OpacityNode::copy()
|
||||
{
|
||||
return new OpacityNode();
|
||||
}
|
||||
|
||||
QString OpacityNode::Name()
|
||||
{
|
||||
return tr("Opacity");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -46,6 +46,11 @@ TransformDistort::TransformDistort()
|
||||
AddParameter(matrix_output_);
|
||||
}
|
||||
|
||||
Node *TransformDistort::copy()
|
||||
{
|
||||
return new TransformDistort();
|
||||
}
|
||||
|
||||
QString TransformDistort::Name()
|
||||
{
|
||||
return tr("Transform");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -31,6 +31,11 @@ SolidGenerator::SolidGenerator() :
|
||||
AddParameter(texture_output_);
|
||||
}
|
||||
|
||||
Node *SolidGenerator::copy()
|
||||
{
|
||||
return new SolidGenerator();
|
||||
}
|
||||
|
||||
QString SolidGenerator::Name()
|
||||
{
|
||||
return tr("Solid");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -6,6 +6,11 @@ AudioInput::AudioInput()
|
||||
AddParameter(samples_output_);
|
||||
}
|
||||
|
||||
Node *AudioInput::copy()
|
||||
{
|
||||
return new AudioInput();
|
||||
}
|
||||
|
||||
QString AudioInput::Name()
|
||||
{
|
||||
return tr("Audio Input");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -18,6 +18,11 @@ VideoInput::VideoInput()
|
||||
AddParameter(texture_output_);
|
||||
}
|
||||
|
||||
Node *VideoInput::copy()
|
||||
{
|
||||
return new VideoInput();
|
||||
}
|
||||
|
||||
QString VideoInput::Name()
|
||||
{
|
||||
return tr("Video Input");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -53,6 +53,11 @@ TimelineOutput::TimelineOutput()
|
||||
AddParameter(length_output_);
|
||||
}
|
||||
|
||||
Node *TimelineOutput::copy()
|
||||
{
|
||||
return new TimelineOutput();
|
||||
}
|
||||
|
||||
QString TimelineOutput::Name()
|
||||
{
|
||||
return tr("Timeline");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -35,6 +35,11 @@ ViewerOutput::ViewerOutput()
|
||||
AddParameter(length_input_);
|
||||
}
|
||||
|
||||
Node *ViewerOutput::copy()
|
||||
{
|
||||
return new ViewerOutput();
|
||||
}
|
||||
|
||||
QString ViewerOutput::Name()
|
||||
{
|
||||
return tr("Viewer");
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user