nodes are given a time range

This commit is contained in:
itsmattkc
2019-10-22 14:58:06 +11:00
parent 9da5e7c9be
commit 5f86b9b9c7
32 changed files with 110 additions and 77 deletions
+4 -3
View File
@@ -94,11 +94,12 @@ const rational &TimelineOutput::Timebase()
return timebase_;
}
QVariant TimelineOutput::Value(NodeOutput *output, const rational &time)
QVariant TimelineOutput::Value(NodeOutput *output, const rational &in, const rational &out)
{
if (output == length_output_) {
Q_UNUSED(time)
Q_UNUSED(in)
Q_UNUSED(out)
if (output == length_output_) {
return QVariant::fromValue(length_);
}
+1 -1
View File
@@ -67,7 +67,7 @@ signals:
void TrackRemoved(TrackOutput* track);
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
virtual QVariant Value(NodeOutput* output, const rational &in, const rational &out) override;
private:
QVector<NodeInput*> track_inputs_;
+3 -3
View File
@@ -176,7 +176,7 @@ void TrackList::TrackConnectionRemoved(NodeEdgePtr edge)
return;
}
DetachTrack(Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0)));
DetachTrack(Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0, 0)));
}
void TrackList::TrackEdgeAdded(NodeEdgePtr edge)
@@ -186,7 +186,7 @@ void TrackList::TrackEdgeAdded(NodeEdgePtr edge)
// If this edge pertains to the track's track input, all the tracks just added need attaching
if (edge->input() == track->track_input()) {
TrackOutput* added_track = Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0));
TrackOutput* added_track = Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0, 0));
AttachTrack(added_track);
}
@@ -199,7 +199,7 @@ void TrackList::TrackEdgeRemoved(NodeEdgePtr edge)
// If this edge pertains to the track's track input, all the tracks just added need attaching
if (edge->input() == track->track_input()) {
TrackOutput* added_track = Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0));
TrackOutput* added_track = Node::ValueToPtr<TrackOutput>(edge->output()->get_value(0, 0));
DetachTrack(added_track);
}
+11 -4
View File
@@ -192,25 +192,32 @@ void TrackOutput::InvalidateCache(const rational &start_range, const rational &e
}
}
QVariant TrackOutput::Value(NodeOutput *output, const rational &time)
QVariant TrackOutput::Value(NodeOutput *output, const rational &in, const rational &out)
{
if (output == track_output_) {
// Set track output correctly
return PtrToValue(this);
} else if (output == texture_output()) {
ValidateCurrentBlock(time);
ValidateCurrentBlock(in);
if (current_block_ != this) {
// At this point, we must have found the correct block so we use its texture output to produce the image
return current_block_->texture_output()->get_value(time);
return current_block_->texture_output()->get_value(in, out);
}
// No texture is valid
return 0;
} else if (output == samples_output()) {
ValidateCurrentBlock(in);
if (current_block_ != this) {
// FIXME: String together samples from blocks in this range
qDebug() << "FIXME: Implement this";
}
}
// Run default node processing
return Block::Value(output, time);
return Block::Value(output, in, out);
}
void TrackOutput::InsertBlockBetweenBlocks(Block *block, Block *before, Block *after)
+1 -1
View File
@@ -146,7 +146,7 @@ signals:
void BlockRemoved(Block* block);
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
virtual QVariant Value(NodeOutput* output, const rational& in, const rational &out) override;
private:
/**
+3 -2
View File
@@ -126,10 +126,11 @@ rational ViewerOutput::Length()
return length_input_->get_value(0).value<rational>();
}
QVariant ViewerOutput::Value(NodeOutput *output, const rational &time)
QVariant ViewerOutput::Value(NodeOutput *output, const rational &in, const rational &out)
{
Q_UNUSED(output)
Q_UNUSED(time)
Q_UNUSED(in)
Q_UNUSED(out)
return 0;
}
+1 -1
View File
@@ -67,7 +67,7 @@ signals:
void SizeChanged(int width, int height);
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
virtual QVariant Value(NodeOutput* output, const rational &in, const rational &out) override;
private:
NodeInput* texture_input_;