Olive
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
keyframeview.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 KEYFRAMEVIEW_H
22 #define KEYFRAMEVIEW_H
23 
24 #include <QWidget>
25 #include <QPainter>
26 
27 #include "ui/effectui.h"
28 
29 class Clip;
30 class Effect;
31 class EffectRow;
32 class EffectField;
33 class TimelineHeader;
34 
35 class KeyframeView : public QWidget {
36  Q_OBJECT
37 public:
38  KeyframeView(QWidget* parent = nullptr);
39 
40  void SetEffects(const QVector<EffectUI*>& open_effects);
41 
43 
45 
46  long visible_in;
48 signals:
49  void wheel_event_signal(QWheelEvent*);
50 public slots:
51  void set_x_scroll(int);
52  void set_y_scroll(int);
53  void resize_move(double d);
54 private:
55  QVector<EffectUI*> open_effects_;
56 
57  QVector<EffectField*> selected_fields;
58  QVector<int> selected_keyframes;
59  QVector<int> rowY;
60  QVector<EffectRow*> rows;
61  QVector<long> old_key_vals;
62  void mousePressEvent(QMouseEvent* event);
63  void mouseMoveEvent(QMouseEvent* event);
64  void mouseReleaseEvent(QMouseEvent *event);
65  void paintEvent(QPaintEvent *event);
66  void wheelEvent(QWheelEvent* e);
67  bool mousedown;
68  bool dragging;
72 
73  bool keyframeIsSelected(EffectField *field, int keyframe);
74 
82 
83  int x_scroll;
84  int y_scroll;
85 
86  void update_keys();
87 private slots:
88  void show_context_menu(const QPoint& pos);
89  void menu_set_key_type(QAction*);
90 };
91 
92 #endif // KEYFRAMEVIEW_H
void set_x_scroll(int)
Definition: keyframeview.cpp:215
QVector< EffectUI * > open_effects_
Definition: keyframeview.h:55
void menu_set_key_type(QAction *)
Definition: keyframeview.cpp:88
int x_scroll
Definition: keyframeview.h:83
bool scroll_drag
Definition: keyframeview.h:71
QVector< EffectField * > selected_fields
Definition: keyframeview.h:57
void set_y_scroll(int)
Definition: keyframeview.cpp:220
bool dragging
Definition: keyframeview.h:68
void show_context_menu(const QPoint &pos)
Definition: keyframeview.cpp:70
QVector< EffectRow * > rows
Definition: keyframeview.h:60
void mouseReleaseEvent(QMouseEvent *event)
Definition: keyframeview.cpp:425
void wheel_event_signal(QWheelEvent *)
void paintEvent(QPaintEvent *event)
Definition: keyframeview.cpp:103
int rect_select_offset
Definition: keyframeview.h:81
void mouseMoveEvent(QMouseEvent *event)
Definition: keyframeview.cpp:325
QVector< int > selected_keyframes
Definition: keyframeview.h:58
Definition: clip.h:56
int y_scroll
Definition: keyframeview.h:84
QVector< int > rowY
Definition: keyframeview.h:59
Definition: keyframeview.h:35
long drag_frame_start
Definition: keyframeview.h:75
void wheelEvent(QWheelEvent *e)
Definition: keyframeview.cpp:193
int rect_select_y
Definition: keyframeview.h:78
TimelineHeader * header
Definition: keyframeview.h:44
void delete_selected_keyframes()
Definition: keyframeview.cpp:211
void update_keys()
Definition: keyframeview.cpp:206
The EffectField class.
Definition: effectfield.h:56
int rect_select_h
Definition: keyframeview.h:80
bool keys_selected
Definition: keyframeview.h:69
long last_frame_diff
Definition: keyframeview.h:76
KeyframeView(QWidget *parent=nullptr)
Definition: keyframeview.cpp:46
QVector< long > old_key_vals
Definition: keyframeview.h:61
bool select_rect
Definition: keyframeview.h:70
int rect_select_w
Definition: keyframeview.h:79
void SetEffects(const QVector< EffectUI * > &open_effects)
Definition: keyframeview.cpp:65
bool mousedown
Definition: keyframeview.h:67
long visible_in
Definition: keyframeview.h:46
long visible_out
Definition: keyframeview.h:47
void mousePressEvent(QMouseEvent *event)
Definition: keyframeview.cpp:231
Definition: timelineheader.h:31
bool keyframeIsSelected(EffectField *field, int keyframe)
Definition: keyframeview.cpp:197
int rect_select_x
Definition: keyframeview.h:77
The EffectRow class.
Definition: effectrow.h:51
Definition: effect.h:136
void resize_move(double d)
Definition: keyframeview.cpp:225