Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.1 / plugins / bluebanana / bluebananawindow.h
diff --git a/cinelerra-5.1/plugins/bluebanana/bluebananawindow.h b/cinelerra-5.1/plugins/bluebanana/bluebananawindow.h
new file mode 100644 (file)
index 0000000..4b5f6e3
--- /dev/null
@@ -0,0 +1,250 @@
+/*
+ * Cinelerra :: Blue Banana - color modification plugin for Cinelerra-CV
+ * Copyright (C) 2012-2013 Monty <monty@xiph.org>
+ *
+ * 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
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * 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 BLUEBANANAWINDOW_H
+#define BLUEBANANAWINDOW_H
+
+#include "cicolors.h"
+#include "pluginvclient.h"
+#include "pluginserver.h"
+#include "mwindow.h"
+
+class BluebananaWindow;
+class BluebananaMain;
+class BluebananaThread;
+class BluebananaMark;
+class BluebananaActive;
+class BluebananaA2Sel;
+class BluebananaIS;
+class BluebananaUnmask;
+
+class BluebananaHActive;
+class BluebananaSActive;
+class BluebananaVActive;
+class BluebananaFActive;
+class BluebananaErode;
+class BluebananaHAActive;
+class BluebananaSAActive;
+class BluebananaVAActive;
+class BluebananaRAActive;
+class BluebananaGAActive;
+class BluebananaBAActive;
+class BluebananaOAActive;
+
+class BluebananaHSSlider;
+class BluebananaSSSlider;
+class BluebananaVSSlider;
+class BluebananaFSSlider;
+class BluebananaHASlider;
+class BluebananaSASlider;
+class BluebananaVASlider;
+class BluebananaRASlider;
+class BluebananaGASlider;
+class BluebananaBASlider;
+class BluebananaOASlider;
+
+class BluebananaHSReadout0;
+class BluebananaHSReadout1;
+class BluebananaHSReadout2;
+class BluebananaSSReadout0;
+class BluebananaSSReadout1;
+class BluebananaSSReadout2;
+class BluebananaVSReadout0;
+class BluebananaVSReadout1;
+class BluebananaVSReadout2;
+class BluebananaFSReadout0;
+class BluebananaFSReadout1;
+class BluebananaFSReadout2;
+class BluebananaFSReadout3;
+class BluebananaHAReadout;
+class BluebananaSAReadout0;
+class BluebananaSAReadout1;
+class BluebananaSAReadout2;
+class BluebananaVAReadout0;
+class BluebananaVAReadout1;
+class BluebananaVAReadout2;
+class BluebananaRAReadout0;
+class BluebananaRAReadout1;
+class BluebananaRAReadout2;
+class BluebananaGAReadout0;
+class BluebananaGAReadout1;
+class BluebananaGAReadout2;
+class BluebananaBAReadout0;
+class BluebananaBAReadout1;
+class BluebananaBAReadout2;
+class BluebananaOAReadout;
+
+class BluebananaPreserve;
+
+class BB_Tumble : public BC_TextBox {
+ public:
+  BB_Tumble(BluebananaMain *plugin,
+            BluebananaWindow *gui,
+            float min,
+            float mid,
+            float max,
+            int precision,
+            float inc,
+            int text_w);
+  virtual ~BB_Tumble() {}
+
+  int handle_event();
+  virtual int value_event() { return 1; }
+  int update(float value){ return BC_TextBox::update(value); }
+  float get_value();
+  void reposition_window(int x, int y){
+    this->x = x;
+    this->y = y;
+    BC_TextBox::reposition_window(x,y,text_w,1);
+  }
+
+ protected:
+  int x, y, text_w;
+  float min,mid,max;
+  int precision;
+  float increment;
+  BluebananaMain *plugin;
+  BluebananaWindow *gui;
+
+ private:
+  int activate();
+  int deactivate();
+  int button_press_event();
+  int keypress_event();
+  int active;
+  int suppress_events;
+  float prev;
+};
+
+class BluebananaWindow : public PluginClientWindow {
+public:
+       BluebananaWindow(BluebananaMain *plugin);
+       ~BluebananaWindow();
+
+        int windowx;
+        int windowy;
+        int slider_x;
+        int slider_w;
+        int slider_top_x_tumblers;
+        int slider_top_w_tumblers;
+        int slider_bottom_x_tumblers;
+        int slider_bottom_w_tumblers;
+
+       void create_objects();
+       int close_event();
+        void enter_config_change();
+        void commit_config_change();
+        void leave_config_change();
+        int flush_config_change();
+
+        int config_refcount;
+        int config_change;
+        int config_produce;
+        int config_consume;
+        int config_pending;
+
+       void update();
+       void render();
+        void update_histograms(BluebananaMain *plugin);
+        int repeat_event(int64_t duration);
+
+       BluebananaMain *plugin;
+
+        BluebananaMark *mark;
+        BluebananaActive *active;
+        BluebananaA2Sel *use_mask;
+        BluebananaUnmask *capture_mask;
+        BluebananaIS *invert_selection;
+
+        BluebananaHActive *Hsel_active;
+        BluebananaSActive *Ssel_active;
+        BluebananaVActive *Vsel_active;
+        BluebananaFActive *Fsel_active;
+        BluebananaErode *Fsel_erode;
+
+        BluebananaHAActive *Hadj_active;
+        BluebananaSAActive *Sadj_active;
+        BluebananaVAActive *Vadj_active;
+        BluebananaRAActive *Radj_active;
+        BluebananaGAActive *Gadj_active;
+        BluebananaBAActive *Badj_active;
+        BluebananaOAActive *Oadj_active;
+
+        BluebananaHSSlider *Hsel_slider;
+        BluebananaHSReadout0 *Hsel_readout0;
+        BluebananaHSReadout1 *Hsel_readout1;
+        BluebananaHSReadout2 *Hsel_readout2;
+
+        BluebananaSSSlider *Ssel_slider;
+        BluebananaSSReadout0 *Ssel_readout0;
+        BluebananaSSReadout1 *Ssel_readout1;
+        BluebananaSSReadout2 *Ssel_readout2;
+
+        BluebananaVSSlider *Vsel_slider;
+        BluebananaVSReadout0 *Vsel_readout0;
+        BluebananaVSReadout1 *Vsel_readout1;
+        BluebananaVSReadout2 *Vsel_readout2;
+
+        BluebananaFSSlider *Fsel_slider;
+        BluebananaFSReadout0 *Fsel_readout0;
+        BluebananaFSReadout1 *Fsel_readout1;
+        BluebananaFSReadout2 *Fsel_readout2;
+        BluebananaFSReadout3 *Fsel_readout3;
+
+        BluebananaHASlider *Hadj_slider;
+        BluebananaHAReadout *Hadj_readout;
+
+        BluebananaSASlider *Sadj_slider;
+        BluebananaSAReadout0 *Sadj_readout0;
+        BluebananaSAReadout1 *Sadj_readout1;
+        BluebananaSAReadout2 *Sadj_readout2;
+
+        BluebananaVASlider *Vadj_slider;
+        BluebananaVAReadout0 *Vadj_readout0;
+        BluebananaVAReadout1 *Vadj_readout1;
+        BluebananaVAReadout2 *Vadj_readout2;
+
+        BluebananaRASlider *Radj_slider;
+        BluebananaRAReadout0 *Radj_readout0;
+        BluebananaRAReadout1 *Radj_readout1;
+        BluebananaRAReadout2 *Radj_readout2;
+
+        BluebananaGASlider *Gadj_slider;
+        BluebananaGAReadout0 *Gadj_readout0;
+        BluebananaGAReadout1 *Gadj_readout1;
+        BluebananaGAReadout2 *Gadj_readout2;
+
+        BluebananaBASlider *Badj_slider;
+        BluebananaBAReadout0 *Badj_readout0;
+        BluebananaBAReadout1 *Badj_readout1;
+        BluebananaBAReadout2 *Badj_readout2;
+
+        BluebananaOASlider *Oadj_slider;
+        BluebananaOAReadout *Oadj_readout;
+
+        //BluebananaPreserve *preserve_luma;
+
+        BC_Title *slider_labels[11];
+        BC_Title *erode_label;
+        int do_render;
+};
+
+
+#endif