Group move blocks. Fixed some bugs.
[epichord.git] / src / arranger.h
blobe7cb3e778daf68273c87dbc355bc565bb5fa2f67
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 arranger_h
24 #define arranger_h
26 class Arranger : public fltk::Widget {
28 int xp_last;
29 int yp_last;
31 int new_orig_t;
32 int new_left_t;
33 int new_right_t;
34 int insert_flag;
35 int new_track;
36 int new_default_w;
38 int box_flag;
39 int box_x1;
40 int box_y1;
41 int box_x2;
42 int box_y2;
43 int box_t1;
44 int box_t2;
45 int box_k1;
46 int box_k2;
48 int move_flag;
49 int move_korig;
50 int move_torig;
51 int move_koffset;
52 int move_toffset;
53 int move_x;
54 int move_y;
55 int move_w;
57 int paste_t;
58 int paste_track;
59 int paste_flag;
61 seqpat* main_sel;
62 seqpat* delete_sel;
63 int sel_timer;
65 seqpat* over_seqpat();
66 int over_handle(seqpat* s);
68 int tick2xpix(int tick);
69 int xpix2tick(int xpix);
70 int quantize(int xpix);
72 int delete_flag;
74 float color_h;
75 float color_v;
76 pattern* color_sel;
77 int color_orig_x;
78 int color_orig_y;
79 float color_orig_h;
80 float color_orig_v;
82 void get_outline_color(seqpat* s, fltk::Color* c1, fltk::Color* c2, fltk::Color* c3, fltk::Color* cx);
84 void unselect_all();
86 void apply_box();
87 void apply_delete();
88 int apply_move();
89 void apply_paste();
90 void apply_resize();
92 int check_move_safety();
93 int check_insert_safety();
94 int check_resize_safety();
95 int check_paste_safety();
97 public:
99 int zoom;
100 int zoom_n;
102 int color_flag;
104 int q_tick;
106 Arranger(int x, int y, int w, int h, const char* label);
107 int handle(int event);
108 void draw();
110 void update(int pos);
112 void layout();
116 #endif