fixed hardcoded viewer size
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
void SetDefaultParameters();
|
||||
|
||||
private:
|
||||
void update_parameters();
|
||||
void update_video_parameters();
|
||||
|
||||
TimelineOutput* timeline_output_;
|
||||
RendererProcessor* renderer_processor_;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user