implemented base transition support
While very much incomplete, transitions can now be created and will render correctly.
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user