implemented base transition support

While very much incomplete, transitions can now be created and will render
correctly.
This commit is contained in:
itsmattkc
2019-12-12 15:21:39 +11:00
parent 7b92b21df2
commit 76c0399b75
14 changed files with 267 additions and 84 deletions
+11 -1
View File
@@ -22,6 +22,8 @@
#include <QDebug>
#include "transition/transition.h"
Block::Block() :
previous_(nullptr),
next_(nullptr)
@@ -159,8 +161,16 @@ rational Block::MediaToSequenceTime(const rational &media_time) const
void Block::CopyParameters(const Block *source, Block *dest)
{
dest->set_block_name(source->block_name());
dest->set_length(source->length());
dest->set_media_in(source->media_in());
if (source->type() == kTransition && dest->type() == kTransition) {
const TransitionBlock* src_t = static_cast<const TransitionBlock*>(source);
TransitionBlock* dst_t = static_cast<TransitionBlock*>(dest);
dst_t->set_in_and_out_offset(src_t->in_offset(), src_t->out_offset());
} else {
dest->set_length(source->length());
}
}
void Block::Link(Block *a, Block *b)
@@ -7,7 +7,11 @@ CrossDissolveTransition::CrossDissolveTransition()
Node *CrossDissolveTransition::copy() const
{
return new CrossDissolveTransition();
CrossDissolveTransition* c = new CrossDissolveTransition();
CopyParameters(this, c);
return c;
}
QString CrossDissolveTransition::Name() const
+9 -4
View File
@@ -51,14 +51,19 @@ void TransitionBlock::set_length_and_media_in(const rational &length)
abort();
}
void TransitionBlock::set_in_offset(const rational &in_offset)
const rational &TransitionBlock::in_offset() const
{
in_offset_ = in_offset;
RecalculateLength();
return in_offset_;
}
void TransitionBlock::set_out_offset(const rational &out_offset)
const rational &TransitionBlock::out_offset() const
{
return out_offset_;
}
void TransitionBlock::set_in_and_out_offset(const rational &in_offset, const rational &out_offset)
{
in_offset_ = in_offset;
out_offset_ = out_offset;
RecalculateLength();
}
+3 -3
View File
@@ -12,7 +12,6 @@ public:
virtual QString Category() const override;
NodeInput* out_block_input() const;
NodeInput* in_block_input() const;
virtual void Retranslate() override;
@@ -20,8 +19,9 @@ public:
virtual void set_length(const rational &length) override;
virtual void set_length_and_media_in(const rational &length) override;
void set_in_offset(const rational& in_offset);
void set_out_offset(const rational& out_offset);
const rational& in_offset() const;
const rational& out_offset() const;
void set_in_and_out_offset(const rational& in_offset, const rational& out_offset);
private:
void RecalculateLength();