Fixed stop-scroll functionality.
[epichord.git] / src / arranger.h
blob7fcd858e16455e41419abda82e76e8ea2643f102
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 maxt;
30 int scrollbuffer;
32 int insert_flag;
33 int insert_torig;
34 int insert_toffset;
35 int insert_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;
56 int move_offset;
58 int rresize_flag;
59 int rresize_torig;
60 int rresize_toffset;
62 int lresize_flag;
63 int lresize_torig;
64 int lresize_toffset;
66 int resize_arrow;
67 int resize_redraw;
68 int resize_x;
69 int resize_y;
70 fltk::Color resize_arrow_color;
71 seqpat* resize_s;
72 int resize_handle_width;
74 int paste_flag;
75 int paste_tcenter0;
76 int paste_kcenter0;
77 int paste_tcenter1;
78 int paste_kcenter1;
81 seqpat* main_sel;
82 seqpat* delete_sel;
83 int sel_timer;
85 seqpat* over_seqpat();
86 int over_rhandle(seqpat* s);
87 int over_lhandle(seqpat* s);
90 int delete_flag;
92 float color_h;
93 float color_v;
94 pattern* color_sel;
95 int color_orig_x;
96 int color_orig_y;
97 float color_orig_h;
98 float color_orig_v;
100 void get_outline_color(seqpat* s, fltk::Color* c1, fltk::Color* c2, fltk::Color* c3, fltk::Color* cx);
103 seqpat* split_s;
104 int split_t;
106 seqpat* join_s;
108 void unselect_all();
110 void apply_box();
111 void apply_delete();
112 void apply_move();
113 void apply_paste();
114 void apply_rresize();
115 void apply_lresize();
116 void apply_insert();
118 void apply_unclone();
119 void apply_split();
120 void apply_join();
122 int check_move_safety();
123 int check_insert_safety();
124 int check_resize_safety();
125 int check_paste_safety();
127 int check_join_safety();
129 void recalc_paste_center();
132 public:
134 int fakeh;
135 int scrollx;
136 int scrolly;
138 int zoom;
139 int zoom_n;
141 int color_flag;
142 int unclone_flag;
143 int join_flag;
144 int split_flag;
146 int q_tick;
148 Arranger(int x, int y, int w, int h, const char* label);
149 int handle(int event);
150 void draw();
152 void update(int pos);
154 void layout();
156 void scrollTo(int X, int Y);
159 int tick2xpix(int tick);
160 int xpix2tick(int xpix);
161 int quantize(int xpix);
165 #endif