workarea in/out added #108

This commit is contained in:
itsmattkc
2018-07-22 19:57:03 +01:00
parent 6109ed9002
commit 1fded74767
18 changed files with 335 additions and 55 deletions
+5 -1
View File
@@ -5,7 +5,11 @@
#include <QDebug>
Sequence::Sequence() {}
Sequence::Sequence() :
using_workarea(false),
workarea_in(0),
workarea_out(0)
{}
Sequence::~Sequence() {
// dealloc all clips
+4
View File
@@ -23,6 +23,10 @@ public:
double frame_rate;
int audio_frequency;
int audio_layout;
bool using_workarea;
long workarea_in;
long workarea_out;
private:
QVector<Clip*> clips;
};
+40 -1
View File
@@ -24,7 +24,12 @@ QUndoStack undo_stack;
#define TA_ADD_CLIP_IN 7
#define TA_ADD_TRACK 8
TimelineAction::TimelineAction() : done(false), change_seq(false), ripple_enabled(false) {}
TimelineAction::TimelineAction() :
done(false),
change_seq(false),
ripple_enabled(false),
change_in_out(false)
{}
TimelineAction::~TimelineAction() {
for (int i=0;i<clips_to_add.size();i++) {
@@ -129,6 +134,25 @@ void TimelineAction::delete_media(QTreeWidgetItem* item) {
deleted_media.append(item);
}
void TimelineAction::ripple(Sequence* s, long point, long length) {
QVector<int> i;
ripple(s, point, length, i);
}
void TimelineAction::set_in_out(Sequence* s, bool enabled, long in, long out) {
change_in_out = true;
change_in_out_sequence = s;
old_in_out_enabled = s->using_workarea;
old_sequence_in = s->workarea_in;
old_sequence_out = s->workarea_out;
new_in_out_enabled = enabled;
new_sequence_in = in;
new_sequence_out = out;
}
void TimelineAction::ripple(Sequence* s, long point, long length, QVector<int>& ignore) {
ripple_enabled = true;
ripple_point = point;
@@ -220,6 +244,14 @@ void TimelineAction::undo() {
}
}
// un-change workarea
if (change_in_out) {
change_in_out_sequence->using_workarea = old_in_out_enabled;
change_in_out_sequence->workarea_in = old_sequence_in;
change_in_out_sequence->workarea_out = old_sequence_out;
}
// un-change current active sequence
if (change_seq) {
set_sequence(old_seq);
}
@@ -388,6 +420,13 @@ void TimelineAction::redo() {
}
}
// change sequence workarea
if (change_in_out) {
change_in_out_sequence->using_workarea = new_in_out_enabled;
change_in_out_sequence->workarea_in = new_sequence_in;
change_in_out_sequence->workarea_out = new_sequence_out;
}
// change current sequence
if (change_seq) {
old_seq = sequence;
+11
View File
@@ -30,7 +30,9 @@ public:
void delete_clip(Sequence* s, int clip);
void add_media(QTreeWidgetItem* item);
void delete_media(QTreeWidgetItem* item);
void ripple(Sequence* s, long point, long length);
void ripple(Sequence* s, long point, long length, QVector<int> &ignore);
void set_in_out(Sequence* s, bool enabled, long in, long out);
void undo();
void redo();
private:
@@ -73,6 +75,15 @@ private:
QVector<int> rippled_clips;
QVector<int> ripple_ignores;
bool change_in_out;
Sequence* change_in_out_sequence;
bool old_in_out_enabled;
bool new_in_out_enabled;
long old_sequence_in;
long new_sequence_in;
long old_sequence_out;
long new_sequence_out;
void new_action(Sequence* s, int action, int clip, long old_val, long new_val);
void offset_links(QVector<Clip*>& clips, int offset);
};