X-Git-Url: https://git.cinelerra-gg.org/git/?p=goodguy%2Fcinelerra.git;a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fscopewindow.h;h=385ecaf239ce21a77827b112e7fa126079cbf95b;hp=74201e460f4520a88ee50be2c531c6c3550fe304;hb=1529091cdf16df199a901aabe6e8fa1813a933af;hpb=2fba7eab40198b35d9edb20c16bcc1b8c262f7a2 diff --git a/cinelerra-5.1/cinelerra/scopewindow.h b/cinelerra-5.1/cinelerra/scopewindow.h index 74201e46..385ecaf2 100644 --- a/cinelerra-5.1/cinelerra/scopewindow.h +++ b/cinelerra-5.1/cinelerra/scopewindow.h @@ -22,9 +22,11 @@ #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 { 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 - 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