00001 #ifndef REVERBWINDOW_H
00002 #define REVERBWINDOW_H
00003
00004 #define TOTAL_LOADS 5
00005
00006 class ReverbThread;
00007 class ReverbWindow;
00008
00009 #include "guicast.h"
00010 #include "mutex.h"
00011 #include "pluginclient.h"
00012 #include "reverb.inc"
00013
00014
00015
00016 PLUGIN_THREAD_HEADER(Reverb, ReverbThread, ReverbWindow)
00017
00018
00019 class ReverbLevelInit;
00020 class ReverbDelayInit;
00021 class ReverbRefLevel1;
00022 class ReverbRefLevel2;
00023 class ReverbRefTotal;
00024 class ReverbRefLength;
00025 class ReverbLowPass1;
00026 class ReverbLowPass2;
00027 class ReverbMenu;
00028
00029 class ReverbWindow : public BC_Window
00030 {
00031 public:
00032 ReverbWindow(Reverb *reverb, int x, int y);
00033 ~ReverbWindow();
00034
00035 int create_objects();
00036 int close_event();
00037
00038 Reverb *reverb;
00039 ReverbLevelInit *level_init;
00040 ReverbDelayInit *delay_init;
00041 ReverbRefLevel1 *ref_level1;
00042 ReverbRefLevel2 *ref_level2;
00043 ReverbRefTotal *ref_total;
00044 ReverbRefLength *ref_length;
00045 ReverbLowPass1 *lowpass1;
00046 ReverbLowPass2 *lowpass2;
00047 ReverbMenu *menu;
00048 };
00049
00050 class ReverbLevelInit : public BC_FPot
00051 {
00052 public:
00053 ReverbLevelInit(Reverb *reverb, int x, int y);
00054 ~ReverbLevelInit();
00055 int handle_event();
00056 Reverb *reverb;
00057 };
00058
00059 class ReverbDelayInit : public BC_IPot
00060 {
00061 public:
00062 ReverbDelayInit(Reverb *reverb, int x, int y);
00063 ~ReverbDelayInit();
00064 int handle_event();
00065 Reverb *reverb;
00066 };
00067
00068 class ReverbRefLevel1 : public BC_FPot
00069 {
00070 public:
00071 ReverbRefLevel1(Reverb *reverb, int x, int y);
00072 ~ReverbRefLevel1();
00073 int handle_event();
00074 Reverb *reverb;
00075 };
00076
00077 class ReverbRefLevel2 : public BC_FPot
00078 {
00079 public:
00080 ReverbRefLevel2(Reverb *reverb, int x, int y);
00081 ~ReverbRefLevel2();
00082 int handle_event();
00083 Reverb *reverb;
00084 };
00085
00086 class ReverbRefTotal : public BC_IPot
00087 {
00088 public:
00089 ReverbRefTotal(Reverb *reverb, int x, int y);
00090 ~ReverbRefTotal();
00091 int handle_event();
00092 Reverb *reverb;
00093 };
00094
00095 class ReverbRefLength : public BC_IPot
00096 {
00097 public:
00098 ReverbRefLength(Reverb *reverb, int x, int y);
00099 ~ReverbRefLength();
00100 int handle_event();
00101 Reverb *reverb;
00102 };
00103
00104 class ReverbLowPass1 : public BC_QPot
00105 {
00106 public:
00107 ReverbLowPass1(Reverb *reverb, int x, int y);
00108 ~ReverbLowPass1();
00109 int handle_event();
00110 Reverb *reverb;
00111 };
00112
00113 class ReverbLowPass2 : public BC_QPot
00114 {
00115 public:
00116 ReverbLowPass2(Reverb *reverb, int x, int y);
00117 ~ReverbLowPass2();
00118 int handle_event();
00119 Reverb *reverb;
00120 };
00121
00122
00123 class ReverbLoad;
00124 class ReverbSave;
00125 class ReverbSetDefault;
00126 class ReverbLoadPrev;
00127 class ReverbLoadPrevThread;
00128
00129 class ReverbMenu : public BC_MenuBar
00130 {
00131 public:
00132 ReverbMenu(Reverb *reverb, ReverbWindow *window);
00133 ~ReverbMenu();
00134
00135 int create_objects(BC_Hash *defaults);
00136 int load_defaults(BC_Hash *defaults);
00137 int save_defaults(BC_Hash *defaults);
00138
00139 int add_load(char *path);
00140 ReverbLoadPrevThread *prev_load_thread;
00141
00142 int total_loads;
00143 BC_Menu *filemenu;
00144 ReverbWindow *window;
00145 Reverb *reverb;
00146 ReverbLoad *load;
00147 ReverbSave *save;
00148 ReverbSetDefault *set_default;
00149 ReverbLoadPrev *prev_load[TOTAL_LOADS];
00150 };
00151
00152 class ReverbSaveThread;
00153 class ReverbLoadThread;
00154
00155 class ReverbLoad : public BC_MenuItem
00156 {
00157 public:
00158 ReverbLoad(Reverb *reverb, ReverbMenu *menu);
00159 ~ReverbLoad();
00160 int handle_event();
00161 Reverb *reverb;
00162 ReverbLoadThread *thread;
00163 ReverbMenu *menu;
00164 };
00165
00166 class ReverbSave : public BC_MenuItem
00167 {
00168 public:
00169 ReverbSave(Reverb *reverb, ReverbMenu *menu);
00170 ~ReverbSave();
00171 int handle_event();
00172 Reverb *reverb;
00173 ReverbSaveThread *thread;
00174 ReverbMenu *menu;
00175 };
00176
00177 class ReverbSetDefault : public BC_MenuItem
00178 {
00179 public:
00180 ReverbSetDefault();
00181 int handle_event();
00182 };
00183
00184 class ReverbLoadPrev : public BC_MenuItem
00185 {
00186 public:
00187 ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu, char *filename, char *path);
00188 ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu);
00189 int handle_event();
00190 int set_path(char *path);
00191 char path[1024];
00192 Reverb *reverb;
00193 ReverbMenu *menu;
00194 };
00195
00196
00197 class ReverbLoadPrevThread : public Thread
00198 {
00199 public:
00200 ReverbLoadPrevThread(Reverb *reverb, ReverbMenu *menu);
00201 ~ReverbLoadPrevThread();
00202 void run();
00203 int set_path(char *path);
00204 char path[1024];
00205 Reverb *reverb;
00206 ReverbMenu *menu;
00207 };
00208
00209
00210
00211 class ReverbSaveThread : public Thread
00212 {
00213 public:
00214 ReverbSaveThread(Reverb *reverb, ReverbMenu *menu);
00215 ~ReverbSaveThread();
00216 void run();
00217 Reverb *reverb;
00218 ReverbMenu *menu;
00219 };
00220
00221 class ReverbSaveDialog : public BC_FileBox
00222 {
00223 public:
00224 ReverbSaveDialog(Reverb *reverb);
00225 ~ReverbSaveDialog();
00226
00227 int ok_event();
00228 int cancel_event();
00229 Reverb *reverb;
00230 };
00231
00232
00233 class ReverbLoadThread : public Thread
00234 {
00235 public:
00236 ReverbLoadThread(Reverb *reverb, ReverbMenu *menu);
00237 ~ReverbLoadThread();
00238 void run();
00239 Reverb *reverb;
00240 ReverbMenu *menu;
00241 };
00242
00243 class ReverbLoadDialog : public BC_FileBox
00244 {
00245 public:
00246 ReverbLoadDialog(Reverb *reverb);
00247 ~ReverbLoadDialog();
00248
00249 int ok_event();
00250 int cancel_event();
00251 Reverb *reverb;
00252 };
00253
00254
00255
00256
00257
00258 #endif