improved plugins with added Tumbler box and visible values
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / rgbshift / rgbshift.h
index 2092dc028a18a6bc8caad4e591c7ca5d74c7c25d..75fc0d796128a11b00b95cb85d427cfcc38c714e 100644 (file)
 #include "language.h"
 #include "bccolors.h"
 #include "pluginvclient.h"
+#include "theme.h"
 #include "vframe.h"
 
 #include <stdint.h>
 #include <string.h>
 
+#define MAXVALUE 100
+
+#define RESET_ALL  0
+#define RESET_R_DX 1
+#define RESET_R_DY 2
+#define RESET_G_DX 3
+#define RESET_G_DY 4
+#define RESET_B_DX 5
+#define RESET_B_DY 6
 
 class RGBShiftEffect;
 class RGBShiftWindow;
+class RGBShiftIText;
+class RGBShiftISlider;
 class RGBShiftReset;
+class RGBShiftClr;
 
 
 class RGBShiftConfig
@@ -47,7 +60,7 @@ class RGBShiftConfig
 public:
        RGBShiftConfig();
 
-       void reset();
+       void reset(int clear);
        void copy_from(RGBShiftConfig &src);
        int equivalent(RGBShiftConfig &src);
        void interpolate(RGBShiftConfig &prev,
@@ -59,12 +72,27 @@ public:
        int r_dx, r_dy, g_dx, g_dy, b_dx, b_dy;
 };
 
-class RGBShiftLevel : public BC_ISlider
+class RGBShiftIText : public BC_TumbleTextBox
+{
+public:
+       RGBShiftIText(RGBShiftWindow *window, RGBShiftEffect *plugin,
+               RGBShiftISlider *slider, int *output, int x, int y, int min, int max);
+       ~RGBShiftIText();
+       int handle_event();
+       RGBShiftWindow *window;
+       RGBShiftEffect *plugin;
+       RGBShiftISlider *slider;
+       int *output;
+       int min, max;
+};
+
+class RGBShiftISlider : public BC_ISlider
 {
 public:
-       RGBShiftLevel(RGBShiftEffect *plugin, int *output, int x, int y);
+       RGBShiftISlider(RGBShiftEffect *plugin, RGBShiftIText *text, int *output, int x, int y);
        int handle_event();
        RGBShiftEffect *plugin;
+       RGBShiftIText *text;
        int *output;
 };
 
@@ -78,13 +106,45 @@ public:
        RGBShiftWindow *window;
 };
 
+class RGBShiftClr : public BC_Button
+{
+public:
+       RGBShiftClr(RGBShiftEffect *plugin, RGBShiftWindow *window, int x, int y, int clear);
+       ~RGBShiftClr();
+       int handle_event();
+       RGBShiftEffect *plugin;
+       RGBShiftWindow *window;
+       int clear;
+};
+
 class RGBShiftWindow : public PluginClientWindow
 {
 public:
        RGBShiftWindow(RGBShiftEffect *plugin);
        void create_objects();
-       void update();
-       RGBShiftLevel *r_dx, *r_dy, *g_dx, *g_dy, *b_dx, *b_dy;
+       void update_gui(int clear);
+
+       RGBShiftIText *r_dx_text;
+       RGBShiftISlider *r_dx_slider;
+       RGBShiftClr *r_dx_Clr;
+       RGBShiftIText *r_dy_text;
+       RGBShiftISlider *r_dy_slider;
+       RGBShiftClr *r_dy_Clr;
+
+       RGBShiftIText *g_dx_text;
+       RGBShiftISlider *g_dx_slider;
+       RGBShiftClr *g_dx_Clr;
+       RGBShiftIText *g_dy_text;
+       RGBShiftISlider *g_dy_slider;
+       RGBShiftClr *g_dy_Clr;
+
+       RGBShiftIText *b_dx_text;
+       RGBShiftISlider *b_dx_slider;
+       RGBShiftClr *b_dx_Clr;
+       RGBShiftIText *b_dy_text;
+       RGBShiftISlider *b_dy_slider;
+       RGBShiftClr *b_dy_Clr;
+
        RGBShiftEffect *plugin;
        RGBShiftReset *reset;
 };