refactored so sequence is again a derivative of viewer

This commit is contained in:
itsmattkc
2021-04-05 14:41:59 +10:00
parent 748f45b7b8
commit 9be014c0b6
38 changed files with 600 additions and 565 deletions
+1 -1
View File
@@ -185,7 +185,7 @@ void CurveWidget::TimeTargetChangedEvent(Node *target)
view_->SetTimeTarget(target);
}
void CurveWidget::ConnectedNodeChanged(Sequence *n)
void CurveWidget::ConnectedNodeChanged(ViewerOutput *n)
{
SetTimeTarget(n);
}
+1 -1
View File
@@ -67,7 +67,7 @@ protected:
virtual void TimeTargetChangedEvent(Node* target) override;
virtual void ConnectedNodeChanged(Sequence* n) override;
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
private:
void SetKeyframeButtonEnabled(bool enable);
+1 -1
View File
@@ -226,7 +226,7 @@ void NodeParamView::TimeChangedEvent(const int64_t &timestamp)
UpdateItemTime(timestamp);
}
void NodeParamView::ConnectedNodeChanged(Sequence *n)
void NodeParamView::ConnectedNodeChanged(ViewerOutput *n)
{
// Set viewer as a time target
keyframe_view_->SetTimeTarget(n);
+1 -1
View File
@@ -96,7 +96,7 @@ protected:
virtual void TimebaseChangedEvent(const rational&) override;
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ConnectedNodeChanged(Sequence* n) override;
virtual void ConnectedNodeChanged(ViewerOutput* n) override;
private:
void UpdateItemTime(const int64_t &timestamp);
+11 -5
View File
@@ -68,12 +68,12 @@ const int64_t &TimeBasedWidget::GetTimestamp() const
return ruler_->GetTime();
}
Sequence *TimeBasedWidget::GetConnectedNode() const
ViewerOutput *TimeBasedWidget::GetConnectedNode() const
{
return viewer_node_;
}
void TimeBasedWidget::ConnectViewerNode(Sequence *node)
void TimeBasedWidget::ConnectViewerNode(ViewerOutput *node)
{
if (viewer_node_ == node) {
return;
@@ -101,7 +101,7 @@ void TimeBasedWidget::ConnectViewerNode(Sequence *node)
if (viewer_node_) {
connect(viewer_node_, &ViewerOutput::LengthChanged, this, &TimeBasedWidget::UpdateMaximumScroll);
if ((points_ = ConnectTimelinePoints())) {
if ((points_ = GetTimelinePointsToConnect())) {
ruler()->ConnectTimelinePoints(points_);
scrollbar_->ConnectTimelinePoints(points_);
}
@@ -242,9 +242,15 @@ void TimeBasedWidget::resizeEvent(QResizeEvent *event)
UpdateMaximumScroll();
}
TimelinePoints *TimeBasedWidget::ConnectTimelinePoints()
TimelinePoints *TimeBasedWidget::GetTimelinePointsToConnect()
{
return viewer_node_->timeline_points();
Sequence* sequence = dynamic_cast<Sequence*>(viewer_node_);
if (sequence) {
return sequence->timeline_points();
}
return nullptr;
}
Project *TimeBasedWidget::GetTimelinePointsProject()
+9 -9
View File
@@ -46,9 +46,11 @@ public:
void ZoomOut();
Sequence* GetConnectedNode() const;
ViewerOutput* GetConnectedNode() const;
void ConnectViewerNode(Sequence *node);
TimelinePoints* GetConnectedTimelinePoints() const;
void ConnectViewerNode(ViewerOutput *node);
void SetScaleAndCenterOnPlayhead(const double& scale);
@@ -105,22 +107,20 @@ protected:
virtual void ScaleChangedEvent(const double &) override;
virtual void ConnectedNodeChanged(Sequence*){}
virtual void ConnectedNodeChanged(ViewerOutput*){}
virtual void ConnectNodeInternal(Sequence*){}
virtual void ConnectNodeInternal(ViewerOutput*){}
virtual void DisconnectNodeInternal(Sequence*){}
virtual void DisconnectNodeInternal(ViewerOutput*){}
void SetAutoMaxScrollBar(bool e);
virtual void resizeEvent(QResizeEvent *event) override;
virtual TimelinePoints* ConnectTimelinePoints();
virtual TimelinePoints* GetTimelinePointsToConnect();
virtual Project* GetTimelinePointsProject();
TimelinePoints* GetConnectedTimelinePoints() const;
void ConnectTimelineView(TimeBasedView* base, bool connect_time_change_event = true);
void PassWheelEventsToScrollBar(QObject* object);
@@ -189,7 +189,7 @@ private:
bool UserIsDraggingPlayhead() const;
Sequence* viewer_node_;
ViewerOutput* viewer_node_;
TimeRuler* ruler_;
+2 -2
View File
@@ -1395,9 +1395,9 @@ public:
QString relevant_input;
if (timeline_->type() == Track::kVideo) {
relevant_input = Sequence::kTextureInput;
relevant_input = ViewerOutput::kTextureInput;
} else {
relevant_input = Sequence::kSamplesInput;
relevant_input = ViewerOutput::kSamplesInput;
}
if (!timeline_->parent()->IsInputConnected(relevant_input)) {
+10 -8
View File
@@ -218,10 +218,12 @@ void TimelineWidget::ScaleChangedEvent(const double &scale)
}
}
void TimelineWidget::ConnectNodeInternal(Sequence *n)
void TimelineWidget::ConnectNodeInternal(ViewerOutput *n)
{
connect(n, &ViewerOutput::TrackAdded, this, &TimelineWidget::AddTrack);
connect(n, &ViewerOutput::TrackRemoved, this, &TimelineWidget::RemoveTrack);
Sequence* s = static_cast<Sequence*>(n);
connect(s, &Sequence::TrackAdded, this, &TimelineWidget::AddTrack);
connect(s, &Sequence::TrackRemoved, this, &TimelineWidget::RemoveTrack);
connect(n, &ViewerOutput::TimebaseChanged, this, &TimelineWidget::SetTimebase);
ruler()->SetPlaybackCache(n->video_frame_cache());
@@ -229,7 +231,6 @@ void TimelineWidget::ConnectNodeInternal(Sequence *n)
SetTimebase(n->video_params().time_base());
for (int i=0;i<views_.size();i++) {
Sequence* s = static_cast<Sequence*>(n);
Track::Type track_type = static_cast<Track::Type>(i);
TimelineView* view = views_.at(i)->view();
TrackList* track_list = s->track_list(track_type);
@@ -246,15 +247,16 @@ void TimelineWidget::ConnectNodeInternal(Sequence *n)
}
}
void TimelineWidget::DisconnectNodeInternal(Sequence *n)
void TimelineWidget::DisconnectNodeInternal(ViewerOutput *n)
{
disconnect(n, &ViewerOutput::TrackAdded, this, &TimelineWidget::AddTrack);
disconnect(n, &ViewerOutput::TrackRemoved, this, &TimelineWidget::RemoveTrack);
Sequence* s = static_cast<Sequence*>(n);
disconnect(s, &Sequence::TrackAdded, this, &TimelineWidget::AddTrack);
disconnect(s, &Sequence::TrackRemoved, this, &TimelineWidget::RemoveTrack);
disconnect(n, &ViewerOutput::TimebaseChanged, this, &TimelineWidget::SetTimebase);
DeselectAll();
Sequence* s = static_cast<Sequence*>(n);
foreach (Track* track, s->GetTracks()) {
RemoveTrack(track);
}
+2 -2
View File
@@ -245,8 +245,8 @@ protected:
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ScaleChangedEvent(const double &) override;
virtual void ConnectNodeInternal(Sequence* n) override;
virtual void DisconnectNodeInternal(Sequence* n) override;
virtual void ConnectNodeInternal(ViewerOutput* n) override;
virtual void DisconnectNodeInternal(ViewerOutput* n) override;
virtual void CopyNodesToClipboardInternal(QXmlStreamWriter *writer, void* userdata) override;
virtual void PasteNodesFromClipboardInternal(QXmlStreamReader *reader, XMLNodeData &xml_node_data, void* userdata) override;
+1 -1
View File
@@ -102,7 +102,7 @@ void AddTool::MouseRelease(TimelineViewMouseEvent *event)
command->add_child(new NodeAddCommand(graph,
clip));
command->add_child(new TrackPlaceBlockCommand(static_cast<Sequence*>(parent()->GetConnectedNode())->track_list(track.type()),
command->add_child(new TrackPlaceBlockCommand(sequence()->track_list(track.type()),
track.index(),
clip,
ghost_->GetAdjustedIn()));
+3 -4
View File
@@ -313,12 +313,11 @@ void ImportTool::DropGhosts(bool insert)
MultiUndoCommand* command = new MultiUndoCommand();
NodeGraph* dst_graph = nullptr;
Sequence* sequence = nullptr;
Sequence* sequence = this->sequence();
bool open_sequence = false;
if (parent()->GetConnectedNode()) {
sequence = parent()->GetConnectedNode();
dst_graph = parent()->GetConnectedNode()->parent();
if (sequence) {
dst_graph = sequence->parent();
} else {
// There's no active timeline here, ask the user what to do
+1 -1
View File
@@ -91,7 +91,7 @@ void FootageViewerWidget::SetFootage(Footage *footage)
}
}
TimelinePoints *FootageViewerWidget::ConnectTimelinePoints()
TimelinePoints *FootageViewerWidget::GetTimelinePointsToConnect()
{
return footage_;
}
+1 -1
View File
@@ -36,7 +36,7 @@ public:
void SetFootage(Footage* footage);
protected:
virtual TimelinePoints* ConnectTimelinePoints() override;
virtual TimelinePoints* GetTimelinePointsToConnect() override;
virtual Project* GetTimelinePointsProject() override;
+11 -10
View File
@@ -35,7 +35,6 @@
#include "common/ratiodialog.h"
#include "common/timecodefunctions.h"
#include "config/config.h"
#include "project/item/sequence/sequence.h"
#include "project/project.h"
#include "render/rendermanager.h"
#include "task/taskmanager.h"
@@ -44,12 +43,14 @@
namespace olive {
#define super TimeBasedWidget
QVector<ViewerWidget*> ViewerWidget::instances_;
const int kMaxPreQueueSize = 16;
ViewerWidget::ViewerWidget(QWidget *parent) :
TimeBasedWidget(false, true, parent),
super(false, true, parent),
playback_speed_(0),
frame_cache_job_time_(0),
color_menu_enabled_(true),
@@ -168,7 +169,7 @@ void ViewerWidget::TimeChangedEvent(const int64_t &i)
last_time_ = i;
}
void ViewerWidget::ConnectNodeInternal(Sequence *n)
void ViewerWidget::ConnectNodeInternal(ViewerOutput *n)
{
connect(n, &ViewerOutput::SizeChanged, this, &ViewerWidget::SetViewerResolution);
connect(n, &ViewerOutput::PixelAspectChanged, this, &ViewerWidget::SetViewerPixelAspect);
@@ -220,7 +221,7 @@ void ViewerWidget::ConnectNodeInternal(Sequence *n)
ForceUpdate();
}
void ViewerWidget::DisconnectNodeInternal(Sequence *n)
void ViewerWidget::DisconnectNodeInternal(ViewerOutput *n)
{
PauseInternal();
@@ -252,21 +253,21 @@ void ViewerWidget::DisconnectNodeInternal(Sequence *n)
QMetaObject::invokeMethod(this, "UpdateStack", Qt::QueuedConnection);
}
void ViewerWidget::ConnectedNodeChanged(Sequence *n)
void ViewerWidget::ConnectedNodeChanged(ViewerOutput *n)
{
auto_cacher_.SetViewerNode(n);
}
void ViewerWidget::ScaleChangedEvent(const double &s)
{
TimeBasedWidget::ScaleChangedEvent(s);
super::ScaleChangedEvent(s);
waveform_view_->SetScale(s);
}
void ViewerWidget::resizeEvent(QResizeEvent *event)
{
TimeBasedWidget::resizeEvent(event);
super::resizeEvent(event);
UpdateMinimumScale();
}
@@ -285,11 +286,11 @@ bool ViewerWidget::IsPlaying() const
return playback_speed_ != 0;
}
void ViewerWidget::ConnectViewerNode(Sequence *node, ColorManager* color_manager)
void ViewerWidget::ConnectViewerNode(ViewerOutput *node, ColorManager* color_manager)
{
override_color_manager_ = color_manager;
TimeBasedWidget::ConnectViewerNode(node);
super::ConnectViewerNode(node);
}
void ViewerWidget::SetColorMenuEnabled(bool enabled)
@@ -1053,7 +1054,7 @@ void ViewerWidget::SetSignalCursorColorEnabled(bool e)
void ViewerWidget::TimebaseChangedEvent(const rational &timebase)
{
TimeBasedWidget::TimebaseChangedEvent(timebase);
super::TimebaseChangedEvent(timebase);
controls_->SetTimebase(timebase);
+4 -4
View File
@@ -63,7 +63,7 @@ public:
bool IsPlaying() const;
void ConnectViewerNode(Sequence *node, ColorManager *color_manager = nullptr);
void ConnectViewerNode(ViewerOutput *node, ColorManager *color_manager = nullptr);
/**
* @brief Enable or disable the color management menu
@@ -153,9 +153,9 @@ protected:
virtual void TimebaseChangedEvent(const rational &) override;
virtual void TimeChangedEvent(const int64_t &) override;
virtual void ConnectNodeInternal(Sequence *) override;
virtual void DisconnectNodeInternal(Sequence *) override;
virtual void ConnectedNodeChanged(Sequence*n) override;
virtual void ConnectNodeInternal(ViewerOutput *) override;
virtual void DisconnectNodeInternal(ViewerOutput *) override;
virtual void ConnectedNodeChanged(ViewerOutput*n) override;
virtual void ScaleChangedEvent(const double& s) override;