further progress on footage viewer

This commit is contained in:
itsmattkc
2018-10-18 17:16:50 +11:00
parent 25aa10b5c4
commit e2a7aeea98
8 changed files with 59 additions and 60 deletions
+28 -27
View File
@@ -55,11 +55,13 @@ void MainWindow::setup_layout() {
panel_timeline->show();
addDockWidget(Qt::TopDockWidgetArea, panel_project);
addDockWidget(Qt::TopDockWidgetArea, panel_effect_controls);
tabifyDockWidget(panel_effect_controls, panel_footage_viewer);
addDockWidget(Qt::TopDockWidgetArea, panel_footage_viewer);
tabifyDockWidget(panel_footage_viewer, panel_effect_controls);
panel_footage_viewer->raise();
addDockWidget(Qt::TopDockWidgetArea, panel_sequence_viewer);
addDockWidget(Qt::BottomDockWidgetArea, panel_timeline);
// workaround for older versions of Qt
resizeDocks({panel_project}, {40}, Qt::Horizontal);
}
@@ -101,10 +103,10 @@ MainWindow::MainWindow(QWidget *parent) :
setDockNestingEnabled(true);
// TODO maybe replace these with non-pointers later on?
panel_project = new Project(this);
panel_effect_controls = new EffectControls(this);
panel_sequence_viewer = new Viewer(this);
panel_footage_viewer = new Viewer(this);
panel_project = new Project(this);
panel_effect_controls = new EffectControls(this);
panel_timeline = new Timeline(this);
setup_layout();
@@ -454,35 +456,35 @@ void MainWindow::on_actionReset_to_default_layout_triggered()
void MainWindow::on_actionGo_to_start_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus() || panel_effect_controls->keyframe_focus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused() || panel_effect_controls->keyframe_focus())) {
panel_sequence_viewer->go_to_start();
}
}
void MainWindow::on_actionPrevious_Frame_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus() || panel_effect_controls->keyframe_focus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused() || panel_effect_controls->keyframe_focus())) {
panel_sequence_viewer->previous_frame();
}
}
void MainWindow::on_actionNext_Frame_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus() || panel_effect_controls->keyframe_focus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused() || panel_effect_controls->keyframe_focus())) {
panel_sequence_viewer->next_frame();
}
}
void MainWindow::on_actionGo_to_End_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus() || panel_effect_controls->keyframe_focus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused() || panel_effect_controls->keyframe_focus())) {
panel_sequence_viewer->go_to_end();
}
}
void MainWindow::on_actionPlay_Pause_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus() || panel_effect_controls->keyframe_focus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused() || panel_effect_controls->keyframe_focus())) {
panel_sequence_viewer->toggle_play();
}
}
@@ -524,14 +526,14 @@ void MainWindow::on_actionSlip_Tool_triggered()
void MainWindow::on_actionGo_to_Previous_Cut_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused())) {
panel_timeline->previous_cut();
}
}
void MainWindow::on_actionGo_to_Next_Cut_triggered()
{
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->hasFocus())) {
if (sequence != NULL && (panel_timeline->focused() || panel_sequence_viewer->is_focused())) {
panel_timeline->next_cut();
}
}
@@ -576,28 +578,19 @@ void MainWindow::viewMenu_About_To_Be_Shown() {
void MainWindow::on_actionFrames_triggered()
{
config.timecode_view = TIMECODE_FRAMES;
if (sequence != NULL) {
panel_sequence_viewer->update_playhead_timecode(sequence->playhead);
panel_sequence_viewer->update_end_timecode();
}
update_ui(false);
}
void MainWindow::on_actionDrop_Frame_triggered()
{
config.timecode_view = TIMECODE_DROP;
if (sequence != NULL) {
panel_sequence_viewer->update_playhead_timecode(sequence->playhead);
panel_sequence_viewer->update_end_timecode();
}
update_ui(false);
}
void MainWindow::on_actionNon_Drop_Frame_triggered()
{
config.timecode_view = TIMECODE_NONDROP;
if (sequence != NULL) {
panel_sequence_viewer->update_playhead_timecode(sequence->playhead);
panel_sequence_viewer->update_end_timecode();
}
update_ui(false);
}
void MainWindow::toolMenu_About_To_Be_Shown() {
@@ -701,18 +694,26 @@ void MainWindow::on_actionRipple_to_Out_Point_triggered()
void MainWindow::on_actionSet_In_Point_triggered()
{
if (panel_timeline->focused() || panel_sequence_viewer->hasFocus()) panel_timeline->set_in_point();
if (panel_timeline->focused() || panel_sequence_viewer->is_focused()) {
panel_sequence_viewer->set_in_point();
} else if (panel_footage_viewer->is_focused()) {
panel_footage_viewer->set_in_point();
}
}
void MainWindow::on_actionSet_Out_Point_triggered()
{
if (panel_timeline->focused() || panel_sequence_viewer->hasFocus()) panel_timeline->set_out_point();
if (panel_timeline->focused() || panel_sequence_viewer->is_focused()) {
panel_sequence_viewer->set_out_point();
} else if (panel_footage_viewer->is_focused()) {
panel_footage_viewer->set_out_point();
}
}
void MainWindow::on_actionClear_In_Out_triggered() {
if ((panel_timeline->focused() || panel_sequence_viewer->hasFocus()) && sequence->using_workarea) {
if ((panel_timeline->focused() || panel_sequence_viewer->is_focused()) && sequence->using_workarea) {
undo_stack.push(new SetTimelineInOutCommand(sequence, false, 0, 0));
panel_timeline->repaint_timeline();
update_ui(false);
}
}
+1 -3
View File
@@ -30,6 +30,7 @@ EffectControls::EffectControls(QWidget *parent) :
init_effects();
init_transitions();
clear_effects(false);
ui->headers->viewer = panel_sequence_viewer;
ui->headers->snapping = false;
ui->effects_area->parent_widget = ui->scrollArea;
@@ -45,9 +46,6 @@ EffectControls::EffectControls(QWidget *parent) :
connect(ui->verticalScrollBar, SIGNAL(valueChanged(int)), ui->keyframeView, SLOT(set_y_scroll(int)));
connect(ui->verticalScrollBar, SIGNAL(valueChanged(int)), ui->scrollArea->verticalScrollBar(), SLOT(setValue(int)));
connect(ui->scrollArea->verticalScrollBar(), SIGNAL(valueChanged(int)), ui->verticalScrollBar, SLOT(setValue(int)));
/*connect(ui->keyframeScroller->verticalScrollBar(), SIGNAL(valueChanged(int)), ui->scrollArea->verticalScrollBar(), SLOT(setValue(int)));
connect(ui->keyframeScroller->horizontalScrollBar(), SIGNAL(valueChanged(int)), ui->headers, SLOT(set_scroll(int)));*/
}
EffectControls::~EffectControls() {
+1 -1
View File
@@ -62,7 +62,7 @@ void update_effect_controls() {
void update_ui(bool modified) {
if (modified) {
panel_sequence_viewer->reset_all_audio();
// panel_sequence_viewer->reset_all_audio();
update_effect_controls();
}
panel_effect_controls->update_keyframes();
+2 -9
View File
@@ -184,14 +184,6 @@ int Timeline::calculate_track_height(int track, int value) {
return vector.at(index);
}
void Timeline::set_in_point() {
ui->headers->set_in_point(sequence->playhead);
}
void Timeline::set_out_point() {
ui->headers->set_out_point(sequence->playhead);
}
void Timeline::update_sequence() {
bool null_sequence = (sequence == NULL);
@@ -315,7 +307,8 @@ void Timeline::delete_selection(bool ripple_delete) {
if (!deleted) {
for (int j=0;j<sequence->clips.size();j++) {
Clip* cc = sequence->clips.at(j);
if (cc->track == c->track
if (cc != NULL
&& cc->track == c->track
&& cc->timeline_in > c->timeline_out
&& cc->timeline_in < c->timeline_out + ripple_length) {
ripple_length = cc->timeline_in - c->timeline_out;
-2
View File
@@ -92,8 +92,6 @@ public:
bool has_clip_been_split(int c);
void toggle_links();
void ripple_to_in_point(bool in);
void set_in_point();
void set_out_point();
void delete_in_out(bool ripple);
void previous_cut();
void next_cut();
+19 -7
View File
@@ -52,7 +52,11 @@ Viewer::Viewer(QWidget *parent) :
}
Viewer::~Viewer() {
delete ui;
delete ui;
}
bool Viewer::is_focused() {
return ui->headers->hasFocus() || ui->openGLWidget->hasFocus();
}
void Viewer::set_main_sequence() {
@@ -140,7 +144,7 @@ QString frame_to_timecode(long f, int view, double frame_rate) {
}
bool frame_rate_is_droppable(float rate) {
return (rate == 23.976f || rate == 29.97f || rate == 59.94f);
return (qFuzzyCompare(rate, 23.976f) || qFuzzyCompare(rate, 29.97f) || qFuzzyCompare(rate, 59.94f));
}
void Viewer::seek(long p) {
@@ -204,10 +208,6 @@ void Viewer::update_end_timecode() {
void Viewer::update_header_zoom() {
if (seq != NULL) {
long sequenceEndFrame = seq->getEndFrame();
if (sequenceEndFrame > 0) {
ui->headers->update_zoom((double) ui->headers->width() / (double) sequenceEndFrame);
} else {
}
ui->headers->update_zoom((sequenceEndFrame > 0) ? ((double) ui->headers->width() / (double) sequenceEndFrame) : 1);
}
}
@@ -224,6 +224,17 @@ void Viewer::update_viewer() {
viewer_widget->update();
update_header_zoom();
if (seq != NULL) update_playhead_timecode(seq->playhead);
update_end_timecode();
}
void Viewer::set_in_point() {
qDebug() << "in h";
ui->headers->set_in_point(seq->playhead);
}
void Viewer::set_out_point() {
qDebug() << "out h";
ui->headers->set_out_point(seq->playhead);
}
void Viewer::set_media(int type, void* media) {
@@ -242,7 +253,8 @@ void Viewer::set_media(int type, void* media) {
MediaStream* video_stream = footage->video_tracks.at(0);
seq->width = video_stream->video_width;
seq->height = video_stream->video_height;
seq->frame_rate = video_stream->video_frame_rate;
if (video_stream->video_frame_rate > 0) seq->frame_rate = video_stream->video_frame_rate;
qDebug() << seq->frame_rate << video_stream->video_frame_rate;
Clip* c = new Clip(seq);
c->media = footage;
+3
View File
@@ -23,6 +23,7 @@ public:
explicit Viewer(QWidget *parent = 0);
~Viewer();
bool is_focused();
void set_main_sequence();
void set_media(int type, void* media);
void compose();
@@ -31,6 +32,8 @@ public:
void update_end_timecode();
void update_header_zoom();
void update_viewer();
void set_in_point();
void set_out_point();
// playback functions
void go_to_start();
+5 -11
View File
@@ -708,8 +708,6 @@ void TimelineWidget::mouseReleaseEvent(QMouseEvent *event) {
bool shift = (event->modifiers() & Qt::ShiftModifier);
if (event->button() == Qt::LeftButton) {
bool changed = false;
ComboAction* ca = new ComboAction();
bool push_undo = false;
@@ -780,8 +778,7 @@ void TimelineWidget::mouseReleaseEvent(QMouseEvent *event) {
areas.append(s);
panel_timeline->delete_areas_and_relink(ca, areas);
push_undo = true;
changed = true;
push_undo = true;
if (!shift) {
panel_timeline->creating = false;
@@ -952,11 +949,9 @@ void TimelineWidget::mouseReleaseEvent(QMouseEvent *event) {
}
}
}
push_undo = true;
changed = true;
push_undo = true;
}
} else if (panel_timeline->selecting || panel_timeline->rect_select_proc) {
changed = true;
} else if (panel_timeline->selecting || panel_timeline->rect_select_proc) {
} else if (panel_timeline->splitting) {
bool split = false;
for (int i=0;i<panel_timeline->split_tracks.size();i++) {
@@ -966,8 +961,7 @@ void TimelineWidget::mouseReleaseEvent(QMouseEvent *event) {
}
}
if (split) {
push_undo = true;
changed = true;
push_undo = true;
}
panel_timeline->split_cache.clear();
}
@@ -1004,7 +998,7 @@ void TimelineWidget::mouseReleaseEvent(QMouseEvent *event) {
pre_clips.clear();
post_clips.clear();
update_ui(changed);
update_ui(true);
}
}
}