new/reworked audio plugins ported from hv72 compressor/multi/reverb, glyph workaround...
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / reverb / reverbwindow.h
index cc7eb265b4d2b8b756adbb9a0b0158db111852be..b4e3968a455abb940a18441ce15748c4575bd3f6 100644 (file)
@@ -1,7 +1,7 @@
 
 /*
  * CINELERRA
- * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * Copyright (C) 2008-2019 Adam Williams <broadcast at earthling dot net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 
 #ifndef REVERBWINDOW_H
 #define REVERBWINDOW_H
 
-#define TOTAL_LOADS 5
+#define TOTAL_PARAMS 9
 
-class ReverbThread;
 class ReverbWindow;
+class ReverbParam;
 
+#include "eqcanvas.inc"
 #include "guicast.h"
 #include "mutex.h"
 #include "pluginclient.h"
 #include "reverb.inc"
 
 
-
 class ReverbLevelInit;
 class ReverbDelayInit;
 class ReverbRefLevel1;
 class ReverbRefLevel2;
 class ReverbRefTotal;
 class ReverbRefLength;
-class ReverbLowPass1;
-class ReverbLowPass2;
-class ReverbMenu;
+class ReverbHigh;
+class ReverbLow;
+class ReverbQ;
+class ReverbSize;
 
 class ReverbWindow : public PluginClientWindow
 {
@@ -51,225 +51,183 @@ public:
        ~ReverbWindow();
 
        void create_objects();
+       void update();
+       void update_canvas();
 
        Reverb *reverb;
-       ReverbLevelInit *level_init;
-       ReverbDelayInit *delay_init;
-       ReverbRefLevel1 *ref_level1;
-       ReverbRefLevel2 *ref_level2;
-       ReverbRefTotal *ref_total;
-       ReverbRefLength *ref_length;
-       ReverbLowPass1 *lowpass1;
-       ReverbLowPass2 *lowpass2;
-       ReverbMenu *menu;
-};
 
-class ReverbLevelInit : public BC_FPot
-{
-public:
-       ReverbLevelInit(Reverb *reverb, int x, int y);
-       ~ReverbLevelInit();
-       int handle_event();
-       Reverb *reverb;
-};
+       ReverbParam *params[TOTAL_PARAMS];
 
-class ReverbDelayInit : public BC_IPot
-{
-public:
-       ReverbDelayInit(Reverb *reverb, int x, int y);
-       ~ReverbDelayInit();
-       int handle_event();
-       Reverb *reverb;
+       ReverbParam *level_init;
+       ReverbParam *delay_init;
+       ReverbParam *ref_level1;
+       ReverbParam *ref_level2;
+       ReverbParam *ref_total;
+       ReverbParam *ref_length;
+       ReverbParam *high;
+       ReverbParam *low;
+       ReverbParam *q;
+       EQCanvas *canvas;
+       ReverbSize *size;
 };
 
-class ReverbRefLevel1 : public BC_FPot
+class ReverbSize : public BC_PopupMenu
 {
 public:
-       ReverbRefLevel1(Reverb *reverb, int x, int y);
-       ~ReverbRefLevel1();
+       ReverbSize(ReverbWindow *window, Reverb *plugin, int x, int y);
+
        int handle_event();
-       Reverb *reverb;
+       void create_objects();           // add initial items
+       void update(int size);
+
+       ReverbWindow *window;
+       Reverb *plugin;
 };
 
-class ReverbRefLevel2 : public BC_FPot
+
+class ReverbFPot : public BC_FPot
 {
 public:
-       ReverbRefLevel2(Reverb *reverb, int x, int y);
-       ~ReverbRefLevel2();
+       ReverbFPot(ReverbParam *param, int x, int y);
        int handle_event();
-       Reverb *reverb;
+       ReverbParam *param;
 };
 
-class ReverbRefTotal : public BC_IPot
+class ReverbIPot : public BC_IPot
 {
 public:
-       ReverbRefTotal(Reverb *reverb, int x, int y);
-       ~ReverbRefTotal();
+       ReverbIPot(ReverbParam *param, int x, int y);
        int handle_event();
-       Reverb *reverb;
+       ReverbParam *param;
 };
 
-class ReverbRefLength : public BC_IPot
+class ReverbQPot : public BC_QPot
 {
 public:
-       ReverbRefLength(Reverb *reverb, int x, int y);
-       ~ReverbRefLength();
+       ReverbQPot(ReverbParam *param, int x, int y);
        int handle_event();
-       Reverb *reverb;
+       ReverbParam *param;
 };
 
-class ReverbLowPass1 : public BC_QPot
+class ReverbText : public BC_TextBox
 {
 public:
-       ReverbLowPass1(Reverb *reverb, int x, int y);
-       ~ReverbLowPass1();
+       ReverbText(ReverbParam *param, int x, int y, int w, int value);
+       ReverbText(ReverbParam *param, int x, int y, int w, float value);
        int handle_event();
-       Reverb *reverb;
+       ReverbParam *param;
 };
 
-class ReverbLowPass2 : public BC_QPot
+class ReverbParam
 {
 public:
-       ReverbLowPass2(Reverb *reverb, int x, int y);
-       ~ReverbLowPass2();
-       int handle_event();
-       Reverb *reverb;
-};
+       ReverbParam(Reverb *reverb, ReverbWindow *gui,
+               int x, int x2, int x3, int y, int text_w,
+               int *output_i,
+               float *output_f, // floating point output
+               int *output_q, // frequency output
+               const char *title, float min, float max);
+       ~ReverbParam();
 
+       void initialize();
+       void update(int skip_text, int skip_pot);
 
-class ReverbLoad;
-class ReverbSave;
-class ReverbSetDefault;
-class ReverbLoadPrev;
-class ReverbLoadPrevThread;
+       float *output_f;
+       ReverbFPot *fpot;
+       int *output_i;
+       ReverbIPot *ipot;
+       int *output_q;
+       ReverbQPot *qpot;
 
-class ReverbMenu : public BC_MenuBar
-{
-public:
-       ReverbMenu(Reverb *reverb, ReverbWindow *window);
-       ~ReverbMenu();
-
-       void create_objects(BC_Hash *defaults);
-       int load_defaults(BC_Hash *defaults);
-       int save_defaults(BC_Hash *defaults);
-// most recent loads
-       int add_load(char *path);
-       ReverbLoadPrevThread *prev_load_thread;
-
-       int total_loads;
-       BC_Menu *filemenu;
-       ReverbWindow *window;
+       char *title;
+       ReverbText *text;
+       ReverbWindow *gui;
        Reverb *reverb;
-       ReverbLoad *load;
-       ReverbSave *save;
-       ReverbSetDefault *set_default;
-       ReverbLoadPrev *prev_load[TOTAL_LOADS];
+       int x, y;
+       int x2, x3, text_w;
+       float min, max;
 };
 
-class ReverbSaveThread;
-class ReverbLoadThread;
 
-class ReverbLoad : public BC_MenuItem
+class ReverbLevelInit : public BC_FPot
 {
 public:
-       ReverbLoad(Reverb *reverb, ReverbMenu *menu);
-       ~ReverbLoad();
+       ReverbLevelInit(Reverb *reverb, int x, int y);
+       ~ReverbLevelInit();
        int handle_event();
        Reverb *reverb;
-       ReverbLoadThread *thread;
-       ReverbMenu *menu;
 };
 
-class ReverbSave : public BC_MenuItem
+class ReverbDelayInit : public BC_IPot
 {
 public:
-       ReverbSave(Reverb *reverb, ReverbMenu *menu);
-       ~ReverbSave();
+       ReverbDelayInit(Reverb *reverb, int x, int y);
+       ~ReverbDelayInit();
        int handle_event();
        Reverb *reverb;
-       ReverbSaveThread *thread;
-       ReverbMenu *menu;
 };
 
-class ReverbSetDefault : public BC_MenuItem
+class ReverbRefLevel1 : public BC_FPot
 {
 public:
-       ReverbSetDefault();
+       ReverbRefLevel1(Reverb *reverb, int x, int y);
+       ~ReverbRefLevel1();
        int handle_event();
+       Reverb *reverb;
 };
 
-class ReverbLoadPrev : public BC_MenuItem
+class ReverbRefLevel2 : public BC_FPot
 {
 public:
-       ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu, char *filename, char *path);
-       ReverbLoadPrev(Reverb *reverb, ReverbMenu *menu);
+       ReverbRefLevel2(Reverb *reverb, int x, int y);
+       ~ReverbRefLevel2();
        int handle_event();
-       int set_path(char *path);
-       char path[1024];
        Reverb *reverb;
-       ReverbMenu *menu;
 };
 
-
-class ReverbLoadPrevThread : public Thread
+class ReverbRefTotal : public BC_IPot
 {
 public:
-       ReverbLoadPrevThread(Reverb *reverb, ReverbMenu *menu);
-       ~ReverbLoadPrevThread();
-       void run();
-       int set_path(char *path);
-       char path[1024];
+       ReverbRefTotal(Reverb *reverb, int x, int y);
+       ~ReverbRefTotal();
+       int handle_event();
        Reverb *reverb;
-       ReverbMenu *menu;
 };
 
-
-
-class ReverbSaveThread : public Thread
+class ReverbRefLength : public BC_IPot
 {
 public:
-       ReverbSaveThread(Reverb *reverb, ReverbMenu *menu);
-       ~ReverbSaveThread();
-       void run();
+       ReverbRefLength(Reverb *reverb, int x, int y);
+       ~ReverbRefLength();
+       int handle_event();
        Reverb *reverb;
-       ReverbMenu *menu;
 };
 
-class ReverbSaveDialog : public BC_FileBox
+class ReverbHigh : public BC_QPot
 {
 public:
-       ReverbSaveDialog(Reverb *reverb);
-       ~ReverbSaveDialog();
-
-       int ok_event();
-       int cancel_event();
+       ReverbHigh(Reverb *reverb, int x, int y);
+       ~ReverbHigh();
+       int handle_event();
        Reverb *reverb;
 };
 
-
-class ReverbLoadThread : public Thread
+class ReverbLow : public BC_QPot
 {
 public:
-       ReverbLoadThread(Reverb *reverb, ReverbMenu *menu);
-       ~ReverbLoadThread();
-       void run();
+       ReverbLow(Reverb *reverb, int x, int y);
+       ~ReverbLow();
+       int handle_event();
        Reverb *reverb;
-       ReverbMenu *menu;
 };
 
-class ReverbLoadDialog : public BC_FileBox
+class ReverbQ: public BC_QPot
 {
 public:
-       ReverbLoadDialog(Reverb *reverb);
-       ~ReverbLoadDialog();
-
-       int ok_event();
-       int cancel_event();
+       ReverbQ(Reverb *reverb, int x, int y);
+       ~ReverbQ();
+       int handle_event();
        Reverb *reverb;
 };
 
-
-
-
-
 #endif