Olive
graphview.h
1 #ifndef GRAPHVIEW_H
2 #define GRAPHVIEW_H
3 
4 #include <QWidget>
5 #include <QVector>
6 
7 class EffectRow;
8 class EffectField;
9 
10 QColor get_curve_color(int index, int length);
11 
12 class GraphView : public QWidget {
13  Q_OBJECT
14 public:
15  GraphView(QWidget* parent = 0);
16 
17  void paintEvent(QPaintEvent *event);
18  void mousePressEvent(QMouseEvent *event);
19  void mouseMoveEvent(QMouseEvent *event);
20  void mouseReleaseEvent(QMouseEvent *event);
21  void wheelEvent(QWheelEvent *event);
22 
23  void set_row(EffectRow* r);
24 
25  void set_selected_keyframe_type(int type);
26  void set_field_visibility(int field, bool b);
27 
28  void delete_selected_keys();
29  void select_all();
30 signals:
31  void x_scroll_changed(int);
32  void y_scroll_changed(int);
33  void zoom_changed(double);
34  void selection_changed(bool, int);
35 private:
36  int x_scroll;
37  int y_scroll;
38  bool mousedown;
39  int start_x;
40  int start_y;
41  double zoom;
42 
43  void set_scroll_x(int s);
44  void set_scroll_y(int s);
45  void set_zoom(double z);
46 
47  int get_screen_x(double);
48  int get_screen_y(double);
49  long get_value_x(int);
50  double get_value_y(int);
51 
52  void selection_update();
53 
54  QVector<bool> field_visibility;
55 
56  QVector<int> selected_keys;
57  QVector<int> selected_keys_fields;
58  QVector<long> selected_keys_old_vals;
59  QVector<double> selected_keys_old_doubles;
60 
61  double old_pre_handle_x;
62  double old_pre_handle_y;
63  double old_post_handle_x;
64  double old_post_handle_y;
65 
66  int handle_field;
67  int handle_index;
68 
69  bool moved_keys;
70 
71  int current_handle;
72 
73  void draw_lines(QPainter &p, bool vert);
74  void draw_line_text(QPainter &p, bool vert, int line_no, int line_pos, int next_line_pos);
75 
76  EffectRow* row;
77 
78  bool rect_select;
79  int rect_select_x;
80  int rect_select_y;
81  int rect_select_w;
82  int rect_select_h;
83  int rect_select_offset;
84 
85  long visible_in;
86 
87  bool click_add;
88  bool click_add_proc;
89  EffectField* click_add_field;
90  int click_add_key;
91  int click_add_type;
92 private slots:
93  void show_context_menu(const QPoint& pos);
94  void reset_view();
95  void set_view_to_selection();
96  void set_view_to_all();
97  void set_view_to_rect(int x1, double y1, int x2, double y2);
98 };
99 
100 #endif // GRAPHVIEW_H
Definition: effectrow.h:17
Definition: graphview.h:12
Definition: effectfield.h:23