fix awdw solo vicon crash, fix nested clip for binfolders, open edit edl
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / scopewindow.h
index 74201e460f4520a88ee50be2c531c6c3550fe304..385ecaf239ce21a77827b112e7fa126079cbf95b 100644 (file)
 #define SCOPEWINDOW_H
 
 
+#include "boxblur.inc"
 #include "guicast.h"
 #include "loadbalance.h"
 #include "mwindow.h"
+#include "overlayframe.inc"
 #include "pluginclient.h"
 #include "recordmonitor.inc"
 #include "scopewindow.inc"
@@ -33,7 +35,8 @@
 enum {
        SCOPE_HISTOGRAM, SCOPE_HISTOGRAM_RGB,
        SCOPE_WAVEFORM, SCOPE_WAVEFORM_RGB, SCOPE_WAVEFORM_PLY,
-       SCOPE_VECTORSCOPE,
+       SCOPE_VECTORSCOPE, SCOPE_VECTORWHEEL,
+       SCOPE_SMOOTH, SCOPE_REFRESH, SCOPE_RELEASE,
 };
 
 // Number of divisions in histogram.
@@ -48,7 +51,7 @@ enum {
 #define HISTOGRAM_MAX 110
 #define FLOAT_MAX 1.1
 
-#define MIN_SCOPE_W xS(640)
+#define MIN_SCOPE_W xS(320)
 #define MIN_SCOPE_H yS(320)
 
 
@@ -118,6 +121,9 @@ public:
        virtual void update_point(int x, int y);
        virtual void draw_point();
        virtual void clear_point();
+       void draw_point(float th, float r, int color);
+       void draw_radient(float th, float r1, float r2, int color);
+
        int drag_radius;
        float drag_angle;
 };
@@ -159,30 +165,101 @@ public:
        ScopeScopesOn *wave_rgb_on;
        ScopeScopesOn *wave_ply_on;
        ScopeScopesOn *vect_on;
+       ScopeScopesOn *vect_wheel;
 };
 
-class ScopeWaveSlider : public BC_ISlider
+class ScopeSettingOn : public BC_MenuItem
 {
 public:
-       ScopeWaveSlider(ScopeGUI *gui, int x, int y, int w);
+       ScopeSettingOn(ScopeSettings *settings, const char *text, int id);
        int handle_event();
-       ScopeGUI *gui;
+
+       ScopeSettings *settings;
+       int id;
 };
 
-class ScopeVectSlider : public BC_ISlider
+class ScopeGratPaths : public ArrayList<const char *>
 {
 public:
-       ScopeVectSlider(ScopeGUI *gui, int x, int y, int w);
+       ScopeGratPaths() { set_array_delete(); }
+       ~ScopeGratPaths() { remove_all_objects(); }
+};
+
+class ScopeGratItem : public BC_MenuItem
+{
+public:
+       ScopeGratItem(ScopeSettings *settings, const char *text, int idx);
        int handle_event();
+
+       ScopeSettings *settings;
+       int idx;
+};
+
+class ScopeSettings : public BC_PopupMenu
+{
+public:
+       ScopeSettings(ScopeGUI *gui, int x, int y);
+       void create_objects();
+       void update_toggles();
+
        ScopeGUI *gui;
+       ScopeSettingOn *smooth_on;
+       ScopeSettingOn *refresh_on;
+       ScopeSettingOn *release_on;
 };
 
-class ScopeSmooth : public BC_CheckBox
+
+class ScopeGainReset : public BC_Button
 {
 public:
-       ScopeSmooth(ScopeGUI *gui, int x, int y);
+       ScopeGainReset(ScopeGain *gain, int x, int y);
+       static int calculate_w(BC_Theme *theme);
        int handle_event();
+
+       ScopeGain *gain;
+};
+
+class ScopeGainSlider : public BC_ISlider
+{
+public:
+       ScopeGainSlider(ScopeGain *gain, int x, int y, int w);
+
+       int handle_event();
+       ScopeGain *gain;
+};
+
+class ScopeGain
+{
+public:
+       ScopeGain(ScopeGUI *gui, int x, int y, int w, int *value);
+       ~ScopeGain();
+       static int calculate_h();
+       void create_objects();
+       void reposition_window(int x, int y);
+       int handle_event();
+
        ScopeGUI *gui;
+       int x, y, w, *value;
+       int reset_w;
+       ScopeGainReset *reset;
+       ScopeGainSlider *slider;
+
+       int get_x() { return x; }
+       int get_y() { return y; }
+       int get_w() { return w; }
+       int get_h() { return calculate_h(); }
+};
+
+class ScopeWaveSlider : public ScopeGain
+{
+public:
+       ScopeWaveSlider(ScopeGUI *gui, int x, int y, int w);
+};
+
+class ScopeVectSlider : public ScopeGain
+{
+public:
+       ScopeVectSlider(ScopeGUI *gui, int x, int y, int w);
 };
 
 
@@ -208,6 +285,9 @@ public:
        void calculate_sizes(int w, int h);
        void allocate_vframes();
        void draw_overlays(int overlays, int borders, int flush);
+       void update_graticule(int idx);
+       void draw_colorwheel(VFrame *dst, int bg_color);
+       void draw_scope();
        void process(VFrame *output_frame);
        void draw(int flash, int flush);
        void clear_points(int flash);
@@ -219,19 +299,26 @@ public:
        BoxBlur *box_blur;
        VFrame *waveform_vframe;
        VFrame *vector_vframe;
+       VFrame *wheel_vframe;
        ScopeHistogram *histogram;
        ScopeWaveform *waveform;
        ScopeVectorscope *vectorscope;
        ScopeMenu *scope_menu;
        ScopeWaveSlider *wave_slider;
        ScopeVectSlider *vect_slider;
-       ScopeSmooth *smooth;
-       BC_Title *value_text;
+       ScopeSettings *settings;
+       VFrame *grat_image;
+       OverlayFrame *overlay;
 
        int x, y, w, h;
        int vector_x, vector_y, vector_w, vector_h;
+       int vector_cx, vector_cy, radius;
        int wave_x, wave_y, wave_w, wave_h;
        int hist_x, hist_y, hist_w, hist_h;
+       int text_color, dark_color;
+
+       ScopeGratPaths grat_paths;
+       int grat_idx, use_graticule;
 
        int cpus;
        int use_hist, use_wave, use_vector;
@@ -239,48 +326,8 @@ public:
 
        int bins[HIST_SECTIONS][TOTAL_BINS];
        int frame_w, use_smooth;
+       int use_refresh, use_release;
        int use_wave_gain, use_vect_gain;
 };
 
-
-class BoxBlurPackage : public LoadPackage
-{
-public:
-       BoxBlurPackage();
-       int u1, u2;
-};
-
-class BoxBlurUnit : public LoadClient
-{
-public:
-       BoxBlurUnit(BoxBlur*server);
-       template<class dst_t, class src_t>
-               void blurt_package(LoadPackage *package);
-       void process_package(LoadPackage *package);
-};
-
-class BoxBlur : public LoadServer
-{
-public:
-       BoxBlur(int cpus);
-       virtual ~BoxBlur();
-       void init_packages();
-       LoadClient* new_client();
-       LoadPackage* new_package();
-       void process(VFrame *dst, VFrame *src, int uv,
-               int radius, int power, int comp);
-       void hblur(VFrame *dst, VFrame *src,
-               int radius, int power, int comp=-1);
-       void vblur(VFrame *dst, VFrame *src,
-               int radius, int power, int comp=-1);
-       void blur(VFrame *dst, VFrame *src,
-               int radius, int power, int comp=-1);
-       const uint8_t *src_data;
-       uint8_t *dst_data;
-       int src_ustep, dst_ustep;
-       int src_vstep, dst_vstep;
-       int radius, power;
-       int ulen, vlen, c0, c1;
-};
-
 #endif