diff --git a/dialogs/exportdialog.cpp b/dialogs/exportdialog.cpp index ec7a0ab7f..e1c9991c1 100644 --- a/dialogs/exportdialog.cpp +++ b/dialogs/exportdialog.cpp @@ -63,7 +63,7 @@ ExportDialog::ExportDialog(QWidget *parent) : rangeCombobox->setCurrentIndex(0); if (sequence->using_workarea) { rangeCombobox->setEnabled(true); - if (sequence->enable_workarea) rangeCombobox->setCurrentIndex(1); + rangeCombobox->setCurrentIndex(1); } format_strings.resize(FORMAT_SIZE); diff --git a/io/loadthread.cpp b/io/loadthread.cpp index 7f4911be4..24825bcb4 100644 --- a/io/loadthread.cpp +++ b/io/loadthread.cpp @@ -185,34 +185,34 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) { int folder = 0; Media* item = new Media(0); - Footage* f = new Footage(); + Footage* f = new Footage(); - f->using_inout = false; + f->using_inout = false; for (int j=0;jsave_id = attr.value().toInt(); + f->save_id = attr.value().toInt(); } else if (attr.name() == "folder") { folder = attr.value().toInt(); } else if (attr.name() == "name") { - f->name = attr.value().toString(); + f->name = attr.value().toString(); } else if (attr.name() == "url") { - f->url = attr.value().toString(); + f->url = attr.value().toString(); - if (!QFileInfo::exists(f->url)) { // if path is not absolute - QString proj_dir_test = proj_dir.absoluteFilePath(f->url); - QString internal_proj_dir_test = internal_proj_dir.absoluteFilePath(f->url); + if (!QFileInfo::exists(f->url)) { // if path is not absolute + QString proj_dir_test = proj_dir.absoluteFilePath(f->url); + QString internal_proj_dir_test = internal_proj_dir.absoluteFilePath(f->url); if (QFileInfo::exists(proj_dir_test)) { // if path is relative to the project's current dir - f->url = proj_dir_test; + f->url = proj_dir_test; qInfo() << "Matched" << attr.value().toString() << "relative to project's current directory"; } else if (QFileInfo::exists(internal_proj_dir_test)) { // if path is relative to the last directory the project was saved in - f->url = internal_proj_dir_test; + f->url = internal_proj_dir_test; qInfo() << "Matched" << attr.value().toString() << "relative to project's internal directory"; - } else if (f->url.contains('%')) { + } else if (f->url.contains('%')) { // hack for image sequences (qt won't be able to find the URL with %, but ffmpeg may) - f->url = internal_proj_dir_test; + f->url = internal_proj_dir_test; qInfo() << "Guess image sequence" << attr.value().toString() << "path to project's internal directory"; } else { qInfo() << "Failed to match" << attr.value().toString() << "to file"; @@ -221,41 +221,41 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) { qInfo() << "Matched" << attr.value().toString() << "with absolute path"; } } else if (attr.name() == "duration") { - f->length = attr.value().toLongLong(); + f->length = attr.value().toLongLong(); } else if (attr.name() == "using_inout") { - f->using_inout = (attr.value() == "1"); + f->using_inout = (attr.value() == "1"); } else if (attr.name() == "in") { - f->in = attr.value().toLong(); + f->in = attr.value().toLong(); } else if (attr.name() == "out") { - f->out = attr.value().toLong(); + f->out = attr.value().toLong(); } else if (attr.name() == "speed") { - f->speed = attr.value().toDouble(); + f->speed = attr.value().toDouble(); } else if (attr.name() == "alphapremul") { - f->alpha_is_premultiplied = (attr.value() == "1"); + f->alpha_is_premultiplied = (attr.value() == "1"); } else if (attr.name() == "proxy") { - f->proxy = (attr.value() == "1"); + f->proxy = (attr.value() == "1"); } else if (attr.name() == "proxypath") { - f->proxy_path = attr.value().toString(); + f->proxy_path = attr.value().toString(); } - } + } - while (!cancelled && !(stream.name() == child_search && stream.isEndElement()) && !stream.atEnd()) { - read_next_start_element(stream); - if (stream.name() == "marker" && stream.isStartElement()) { - Marker m; - for (int j=0;jmarkers.append(m); - } - } + while (!cancelled && !(stream.name() == child_search && stream.isEndElement()) && !stream.atEnd()) { + read_next_start_element(stream); + if (stream.name() == "marker" && stream.isStartElement()) { + Marker m; + for (int j=0;jmarkers.append(m); + } + } - item->set_footage(f); + item->set_footage(f); if (folder == 0) { project_model.appendChild(nullptr, item); @@ -296,8 +296,6 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) { open_seq = s; } else if (attr.name() == "workarea") { s->using_workarea = (attr.value() == "1"); - } else if (attr.name() == "workareaEnabled") { - s->enable_workarea = (attr.value() == "1"); } else if (attr.name() == "workareaIn") { s->workarea_in = attr.value().toLong(); } else if (attr.name() == "workareaOut") { @@ -429,24 +427,24 @@ bool LoadThread::load_worker(QFile& f, QXmlStreamReader& stream, int type) { } } if (cancelled) return false; - } else if (stream.isStartElement() - && (stream.name() == "effect" - || stream.name() == "opening" - || stream.name() == "closing")) { + } else if (stream.isStartElement() + && (stream.name() == "effect" + || stream.name() == "opening" + || stream.name() == "closing")) { // "opening" and "closing" are backwards compatibility code load_effect(stream, c); - } else if (stream.name() == "marker" && stream.isStartElement()) { - Marker m; - for (int j=0;jget_markers().append(m); - } + } else if (stream.name() == "marker" && stream.isStartElement()) { + Marker m; + for (int j=0;jget_markers().append(m); + } } } if (cancelled) return false; diff --git a/mainwindow.cpp b/mainwindow.cpp index 36b880367..805d06552 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -268,7 +268,6 @@ void MainWindow::make_new_menu(QMenu *parent) { void MainWindow::make_inout_menu(QMenu *parent) { parent->addAction(tr("Set In Point"), this, SLOT(set_in_point()), QKeySequence("I"))->setProperty("id", "setinpoint"); parent->addAction(tr("Set Out Point"), this, SLOT(set_out_point()), QKeySequence("O"))->setProperty("id", "setoutpoint"); - parent->addAction(tr("Enable/Disable In/Out Point"), this, SLOT(enable_inout()))->setProperty("id", "enableinout"); parent->addSeparator(); parent->addAction(tr("Reset In Point"), this, SLOT(clear_in()))->setProperty("id", "resetin"); parent->addAction(tr("Reset Out Point"), this, SLOT(clear_out()))->setProperty("id", "resetout"); @@ -1465,14 +1464,6 @@ void MainWindow::ripple_delete_inout() } } -void MainWindow::enable_inout() { - if (panel_timeline->focused() || panel_sequence_viewer->is_focused()) { - panel_sequence_viewer->toggle_enable_inout(); - } else if (panel_footage_viewer->is_focused()) { - panel_footage_viewer->toggle_enable_inout(); - } -} - void MainWindow::set_tsa_default() { config.show_title_safe_area = true; config.use_custom_title_safe_ratio = false; diff --git a/mainwindow.h b/mainwindow.h index bd83a9436..50f4c2798 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -115,7 +115,6 @@ private slots: void clear_inout(); void delete_inout(); void ripple_delete_inout(); - void enable_inout(); // title safe area functions void set_tsa_disable(); diff --git a/panels/project.cpp b/panels/project.cpp index 725cd6152..2180f6472 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -970,7 +970,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, stream.writeAttribute("proxy", QString::number(f->proxy)); stream.writeAttribute("proxypath", f->proxy_path); - // save video stream metadata + // save video stream metadata for (int j=0;jvideo_tracks.size();j++) { const FootageStream& ms = f->video_tracks.at(j); stream.writeStartElement("video"); @@ -979,10 +979,10 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, stream.writeAttribute("height", QString::number(ms.video_height)); stream.writeAttribute("framerate", QString::number(ms.video_frame_rate, 'f', 10)); stream.writeAttribute("infinite", QString::number(ms.infinite_length)); - stream.writeEndElement(); // video + stream.writeEndElement(); // video } - // save audio stream metadata + // save audio stream metadata for (int j=0;jaudio_tracks.size();j++) { const FootageStream& ms = f->audio_tracks.at(j); stream.writeStartElement("audio"); @@ -990,15 +990,15 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, stream.writeAttribute("channels", QString::number(ms.audio_channels)); stream.writeAttribute("layout", QString::number(ms.audio_layout)); stream.writeAttribute("frequency", QString::number(ms.audio_frequency)); - stream.writeEndElement(); // audio + stream.writeEndElement(); // audio } - // save footage markers - for (int j=0;jmarkers.size();j++) { - save_marker(stream, f->markers.at(j)); - } + // save footage markers + for (int j=0;jmarkers.size();j++) { + save_marker(stream, f->markers.at(j)); + } - stream.writeEndElement(); // footage + stream.writeEndElement(); // footage media_id++; } else if (type == MEDIA_TYPE_SEQUENCE) { Sequence* s = m->to_sequence(); @@ -1019,7 +1019,6 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, stream.writeAttribute("open", "1"); } stream.writeAttribute("workarea", QString::number(s->using_workarea)); - stream.writeAttribute("workareaEnabled", QString::number(s->enable_workarea)); stream.writeAttribute("workareaIn", QString::number(s->workarea_in)); stream.writeAttribute("workareaOut", QString::number(s->workarea_out)); @@ -1071,8 +1070,8 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, } // save markers - // only necessary for null media clips, since media has its own markers - if (c->media == nullptr) { + // only necessary for null media clips, since media has its own markers + if (c->media == nullptr) { for (int k=0;kget_markers().size();k++) { save_marker(stream, c->get_markers().at(k)); } @@ -1096,7 +1095,7 @@ void Project::save_folder(QXmlStreamWriter& stream, int type, bool set_ids_only, stream.writeEndElement(); // clip } } - for (int j=0;jmarkers.size();j++) { + for (int j=0;jmarkers.size();j++) { save_marker(stream, s->markers.at(j)); } stream.writeEndElement(); diff --git a/panels/timeline.cpp b/panels/timeline.cpp index fb30670a1..df07305cc 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -143,15 +143,15 @@ void ripple_clips(ComboAction* ca, Sequence *s, long point, long length, const Q } void Timeline::toggle_show_all() { - if (sequence != nullptr) { - showing_all = !showing_all; - if (showing_all) { - old_zoom = zoom; - set_zoom_value(double(timeline_area->width() - 200) / double(sequence->getEndFrame())); - } else { - set_zoom_value(old_zoom); - } - } + if (sequence != nullptr) { + showing_all = !showing_all; + if (showing_all) { + old_zoom = zoom; + set_zoom_value(double(timeline_area->width() - 200) / double(sequence->getEndFrame())); + } else { + set_zoom_value(old_zoom); + } + } } void Timeline::create_ghosts_from_media(Sequence* seq, long entry_point, QVector& media_list) { @@ -235,7 +235,7 @@ void Timeline::create_ghosts_from_media(Sequence* seq, long entry_point, QVector case MEDIA_TYPE_SEQUENCE: g.out = entry_point + sequence_length - default_clip_in; - if (s->using_workarea && s->enable_workarea) { + if (s->using_workarea) { g.out -= (sequence_length - default_clip_out); } @@ -1430,8 +1430,8 @@ bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bo return true; } else { // try to snap to clip markers - for (int j=0;jget_markers().size();j++) { - if (snap_to_point(c->get_markers().at(j).frame + c->timeline_in - c->clip_in, l)) { + for (int j=0;jget_markers().size();j++) { + if (snap_to_point(c->get_markers().at(j).frame + c->timeline_in - c->clip_in, l)) { return true; } } @@ -1444,7 +1444,7 @@ bool Timeline::snap_to_timeline(long* l, bool use_playhead, bool use_markers, bo void Timeline::set_marker() { // determine if any clips are selected, and if so add markers to clips rather than the sequence - QVector clips_selected; + QVector clips_selected; bool clip_mode = false; for (int i=0;iclips.size();i++) { @@ -1452,26 +1452,26 @@ void Timeline::set_marker() { if (c != nullptr && is_clip_selected(c, true)) { - // only add markers if the playhead is inside the clip - if (sequence->playhead >= c->timeline_in - && sequence->playhead <= c->timeline_out) { - clips_selected.append(i); - } + // only add markers if the playhead is inside the clip + if (sequence->playhead >= c->timeline_in + && sequence->playhead <= c->timeline_out) { + clips_selected.append(i); + } - // we are definitely adding markers to clips though + // we are definitely adding markers to clips though clip_mode = true; } } - // if we've selected clips but none of the clips are within the playhead, - // nothing to do here - if (clip_mode && clips_selected.size() == 0) { - return; - } + // if we've selected clips but none of the clips are within the playhead, + // nothing to do here + if (clip_mode && clips_selected.size() == 0) { + return; + } - // pass off to internal set marker function - set_marker_internal(sequence, clips_selected); + // pass off to internal set marker function + set_marker_internal(sequence, clips_selected); } diff --git a/panels/viewer.cpp b/panels/viewer.cpp index fb85ef7de..bf87e208a 100644 --- a/panels/viewer.cpp +++ b/panels/viewer.cpp @@ -282,7 +282,7 @@ void Viewer::close_media() { void Viewer::go_to_in() { if (seq != nullptr) { - if (seq->using_workarea && seq->enable_workarea) { + if (seq->using_workarea) { seek(seq->workarea_in); } else { go_to_start(); @@ -300,7 +300,7 @@ void Viewer::next_frame() { void Viewer::go_to_out() { if (seq != nullptr) { - if (seq->using_workarea && seq->enable_workarea) { + if (seq->using_workarea) { seek(seq->workarea_out); } else { go_to_end(); @@ -363,7 +363,7 @@ void Viewer::play(bool in_to_out) { uncue_recording(); } - bool seek_to_in = (seq->using_workarea && config.loop); + bool seek_to_in = (seq->using_workarea && (config.loop || playing_in_to_out)); if (!is_recording_cued() && (playing_in_to_out || seq->playhead >= seq->getEndFrame() @@ -471,16 +471,16 @@ void Viewer::update_parents(bool reload_fx) { update_ui(reload_fx); } else { update_viewer(); - panel_timeline->repaint_timeline(); + panel_timeline->repaint_timeline(); } } int Viewer::get_playback_speed() { - return playback_speed; + return playback_speed; } void Viewer::set_marker() { - set_marker_internal(seq); + set_marker_internal(seq); } void Viewer::resizeEvent(QResizeEvent *) { @@ -518,13 +518,6 @@ void Viewer::clear_inout_point() { } } -void Viewer::toggle_enable_inout() { - if (seq != nullptr && seq->using_workarea) { - undo_stack.push(new SetBool(&seq->enable_workarea, !seq->enable_workarea)); - update_parents(); - } -} - void Viewer::set_in_point() { headers->set_in_point(seq->playhead); } @@ -580,13 +573,13 @@ void Viewer::set_playback_speed(int s) { } long Viewer::get_seq_in() { - return ((config.loop || playing_in_to_out) && seq->using_workarea && seq->enable_workarea) + return ((config.loop || playing_in_to_out) && seq->using_workarea) ? seq->workarea_in : 0; } long Viewer::get_seq_out() { - return ((config.loop || playing_in_to_out) && seq->using_workarea && seq->enable_workarea && previous_playhead < seq->workarea_out) + return ((config.loop || playing_in_to_out) && seq->using_workarea && previous_playhead < seq->workarea_out) ? seq->workarea_out : seq->getEndFrame(); } @@ -690,16 +683,16 @@ void Viewer::setup_ui() { void Viewer::set_media(Media* m) { main_sequence = false; - media = m; + media = m; - clean_created_seq(); + clean_created_seq(); if (media != nullptr) { switch (media->get_type()) { case MEDIA_TYPE_FOOTAGE: { Footage* footage = media->to_footage(); - marker_ref = &footage->markers; + marker_ref = &footage->markers; seq = new Sequence(); created_sequence = true; @@ -865,9 +858,9 @@ void Viewer::set_sequence(bool main, Sequence *s) { viewer_container->adjust(); - if (!created_sequence) { - marker_ref = &seq->markers; - } + if (!created_sequence) { + marker_ref = &seq->markers; + } } else { update_playhead_timecode(0); update_end_timecode(); diff --git a/panels/viewer.h b/panels/viewer.h index 97c65ed93..51d9396d6 100644 --- a/panels/viewer.h +++ b/panels/viewer.h @@ -42,7 +42,6 @@ public: void clear_in(); void clear_out(); void clear_inout_point(); - void toggle_enable_inout(); void set_in_point(); void set_out_point(); void set_zoom(bool in); @@ -73,12 +72,12 @@ public: ViewerWidget* viewer_widget; Media* media; - Sequence* seq; - QVector* marker_ref; + Sequence* seq; + QVector* marker_ref; - void set_marker(); + void set_marker(); - TimelineHeader* headers; + TimelineHeader* headers; void resizeEvent(QResizeEvent *event); diff --git a/project/sequence.cpp b/project/sequence.cpp index 6a2fe62cf..6ec6afcf4 100644 --- a/project/sequence.cpp +++ b/project/sequence.cpp @@ -10,7 +10,6 @@ Sequence::Sequence() : playhead(0), using_workarea(false), - enable_workarea(true), workarea_in(0), workarea_out(0), wrapper_sequence(false) @@ -26,7 +25,7 @@ Sequence::~Sequence() { Sequence* Sequence::copy() { Sequence* s = new Sequence(); - s->name = QCoreApplication::translate("Sequence", "%1 (copy)").arg(name); + s->name = QCoreApplication::translate("Sequence", "%1 (copy)").arg(name); s->width = width; s->height = height; s->frame_rate = frame_rate; diff --git a/project/sequence.h b/project/sequence.h index e3afc6d36..bf62edfd9 100644 --- a/project/sequence.h +++ b/project/sequence.h @@ -28,7 +28,6 @@ struct Sequence { long playhead; bool using_workarea; - bool enable_workarea; long workarea_in; long workarea_out; diff --git a/project/undo.cpp b/project/undo.cpp index 098f301f9..13c38460d 100644 --- a/project/undo.cpp +++ b/project/undo.cpp @@ -210,7 +210,6 @@ SetTimelineInOutCommand::SetTimelineInOutCommand(Sequence *s, bool enabled, long void SetTimelineInOutCommand::undo() { seq->using_workarea = old_enabled; - seq->enable_workarea = old_workarea_enabled; seq->workarea_in = old_in; seq->workarea_out = old_out; @@ -227,11 +226,9 @@ void SetTimelineInOutCommand::undo() { void SetTimelineInOutCommand::redo() { old_enabled = seq->using_workarea; - old_workarea_enabled = seq->enable_workarea; old_in = seq->workarea_in; old_out = seq->workarea_out; - if (!seq->using_workarea) seq->enable_workarea = true; seq->using_workarea = new_enabled; seq->workarea_in = new_in; seq->workarea_out = new_out; diff --git a/project/undo.h b/project/undo.h index 2d45c4746..98c78143a 100644 --- a/project/undo.h +++ b/project/undo.h @@ -174,8 +174,6 @@ public: private: Sequence* seq; - bool old_workarea_enabled; - bool old_enabled; long old_in; long old_out; diff --git a/ui/timelineheader.cpp b/ui/timelineheader.cpp index c6bdaa1fc..140872784 100644 --- a/ui/timelineheader.cpp +++ b/ui/timelineheader.cpp @@ -143,8 +143,8 @@ void TimelineHeader::mousePressEvent(QMouseEvent* event) { if (event->pos().y() > get_marker_offset() && (event->pos().x() < playhead_x-PLAYHEAD_SIZE || event->pos().x() > playhead_x+PLAYHEAD_SIZE)) { - for (int i=0;imarker_ref->size();i++) { - int marker_pos = getHeaderScreenPointFromFrame(viewer->marker_ref->at(i).frame); + for (int i=0;imarker_ref->size();i++) { + int marker_pos = getHeaderScreenPointFromFrame(viewer->marker_ref->at(i).frame); if (event->pos().x() > marker_pos - MARKER_SIZE && event->pos().x() < marker_pos + MARKER_SIZE) { bool found = false; for (int j=0;jmarker_ref->at(selected_markers.at(i)).frame; + selected_marker_original_times[i] = viewer->marker_ref->at(selected_markers.at(i)).frame; } drag_start = event->pos().x(); dragging_markers = true; @@ -225,7 +225,7 @@ void TimelineHeader::mouseMoveEvent(QMouseEvent* event) { // move markers for (int i=0;imarker_ref[0][selected_markers.at(i)].frame = selected_marker_original_times.at(i) + frame_movement; + viewer->marker_ref[0][selected_markers.at(i)].frame = selected_marker_original_times.at(i) + frame_movement; } update_parents(); @@ -264,7 +264,7 @@ void TimelineHeader::mouseReleaseEvent(QMouseEvent*) { bool moved = false; ComboAction* ca = new ComboAction(); for (int i=0;imarker_ref[0][selected_markers.at(i)]; + Marker* m = &viewer->marker_ref[0][selected_markers.at(i)]; if (selected_marker_original_times.at(i) != m->frame) { ca->append(new MoveMarkerAction(m, selected_marker_original_times.at(i), m->frame)); moved = true; @@ -305,7 +305,7 @@ double TimelineHeader::get_zoom() { void TimelineHeader::delete_markers() { if (selected_markers.size() > 0) { - DeleteMarkerAction* dma = new DeleteMarkerAction(viewer->marker_ref); + DeleteMarkerAction* dma = new DeleteMarkerAction(viewer->marker_ref); for (int i=0;imarkers.append(selected_markers.at(i)); } @@ -397,27 +397,27 @@ void TimelineHeader::paintEvent(QPaintEvent*) { if (viewer->seq->using_workarea) { in_x = getHeaderScreenPointFromFrame((resizing_workarea ? temp_workarea_in : viewer->seq->workarea_in)); int out_x = getHeaderScreenPointFromFrame((resizing_workarea ? temp_workarea_out : viewer->seq->workarea_out)); - p.fillRect(QRect(in_x, 0, out_x-in_x, height()), viewer->seq->enable_workarea ? QColor(0, 192, 255, 128) : QColor(255, 255, 255, 64)); + p.fillRect(QRect(in_x, 0, out_x-in_x, height()), QColor(0, 192, 255, 128)); p.setPen(Qt::white); p.drawLine(in_x, 0, in_x, height()); p.drawLine(out_x, 0, out_x, height()); } // draw markers - for (int i=0;imarker_ref->size();i++) { - const Marker& m = viewer->marker_ref->at(i); + for (int i=0;imarker_ref->size();i++) { + const Marker& m = viewer->marker_ref->at(i); int marker_x = getHeaderScreenPointFromFrame(m.frame); - bool selected = false; - for (int j=0;j