timeline minor refactor

This commit is contained in:
itsmattkc
2019-02-17 22:32:18 -08:00
parent 5cf5321c0f
commit a63b4fbe52
10 changed files with 944 additions and 779 deletions
-2
View File
@@ -38,8 +38,6 @@
#include "debug.h"
GraphEditor::GraphEditor(QWidget* parent) : Panel(parent), row(nullptr) {
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
resize(720, 480);
QWidget* main_widget = new QWidget(this);
-2
View File
@@ -72,8 +72,6 @@ QStringList recent_projects;
Project::Project(QWidget *parent) :
Panel(parent)
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
QWidget* dockWidgetContents = new QWidget(this);
QVBoxLayout* verticalLayout = new QVBoxLayout(dockWidgetContents);
+43 -72
View File
@@ -71,7 +71,7 @@ Timeline::Timeline(QWidget *parent) :
moving_proc(false),
move_insert(false),
trim_target(-1),
trim_in_point(false),
trim_type(TRIM_NONE),
splitting(false),
importing(false),
importing_files(false),
@@ -84,12 +84,8 @@ Timeline::Timeline(QWidget *parent) :
block_repaints(false),
scroll(0)
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setup_ui();
default_track_height = qRound((QGuiApplication::primaryScreen()->logicalDotsPerInch() / 96) * TRACK_DEFAULT_HEIGHT);
headers->viewer = panel_sequence_viewer;
video_area->bottom_align = true;
@@ -233,7 +229,7 @@ void Timeline::create_ghosts_from_media(SequencePtr seq, long entry_point, QVect
if (can_import) {
Ghost g;
g.clip = -1;
g.trimming = false;
g.trim_type = TRIM_NONE;
g.old_clip_in = g.clip_in = default_clip_in;
g.media = medium;
g.in = entry_point;
@@ -374,14 +370,6 @@ void Timeline::add_clips_from_ghosts(ComboAction* ca, SequencePtr s) {
snapped = false;
}
int Timeline::get_track_height_size(bool video) {
if (video) {
return video_track_heights.size();
} else {
return audio_track_heights.size();
}
}
void Timeline::add_transition() {
ComboAction* ca = new ComboAction();
bool adding = false;
@@ -472,18 +460,6 @@ void Timeline::nest() {
}
}
int Timeline::calculate_track_height(int track, int value) {
int index = (track < 0) ? qAbs(track + 1) : track;
QVector<int>& vector = (track < 0) ? video_track_heights : audio_track_heights;
while (vector.size() < index+1) {
vector.append(default_track_height);
}
if (value > -1) {
vector[index] = value;
}
return vector.at(index);
}
void Timeline::update_sequence() {
bool null_sequence = (olive::ActiveSequence == nullptr);
@@ -793,15 +769,6 @@ void Timeline::decheck_tool_buttons(QObject* sender) {
}
}
QVector<int> Timeline::get_tracks_of_linked_clips(int i) {
QVector<int> tracks;
ClipPtr clip = olive::ActiveSequence->clips.at(i);
for (int j=0;j<clip->linked.size();j++) {
tracks.append(olive::ActiveSequence->clips.at(clip->linked.at(j))->track);
}
return tracks;
}
void Timeline::zoom_in() {
multiply_zoom(2.0);
}
@@ -810,6 +777,45 @@ void Timeline::zoom_out() {
multiply_zoom(0.5);
}
int Timeline::GetTrackHeight(int track) {
for (int i=0;i<track_heights.size();i++) {
if (track_heights.at(i).index == track) {
return track_heights.at(i).height;
}
}
return olive::timeline::kTrackDefaultHeight;
}
void Timeline::SetTrackHeight(int track, int height) {
for (int i=0;i<track_heights.size();i++) {
if (track_heights.at(i).index == track) {
track_heights[i].height = height;
return;
}
}
// we don't have a track height, so set a new one
TimelineTrackHeight t;
t.index = track;
t.height = height;
track_heights.append(t);
}
void Timeline::IncreaseTrackHeight() {
for (int i=0;i<track_heights.size();i++) {
track_heights[i].height += olive::timeline::kTrackHeightIncrement;
}
repaint_timeline();
}
void Timeline::DecreaseTrackHeight() {
for (int i=0;i<track_heights.size();i++) {
track_heights[i].height = qMax(track_heights[i].height - olive::timeline::kTrackHeightIncrement,
olive::timeline::kTrackDefaultHeight);
}
repaint_timeline();
}
bool is_clip_selected(ClipPtr clip, bool containing) {
for (int i=0;i<clip->sequence->selections.size();i++) {
const Selection& s = clip->sequence->selections.at(i);
@@ -886,18 +892,9 @@ ClipPtr Timeline::split_clip(ComboAction* ca, bool transitions, int p, long fram
return nullptr;
}
bool Timeline::has_clip_been_split(int c) {
for (int i=0;i<split_cache.size();i++) {
if (split_cache.at(i) == c) {
return true;
}
}
return false;
}
bool Timeline::split_clip_and_relink(ComboAction *ca, int clip, long frame, bool relink) {
// see if we split this clip before
if (has_clip_been_split(clip)) {
if (split_cache.contains(clip)) {
return false;
}
@@ -923,7 +920,7 @@ bool Timeline::split_clip_and_relink(ComboAction *ca, int clip, long frame, bool
// find linked clips of old clip
for (int i=0;i<c->linked.size();i++) {
int l = c->linked.at(i);
if (!has_clip_been_split(l)) {
if (!split_cache.contains(l)) {
ClipPtr link = olive::ActiveSequence->clips.at(l);
if ((original_clip_is_selected && is_clip_selected(link, true)) || !original_clip_is_selected) {
split_cache.append(l);
@@ -1675,32 +1672,6 @@ void Timeline::toggle_links() {
}
}
void Timeline::increase_track_height() {
for (int i=0;i<video_track_heights.size();i++) {
video_track_heights[i] += olive::timeline::kTrackHeightIncrement;
}
for (int i=0;i<audio_track_heights.size();i++) {
audio_track_heights[i] += olive::timeline::kTrackHeightIncrement;
}
repaint_timeline();
}
void Timeline::decrease_track_height() {
for (int i=0;i<video_track_heights.size();i++) {
video_track_heights[i] = qMax(
video_track_heights[i] - olive::timeline::kTrackHeightIncrement,
olive::timeline::kTrackMinHeight
);
}
for (int i=0;i<audio_track_heights.size();i++) {
audio_track_heights[i] = qMax(
audio_track_heights[i] - olive::timeline::kTrackHeightIncrement,
olive::timeline::kTrackMinHeight
);
}
repaint_timeline();
}
void Timeline::deselect() {
olive::ActiveSequence->selections.clear();
repaint_timeline();
+24 -26
View File
@@ -35,14 +35,20 @@
#include "ui/audiomonitor.h"
#include "ui/panel.h"
#define TRACK_DEFAULT_HEIGHT 40
enum CreateObjects {
ADD_OBJ_TITLE,
ADD_OBJ_SOLID,
ADD_OBJ_BARS,
ADD_OBJ_TONE,
ADD_OBJ_NOISE,
ADD_OBJ_AUDIO
};
#define ADD_OBJ_TITLE 0
#define ADD_OBJ_SOLID 1
#define ADD_OBJ_BARS 2
#define ADD_OBJ_TONE 3
#define ADD_OBJ_NOISE 4
#define ADD_OBJ_AUDIO 5
enum TrimType {
TRIM_NONE,
TRIM_IN,
TRIM_OUT
};
bool is_clip_selected(ClipPtr clip, bool containing);
int getScreenPointFromFrame(double zoom, long frame);
@@ -70,8 +76,7 @@ struct Ghost {
// other variables
long ghost_length;
long media_length;
bool trim_in;
bool trimming;
TrimType trim_type;
// transition trimming
TransitionPtr transition;
@@ -82,7 +87,7 @@ class Timeline : public Panel
Q_OBJECT
public:
explicit Timeline(QWidget *parent = nullptr);
~Timeline();
virtual ~Timeline() override;
bool focused();
void multiply_zoom(double m);
@@ -98,8 +103,6 @@ public:
void relink_clips_using_ids(QVector<int>& old_clips, QVector<ClipPtr>& new_clips);
void update_sequence();
QVector<int> get_tracks_of_linked_clips(int i);
bool has_clip_been_split(int c);
void edit_to_point_internal(bool in, bool ripple);
void delete_in_out_internal(bool ripple);
@@ -128,10 +131,8 @@ public:
bool showing_all;
double old_zoom;
QVector<int> video_track_heights;
QVector<int> audio_track_heights;
int get_track_height_size(bool video);
int calculate_track_height(int track, int height);
int GetTrackHeight(int track);
void SetTrackHeight(int track, int height);
// snapping
bool snapping;
@@ -145,10 +146,7 @@ public:
void select_all();
bool rect_select_init;
bool rect_select_proc;
int rect_select_x;
int rect_select_y;
int rect_select_w;
int rect_select_h;
QRect rect_select_rect;
// moving
bool moving_init;
@@ -160,7 +158,7 @@ public:
// trimming
int trim_target;
bool trim_in_point;
TrimType trim_type;
int transition_select;
// splitting
@@ -211,8 +209,8 @@ public:
bool can_ripple_empty_space(long frame, int track);
void resizeEvent(QResizeEvent *event);
protected:
virtual void resizeEvent(QResizeEvent *event) override;
virtual void Retranslate() override;
public slots:
void paste(bool insert = false);
@@ -233,8 +231,8 @@ public slots:
void edit_to_in_point();
void edit_to_out_point();
void increase_track_height();
void decrease_track_height();
void IncreaseTrackHeight();
void DecreaseTrackHeight();
void previous_cut();
void next_cut();
@@ -268,12 +266,12 @@ private:
void setup_ui();
int default_track_height;
// ripple delete empty space variables
long rc_ripple_min;
long rc_ripple_max;
QVector<TimelineTrackHeight> track_heights;
QWidget* timeline_area;
TimelineWidget* video_area;
TimelineWidget* audio_area;
-2
View File
@@ -66,8 +66,6 @@ Viewer::Viewer(QWidget *parent) :
cue_recording_internal(false),
playback_speed(0)
{
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
setup_ui();
headers->viewer = this;