make nodes more const friendly and prepare their functions for stateless work

Since the nodes won't be holding any rendering data themselves in this system,
we may as well enforce some level of non-write access by setting all the
functions to const. They were already const-friendly, they just weren't
labelled as such.
This commit is contained in:
itsmattkc
2019-12-04 20:10:42 +11:00
parent cbf4d5b8c7
commit bc0f01d9a3
30 changed files with 505 additions and 346 deletions
+12 -22
View File
@@ -33,17 +33,17 @@ Block::Block() :
AddParameter(buffer_output_);
}
QString Block::Category()
QString Block::Category() const
{
return tr("Block");
}
const rational &Block::in()
const rational &Block::in() const
{
return in_point_;
}
const rational &Block::out()
const rational &Block::out() const
{
return out_point_;
}
@@ -58,7 +58,7 @@ void Block::set_out(const rational &out)
out_point_ = out;
}
const rational& Block::length()
const rational& Block::length() const
{
return length_;
}
@@ -109,27 +109,17 @@ void Block::set_next(Block *next)
next_ = next;
}
QVariant Block::Value(NodeOutput *output)
{
if (output == block_output_) {
// Simply set the output value to a pointer to this Block
return PtrToValue(this);
}
return 0;
}
NodeOutput *Block::buffer_output()
NodeOutput *Block::buffer_output() const
{
return buffer_output_;
}
NodeOutput *Block::block_output()
NodeOutput *Block::block_output() const
{
return block_output_;
}
const rational &Block::media_in()
const rational &Block::media_in() const
{
return media_in_;
}
@@ -151,7 +141,7 @@ void Block::set_media_in(const rational &media_in)
}
}
const QString &Block::block_name()
const QString &Block::block_name() const
{
return block_name_;
}
@@ -161,7 +151,7 @@ void Block::set_block_name(const QString &name)
block_name_ = name;
}
rational Block::SequenceToMediaTime(const rational &sequence_time)
rational Block::SequenceToMediaTime(const rational &sequence_time) const
{
// These constants are not considered "values" per se, so we don't modify them
if (sequence_time == RATIONAL_MIN || sequence_time == RATIONAL_MAX) {
@@ -171,7 +161,7 @@ rational Block::SequenceToMediaTime(const rational &sequence_time)
return sequence_time - in() + media_in();
}
rational Block::MediaToSequenceTime(const rational &media_time)
rational Block::MediaToSequenceTime(const rational &media_time) const
{
// These constants are not considered "values" per se, so we don't modify them
if (media_time == RATIONAL_MIN || media_time == RATIONAL_MAX) {
@@ -181,7 +171,7 @@ rational Block::MediaToSequenceTime(const rational &media_time)
return media_time - media_in() + in();
}
void Block::CopyParameters(Block *source, Block *dest)
void Block::CopyParameters(const Block *source, Block *dest)
{
dest->set_block_name(source->block_name());
dest->set_length(source->length());
@@ -233,7 +223,7 @@ bool Block::HasLinks()
return !linked_clips_.isEmpty();
}
bool Block::IsBlock()
bool Block::IsBlock() const
{
return true;
}
+13 -15
View File
@@ -45,16 +45,16 @@ public:
kTrack
};
virtual Type type() = 0;
virtual Type type() const = 0;
virtual QString Category() override;
virtual QString Category() const override;
const rational& in();
const rational& out();
const rational& in() const;
const rational& out() const;
void set_in(const rational& in);
void set_out(const rational& out);
const rational &length();
const rational &length() const;
void set_length(const rational &length);
void set_length_and_media_in(const rational &length);
@@ -63,13 +63,13 @@ public:
void set_previous(Block* previous);
void set_next(Block* next);
NodeOutput* buffer_output();
NodeOutput* block_output();
NodeOutput* buffer_output() const;
NodeOutput* block_output() const;
const rational& media_in();
const rational& media_in() const;
void set_media_in(const rational& media_in);
const QString& block_name();
const QString& block_name() const;
void set_block_name(const QString& name);
static void Link(Block* a, Block* b);
@@ -79,9 +79,7 @@ public:
const QVector<Block*>& linked_clips();
bool HasLinks();
virtual bool IsBlock() override;
virtual QVariant Value(NodeOutput* output) override;
virtual bool IsBlock() const override;
public slots:
@@ -96,11 +94,11 @@ signals:
void LengthChanged(const rational& length);
protected:
rational SequenceToMediaTime(const rational& sequence_time);
rational SequenceToMediaTime(const rational& sequence_time) const;
rational MediaToSequenceTime(const rational& media_time);
rational MediaToSequenceTime(const rational& media_time) const;
static void CopyParameters(Block* source, Block* dest);
static void CopyParameters(const Block *source, Block* dest);
Block* previous_;
Block* next_;
+10 -13
View File
@@ -27,7 +27,7 @@ ClipBlock::ClipBlock()
AddParameter(texture_input_);
}
Node *ClipBlock::copy()
Node *ClipBlock::copy() const
{
ClipBlock* c = new ClipBlock();
@@ -36,27 +36,27 @@ Node *ClipBlock::copy()
return c;
}
Block::Type ClipBlock::type()
Block::Type ClipBlock::type() const
{
return kClip;
}
QString ClipBlock::Name()
QString ClipBlock::Name() const
{
return tr("Clip");
}
QString ClipBlock::id()
QString ClipBlock::id() const
{
return "org.olivevideoeditor.Olive.clip";
}
QString ClipBlock::Description()
QString ClipBlock::Description() const
{
return tr("A time-based node that represents a media source.");
}
NodeInput *ClipBlock::texture_input()
NodeInput *ClipBlock::texture_input() const
{
return texture_input_;
}
@@ -79,7 +79,7 @@ void ClipBlock::InvalidateCache(const rational &start_range, const rational &end
}
}
TimeRange ClipBlock::InputTimeAdjustment(NodeInput *input, const TimeRange &input_time)
TimeRange ClipBlock::InputTimeAdjustment(NodeInput *input, const TimeRange &input_time) const
{
if (input == texture_input_) {
return TimeRange(SequenceToMediaTime(input_time.in()), SequenceToMediaTime(input_time.out()));
@@ -88,11 +88,8 @@ TimeRange ClipBlock::InputTimeAdjustment(NodeInput *input, const TimeRange &inpu
return Block::InputTimeAdjustment(input, input_time);
}
QVariant ClipBlock::Value(NodeOutput *output)
NodeValueTable ClipBlock::Value(const NodeValueDatabase &value) const
{
if (output == buffer_output()) {
// We just pass through the texture here, the renderer should have gotten the correct time from InputTimeAdjustment
return texture_input()->value();
}
return Block::Value(output);
// We just pass through the data here, the renderer should have gotten the correct time from InputTimeAdjustment
return value.Merge();
}
+8 -8
View File
@@ -32,21 +32,21 @@ class ClipBlock : public Block
public:
ClipBlock();
virtual Node* copy() override;
virtual Node* copy() const override;
virtual Type type() override;
virtual Type type() const override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Description() override;
virtual QString Name() const override;
virtual QString id() const override;
virtual QString Description() const override;
NodeInput* texture_input();
NodeInput* texture_input() const;
virtual void InvalidateCache(const rational &start_range, const rational &end_range, NodeInput *from = nullptr) override;
virtual TimeRange InputTimeAdjustment(NodeInput* input, const TimeRange& input_time) override;
virtual TimeRange InputTimeAdjustment(NodeInput* input, const TimeRange& input_time) const override;
virtual QVariant Value(NodeOutput* output) override;
virtual NodeValueTable Value(const NodeValueDatabase& value) const override;
private:
NodeInput* texture_input_;
+5 -5
View File
@@ -24,7 +24,7 @@ GapBlock::GapBlock()
{
}
Node *GapBlock::copy()
Node *GapBlock::copy() const
{
GapBlock* c = new GapBlock();
@@ -33,22 +33,22 @@ Node *GapBlock::copy()
return c;
}
Block::Type GapBlock::type()
Block::Type GapBlock::type() const
{
return kGap;
}
QString GapBlock::Name()
QString GapBlock::Name() const
{
return tr("Gap");
}
QString GapBlock::id()
QString GapBlock::id() const
{
return "org.olivevideoeditor.Olive.gap";
}
QString GapBlock::Description()
QString GapBlock::Description() const
{
return tr("A time-based node that represents an empty space.");
}
+5 -5
View File
@@ -32,13 +32,13 @@ class GapBlock : public Block
public:
GapBlock();
virtual Node * copy() override;
virtual Node * copy() const override;
virtual Type type() override;
virtual Type type() const override;
virtual QString Name() override;
virtual QString id() override;
virtual QString Description() override;
virtual QString Name() const override;
virtual QString id() const override;
virtual QString Description() const override;
private: