improved plugins with added Tumbler box and visible values
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / wave / wave.h
index 99d11d34cff6218da2b0385b9d060bb39b4daa96..37a080b1aa84c2ce284d90aefd742ea8f65c1327 100644 (file)
@@ -32,6 +32,7 @@
 #include "language.h"
 #include "loadbalance.h"
 #include "pluginvclient.h"
+#include "theme.h"
 #include "vframe.h"
 
 #include <math.h>
 #define SMEAR 0
 #define BLACKEN 1
 
+#define RESET_DEFAULT_SETTINGS 10
+#define RESET_ALL        0
+#define RESET_AMPLITUDE         1
+#define RESET_PHASE      2
+#define RESET_WAVELENGTH 3
 
+#define AMPLITUDE_MIN    0.00
+#define AMPLITUDE_MAX  100.00
+#define PHASE_MIN        0.00
+#define PHASE_MAX      360.00
+#define WAVELENGTH_MIN   0.00
+#define WAVELENGTH_MAX  50.00
 
 class WaveEffect;
 class WaveWindow;
+class WaveFText;
+class WaveFSlider;
 class WaveReset;
+class WaveDefaultSettings;
+class WaveClr;
 
 class WaveConfig
 {
 public:
        WaveConfig();
 
-       void reset();
+       void reset(int clear);
        void copy_from(WaveConfig &src);
        int equivalent(WaveConfig &src);
        void interpolate(WaveConfig &prev,
@@ -97,41 +113,64 @@ public:
        WaveEffect *plugin;
 };
 
-class WaveAmplitude : public BC_FSlider
+
+class WaveFText : public BC_TumbleTextBox
 {
 public:
-       WaveAmplitude(WaveEffect *plugin, int x, int y);
+       WaveFText(WaveWindow *gui, WaveEffect *plugin,
+               WaveFSlider *slider, float *output, int x, int y, float min, float max);
+       ~WaveFText();
        int handle_event();
+       WaveWindow *gui;
        WaveEffect *plugin;
+       WaveFSlider *slider;
+       float *output;
+       float min, max;
 };
 
-class WavePhase : public BC_FSlider
+class WaveFSlider : public BC_FSlider
 {
 public:
-       WavePhase(WaveEffect *plugin, int x, int y);
+       WaveFSlider(WaveEffect *plugin,
+               WaveFText *text, float *output, int x, int y,
+               float min, float max);
+       ~WaveFSlider();
        int handle_event();
        WaveEffect *plugin;
+       WaveFText *text;
+       float *output;
 };
 
-class WaveLength : public BC_FSlider
+class WaveReset : public BC_GenericButton
 {
 public:
-       WaveLength(WaveEffect *plugin, int x, int y);
+       WaveReset(WaveEffect *plugin, WaveWindow *gui, int x, int y);
+       ~WaveReset();
        int handle_event();
        WaveEffect *plugin;
+       WaveWindow *gui;
 };
 
-class WaveReset : public BC_GenericButton
+class WaveDefaultSettings : public BC_GenericButton
 {
 public:
-       WaveReset(WaveEffect *plugin, WaveWindow *gui, int x, int y);
-       ~WaveReset();
+       WaveDefaultSettings(WaveEffect *plugin, WaveWindow *gui, int x, int y, int w);
+       ~WaveDefaultSettings();
        int handle_event();
        WaveEffect *plugin;
        WaveWindow *gui;
 };
 
-
+class WaveClr : public BC_Button
+{
+public:
+       WaveClr(WaveEffect *plugin, WaveWindow *gui, int x, int y, int clear);
+       ~WaveClr();
+       int handle_event();
+       WaveEffect *plugin;
+       WaveWindow *gui;
+       int clear;
+};
 
 
 
@@ -144,16 +183,27 @@ public:
        ~WaveWindow();
        void create_objects();
        void update_mode();
-       void update();
+       void update_gui(int clear);
 
        WaveEffect *plugin;
 //     WaveSmear *smear;
 //     WaveBlacken *blacken;
 //     WaveReflective *reflective;
-       WaveAmplitude *amplitude;
-       WavePhase *phase;
-       WaveLength *wavelength;
+
+       WaveFText *amplitude_text;
+       WaveFSlider *amplitude_slider;
+       WaveClr *amplitude_Clr;
+
+       WaveFText *phase_text;
+       WaveFSlider *phase_slider;
+       WaveClr *phase_Clr;
+
+       WaveFText *wavelength_text;
+       WaveFSlider *wavelength_slider;
+       WaveClr *wavelength_Clr;
+
        WaveReset *reset;
+       WaveDefaultSettings *default_settings;
 };