Olive
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
timelinewidget.h
Go to the documentation of this file.
1 /***
2 
3  Olive - Non-Linear Video Editor
4  Copyright (C) 2019 Olive Team
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 
19 ***/
20 
21 #ifndef TIMELINEWIDGET_H
22 #define TIMELINEWIDGET_H
23 
24 #include <QTimer>
25 #include <QWidget>
26 #include <QScrollBar>
27 #include <QPainter>
28 #include <QApplication>
29 #include <QDesktopWidget>
30 
31 #include "timeline/sequence.h"
32 #include "timeline/clip.h"
33 #include "project/footage.h"
34 #include "project/media.h"
35 #include "undo/undo.h"
36 #include "timelinetools.h"
37 
38 class Timeline;
39 
41  int index;
42  int height;
43 };
44 
45 bool same_sign(int a, int b);
46 void draw_waveform(ClipPtr clip, const FootageStream *ms, long media_length, QPainter* p, const QRect& clip_rect, int waveform_start, int waveform_limit, double zoom);
47 
48 class TimelineWidget : public QWidget {
49  Q_OBJECT
50 public:
51  explicit TimelineWidget(QWidget *parent = 0);
52  QScrollBar* scrollBar;
54 
55 public slots:
56 
57 protected:
58  void paintEvent(QPaintEvent*);
59 
60  void resizeEvent(QResizeEvent *event);
61 
62  void mouseDoubleClickEvent(QMouseEvent *event);
63  void mousePressEvent(QMouseEvent *event);
64  void mouseReleaseEvent(QMouseEvent *event);
65  void mouseMoveEvent(QMouseEvent *event);
66  void leaveEvent(QEvent *event);
67 
68  void dragEnterEvent(QDragEnterEvent *event);
69  void dragLeaveEvent(QDragLeaveEvent *event);
70  void dropEvent(QDropEvent* event);
71  void dragMoveEvent(QDragMoveEvent *event);
72 
73  void wheelEvent(QWheelEvent *event);
74 private:
75  void init_ghosts();
76  void update_ghosts(const QPoint& mouse_pos, bool lock_frame);
77  bool is_track_visible(int track);
78  int getTrackFromScreenPoint(int y);
79  int getScreenPointFromTrack(int track);
80  int getClipIndexFromCoords(long frame, int track);
81 
83 
86 
87  QVector<ClipPtr> pre_clips;
88  QVector<ClipPtr> post_clips;
89 
91 
93 
94  QTimer tooltip_timer;
96 
97  int scroll;
98 
100 signals:
101 
102 public slots:
103  void setScroll(int);
104 
105 private slots:
106  void reveal_media();
107  void show_context_menu(const QPoint& pos);
108  void toggle_autoscale();
109  void tooltip_timer_timeout();
111  void show_clip_properties();
112 };
113 
114 #endif // TIMELINEWIDGET_H
void tooltip_timer_timeout()
Definition: timelinewidget.cpp:201
void dropEvent(QDropEvent *event)
Definition: timelinewidget.cpp:521
QVector< ClipPtr > post_clips
Definition: timelinewidget.h:88
int index
Definition: timelinewidget.h:41
Definition: timelinewidget.h:40
bool is_track_visible(int track)
Definition: timelinewidget.cpp:3401
void dragEnterEvent(QDragEnterEvent *event)
Definition: timelinewidget.cpp:252
void init_ghosts()
Definition: timelinewidget.cpp:1587
bool track_resizing
Definition: timelinewidget.h:84
Definition: undo.h:429
std::shared_ptr< Clip > ClipPtr
Definition: clip.h:52
QVector< ClipPtr > pre_clips
Definition: timelinewidget.h:87
bool bottom_align
Definition: timelinewidget.h:53
void draw_waveform(ClipPtr clip, const FootageStream *ms, long media_length, QPainter *p, const QRect &clip_rect, int waveform_start, int waveform_limit, double zoom)
Definition: timelinewidget.cpp:2848
void mouseDoubleClickEvent(QMouseEvent *event)
Definition: timelinewidget.cpp:584
void wheelEvent(QWheelEvent *event)
Definition: timelinewidget.cpp:348
Definition: timeline.h:105
int getScreenPointFromTrack(int track)
Definition: timelinewidget.cpp:3448
void dragMoveEvent(QDragMoveEvent *event)
Definition: timelinewidget.cpp:334
Definition: footage.h:49
void reveal_media()
Definition: timelinewidget.cpp:3483
int getTrackFromScreenPoint(int y)
Definition: timelinewidget.cpp:3409
Definition: media.h:45
void paintEvent(QPaintEvent *)
Definition: timelinewidget.cpp:2951
void update_ghosts(const QPoint &mouse_pos, bool lock_frame)
Definition: timelinewidget.cpp:1657
void open_sequence_properties()
Definition: timelinewidget.cpp:219
TimelineWidget(QWidget *parent=0)
Definition: timelinewidget.cpp:64
int getClipIndexFromCoords(long frame, int track)
Definition: timelinewidget.cpp:3468
void resizeEvent(QResizeEvent *event)
Definition: timelinewidget.cpp:3397
bool same_sign(int a, int b)
Definition: timelinewidget.cpp:248
int tooltip_clip
Definition: timelinewidget.h:95
Media * rc_reveal_media
Definition: timelinewidget.h:90
int scroll
Definition: timelinewidget.h:97
void toggle_autoscale()
Definition: timelinewidget.cpp:186
Definition: timelinewidget.h:48
int height
Definition: timelinewidget.h:42
void VerifyTransitionHelper()
QTimer tooltip_timer
Definition: timelinewidget.h:94
void show_context_menu(const QPoint &pos)
Definition: timelinewidget.cpp:82
SequencePtr self_created_sequence
Definition: timelinewidget.h:92
void dragLeaveEvent(QDragLeaveEvent *event)
Definition: timelinewidget.cpp:411
void mouseMoveEvent(QMouseEvent *event)
Definition: timelinewidget.cpp:2042
void mouseReleaseEvent(QMouseEvent *event)
Definition: timelinewidget.cpp:1024
QScrollBar * scrollBar
Definition: timelinewidget.h:52
int track_target
Definition: timelinewidget.h:85
SetSelectionsCommand * selection_command
Definition: timelinewidget.h:99
void setScroll(int)
Definition: timelinewidget.cpp:3478
void mousePressEvent(QMouseEvent *event)
Definition: timelinewidget.cpp:614
void show_clip_properties()
Definition: timelinewidget.cpp:236
void leaveEvent(QEvent *event)
Definition: timelinewidget.cpp:2844
std::shared_ptr< Sequence > SequencePtr
Definition: media.h:38