3 * Copyright (C) 2008-2019 Adam Williams <broadcast at earthling dot net>
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (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 the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef COMPRMULTIGUI_H
24 #define COMPRMULTIGUI_H
27 #include "comprmulti.h"
28 #include "compressortools.h"
29 #include "eqcanvas.inc"
32 class ComprMultiWindow;
35 class ComprMultiCanvas : public CompressorCanvasBase
38 ComprMultiCanvas(ComprMultiEffect *plugin,
39 ComprMultiWindow *window, int x, int y, int w, int h);
43 class ComprMultiBand : public BC_Radial
46 ComprMultiBand(ComprMultiWindow *window,
47 ComprMultiEffect *plugin, int x, int y, int number, char *text);
50 ComprMultiWindow *window;
51 ComprMultiEffect *plugin;
52 // 0 - (TOTAL_BANDS-1)
57 class ComprMultiReaction : public BC_TumbleTextBox
60 ComprMultiReaction(ComprMultiEffect *plugin,
61 ComprMultiWindow *window, int x, int y);
63 ComprMultiEffect *plugin;
66 class ComprMultiX : public BC_TumbleTextBox
69 ComprMultiX(ComprMultiEffect *plugin, ComprMultiWindow *window, int x, int y);
71 ComprMultiEffect *plugin;
74 class ComprMultiY : public BC_TumbleTextBox
77 ComprMultiY(ComprMultiEffect *plugin, ComprMultiWindow *window, int x, int y);
79 ComprMultiEffect *plugin;
82 class ComprMultiTrigger : public BC_TumbleTextBox
85 ComprMultiTrigger(ComprMultiEffect *plugin, ComprMultiWindow *window, int x, int y);
87 ComprMultiEffect *plugin;
90 class ComprMultiDecay : public BC_TumbleTextBox
93 ComprMultiDecay(ComprMultiEffect *plugin, ComprMultiWindow *window, int x, int y);
95 ComprMultiEffect *plugin;
99 class ComprMultiClear : public BC_GenericButton
102 ComprMultiClear(ComprMultiEffect *plugin, int x, int y);
104 ComprMultiEffect *plugin;
107 class ComprMultiSmooth : public BC_CheckBox
110 ComprMultiSmooth(ComprMultiEffect *plugin, int x, int y);
112 ComprMultiEffect *plugin;
115 class ComprMultiSolo : public BC_CheckBox
118 ComprMultiSolo(ComprMultiEffect *plugin, int x, int y);
120 ComprMultiEffect *plugin;
123 class ComprMultiBypass : public BC_CheckBox
126 ComprMultiBypass(ComprMultiEffect *plugin, int x, int y);
128 ComprMultiEffect *plugin;
131 class ComprMultiInput : public BC_PopupMenu
134 ComprMultiInput(ComprMultiEffect *plugin, int x, int y);
135 void create_objects();
137 static const char* value_to_text(int value);
138 static int text_to_value(char *text);
139 ComprMultiEffect *plugin;
143 class ComprMultiFPot : public BC_FPot
146 ComprMultiFPot(ComprMultiWindow *gui, ComprMultiEffect *plugin,
147 int x, int y, double *output, double min, double max);
149 ComprMultiWindow *gui;
150 ComprMultiEffect *plugin;
154 class ComprMultiQPot : public BC_QPot
157 ComprMultiQPot(ComprMultiWindow *gui, ComprMultiEffect *plugin,
158 int x, int y, int *output);
160 ComprMultiWindow *gui;
161 ComprMultiEffect *plugin;
166 class ComprMultiSize : public BC_PopupMenu
169 ComprMultiSize(ComprMultiWindow *gui,
170 ComprMultiEffect *plugin, int x, int y);
172 void create_objects(); // add initial items
173 void update(int size);
174 ComprMultiWindow *gui;
175 ComprMultiEffect *plugin;
179 class ComprMultiWindow : public PluginClientWindow
182 ComprMultiWindow(ComprMultiEffect *plugin);
184 void create_objects();
186 // draw the dynamic range canvas
187 void update_canvas();
188 // draw the bandpass canvas
189 void update_eqcanvas();
190 int resize_event(int w, int h);
192 ComprMultiCanvas *canvas;
193 ComprMultiReaction *reaction;
194 ComprMultiClear *clear;
197 ComprMultiTrigger *trigger;
198 ComprMultiDecay *decay;
199 ComprMultiSmooth *smooth;
200 ComprMultiSolo *solo;
201 ComprMultiBypass *bypass;
202 ComprMultiInput *input;
204 BC_Meter *gain_change;
205 ComprMultiBand *band[TOTAL_BANDS];
206 CompressorGainFrame *gain_frame;
207 CompressorFreqFrame *freq_frame;
209 ComprMultiQPot *freq1;
210 ComprMultiQPot *freq2;
212 ComprMultiSize *size;
215 ComprMultiEffect *plugin;