fixed hardcoded viewer size

This commit is contained in:
itsmattkc
2019-09-27 03:51:08 +10:00
parent 9806c772ac
commit 150afb6ebc
6 changed files with 61 additions and 13 deletions
+21 -1
View File
@@ -20,7 +20,9 @@
#include "viewer.h"
ViewerOutput::ViewerOutput()
ViewerOutput::ViewerOutput() :
viewer_width_(0),
viewer_height_(0)
{
texture_input_ = new NodeInput("tex_out");
texture_input_->add_data_input(NodeInput::kTexture);
@@ -78,6 +80,24 @@ void ViewerOutput::InvalidateCache(const rational &start_range, const rational &
SendInvalidateCache(start_range, end_range);
}
void ViewerOutput::SetViewerSize(const int &width, const int &height)
{
viewer_width_ = width;
viewer_height_ = height;
emit SizeChanged(viewer_width_, viewer_height_);
}
const int &ViewerOutput::ViewerWidth()
{
return viewer_width_;
}
const int &ViewerOutput::ViewerHeight()
{
return viewer_height_;
}
QVariant ViewerOutput::Value(NodeOutput *output, const rational &time)
{
Q_UNUSED(output)
+11
View File
@@ -49,11 +49,18 @@ public:
virtual void InvalidateCache(const rational &start_range, const rational &end_range, NodeInput *from = nullptr) override;
void SetViewerSize(const int& width, const int& height);
const int& ViewerWidth();
const int& ViewerHeight();
signals:
void TimebaseChanged(const rational&);
void TextureChangedBetween(const rational&, const rational&);
void SizeChanged(int width, int height);
protected:
virtual QVariant Value(NodeOutput* output, const rational& time) override;
@@ -62,6 +69,10 @@ private:
rational timebase_;
int viewer_width_;
int viewer_height_;
};
#endif // VIEWER_H
+8 -4
View File
@@ -77,7 +77,7 @@ void Sequence::AddDefaultNodes()
// Update the timebase on these nodes
set_video_time_base(video_time_base_);
update_parameters();
update_video_parameters();
}
Item::Type Sequence::type() const
@@ -117,7 +117,7 @@ void Sequence::set_video_width(const int &width)
{
video_width_ = width;
update_parameters();
update_video_parameters();
}
const int &Sequence::video_height() const
@@ -129,7 +129,7 @@ void Sequence::set_video_height(const int &height)
{
video_height_ = height;
update_parameters();
update_video_parameters();
}
const rational &Sequence::video_time_base()
@@ -182,7 +182,7 @@ void Sequence::SetDefaultParameters()
set_audio_channel_layout(AV_CH_LAYOUT_STEREO);
}
void Sequence::update_parameters()
void Sequence::update_video_parameters()
{
if (renderer_processor_ != nullptr) {
// Set renderer's parameters based on sequence's parameters
@@ -195,4 +195,8 @@ void Sequence::update_parameters()
// Set the "cache name" only here to aid the cache ID's uniqueness
renderer_processor_->SetCacheName(name());
}
if (viewer_output_ != nullptr) {
viewer_output_->SetViewerSize(video_width_, video_height_);
}
}
+1 -1
View File
@@ -75,7 +75,7 @@ public:
void SetDefaultParameters();
private:
void update_parameters();
void update_video_parameters();
TimelineOutput* timeline_output_;
RendererProcessor* renderer_processor_;
+15 -7
View File
@@ -28,7 +28,6 @@
#include "audio/audiomanager.h"
#include "common/timecodefunctions.h"
#include "viewersizer.h"
ViewerWidget::ViewerWidget(QWidget *parent) :
QWidget(parent),
@@ -40,14 +39,11 @@ ViewerWidget::ViewerWidget(QWidget *parent) :
layout->setMargin(0);
// Create main OpenGL-based view
ViewerSizer* sizer = new ViewerSizer(this);
layout->addWidget(sizer);
sizer_ = new ViewerSizer(this);
layout->addWidget(sizer_);
gl_widget_ = new ViewerGLWidget(this);
sizer->SetWidget(gl_widget_);
// FIXME: Hardcoded values
sizer->SetChildSize(1920, 1080);
sizer_->SetWidget(gl_widget_);
// Create time ruler
ruler_ = new TimeRuler(false, this);
@@ -132,6 +128,10 @@ void ViewerWidget::ConnectViewerNode(ViewerOutput *node)
disconnect(viewer_node_, SIGNAL(TimebaseChanged(const rational&)), this, SLOT(SetTimebase(const rational&)));
disconnect(viewer_node_, SIGNAL(TextureChangedBetween(const rational&, const rational&)), this, SLOT(ViewerNodeChangedBetween(const rational&, const rational&)));
disconnect(viewer_node_, SIGNAL(SizeChanged(int, int)), this, SLOT(SizeChangedSlot(int, int)));
// Effectively disables the viewer and clears the state
SizeChangedSlot(0, 0);
}
viewer_node_ = node;
@@ -144,6 +144,9 @@ void ViewerWidget::ConnectViewerNode(ViewerOutput *node)
connect(viewer_node_, SIGNAL(TimebaseChanged(const rational&)), this, SLOT(SetTimebase(const rational&)));
connect(viewer_node_, SIGNAL(TextureChangedBetween(const rational&, const rational&)), this, SLOT(ViewerNodeChangedBetween(const rational&, const rational&)));
connect(viewer_node_, SIGNAL(SizeChanged(int, int)), this, SLOT(SizeChangedSlot(int, int)));
SizeChangedSlot(viewer_node_->ViewerWidth(), viewer_node_->ViewerHeight());
}
}
@@ -317,6 +320,11 @@ void ViewerWidget::ViewerNodeChangedBetween(const rational &start, const rationa
}
}
void ViewerWidget::SizeChangedSlot(int width, int height)
{
sizer_->SetChildSize(width, height);
}
void ViewerWidget::resizeEvent(QResizeEvent *event)
{
// Set scrollbar page step to the width
+5
View File
@@ -30,6 +30,7 @@
#include "common/rational.h"
#include "node/output/viewer/viewer.h"
#include "viewerglwidget.h"
#include "viewersizer.h"
#include "widget/playbackcontrols/playbackcontrols.h"
#include "widget/timeruler/timeruler.h"
@@ -105,6 +106,8 @@ private:
void PlayInternal(int speed);
ViewerSizer* sizer_;
ViewerGLWidget* gl_widget_;
PlaybackControls* controls_;
@@ -133,6 +136,8 @@ private slots:
void ViewerNodeChangedBetween(const rational& start, const rational& end);
void SizeChangedSlot(int width, int height);
};
#endif // VIEWER_WIDGET_H