Fixed division by zero when using extend block.
[epichord.git] / src / eventedit.h
blob68241852f0a80dc342e9320a5302cb4863cf0123
1 /*
2 Epichord - a midi sequencer
3 Copyright (C) 2008 Evan Rinehart
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to
18 The Free Software Foundation, Inc.
19 51 Franklin Street, Fifth Floor
20 Boston, MA 02110-1301, USA
23 #ifndef eventedit_h
24 #define eventedit_h
26 #include <vector>
28 class EventEdit : public fltk::Widget {
30 int event_type;
31 int controller_type;
33 int tick2xpix(int tick);
35 const char* event_type_name();
36 void event_type_next();
37 void event_type_prev();
40 int q_tick;
42 int select_flag;
44 int line_flag;
45 int line_t1;
46 int line_M1;
47 int line_t2;
48 int line_M2;
49 int line_x1;
50 int line_x2;
51 int line_y1;
52 int line_y2;
54 int box_flag;
55 int box_x1;
56 int box_y1;
57 int box_x2;
58 int box_y2;
59 int box_t1;
60 int box_t2;
61 int box_m1;
62 int box_m2;
64 int insert_flag;
65 int insert_x;
66 int insert_y;
67 int insert_t;
68 int insert_M;
70 int paste_flag;
71 int paste_x;
72 int paste_t;
74 int delete_flag;
75 int delete_t1;
76 int delete_t2;
77 int delete_x1;
78 int delete_x2;
80 int xpix2tick(int xpix);
81 int ypix2mag(int ypix);
82 int mag2ypix(int mag);
83 int mag2val(int mag);
84 int val2mag(int val);
86 int quantize(int tick);
88 void apply_line();
89 void apply_box();
90 void apply_insert();
91 void apply_delete();
92 void apply_paste();
93 int match_event_type(mevent* e);
94 void get_event_color(mevent* e,fltk::Color*,fltk::Color*,fltk::Color*);
95 void get_event_value(int* v1, int* v2);
96 int get_event_mag(mevent* e);
98 void delete_events(int (EventEdit::*pred)(mevent* e));
100 int delete_type_in_range_pred(mevent* e);
101 int delete_type_all_pred(mevent* e);
102 int delete_all_non_note_pred(mevent* e);
103 int delete_all_pred(mevent* e);
107 public:
109 int label_flag;
111 seqpat* cur_seqpat;
112 track* cur_track;
114 int zoom;
116 int scroll;
118 EventEdit(int x, int y, int w, int h, const char* label);
119 int handle(int event);
120 void draw();
122 void load(seqpat* s);
123 void set_qtick(int q){q_tick=q;}
125 void clear_events();
126 void clear_non_note_events();
127 void clear_all_events();
129 void clear_selected_events();
130 void clear_selection();
131 void set_event_type(int type, int controller);
133 void recount_has();
134 int has[134];
138 #endif