X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=inline;f=cinelerra-5.1%2Fplugins%2Fbluebanana%2Fbluebananawindow.C;h=191b635c2a84bd8e99c97ad1fe6822a9f6612590;hb=f110e7626d433b4724befe0871a3a35f9f81f264;hp=fa6ac42d422f95870b3d673ddb9f3d0d3210b33a;hpb=30bdb85eb33a8ee7ba675038a86c6be59c43d7bd;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C b/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C index fa6ac42d..191b635c 100644 --- a/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C +++ b/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C @@ -1340,6 +1340,55 @@ int BluebananaOAReadout::value_event(){ return 1; } +// ---------------------------------- alpha slider --------------------------------- +class BluebananaAAReadout : public BB_Tumble { + public: + BluebananaAAReadout(BluebananaMain *plugin, BluebananaWindow *gui, int w) + : BB_Tumble(plugin,gui,0.,0,100., 0,1,w){} + int value_event(); +}; + +class BluebananaAASlider : public BluebananaSliderSingle { +public: + BluebananaAASlider(BluebananaMain *plugin, BluebananaWindow *gui, + int x, int y, int w, int h) + : BluebananaSliderSingle(plugin,gui,x,y,w,h,0,100) {} + virtual int handle_event() { + plugin->config.Aadj_val = val; + return 1; + } + void reset(){ + plugin->config.Aadj_val=100; + update(); + } + void update(){ + val = plugin->config.Aadj_val; + if( BC_CModels::has_alpha(plugin->colormodel) ) { + if( is_hidden() ) show_window(); + }else{ + if( !is_hidden() ) hide_window(); + } + if( is_hidden() ) return; + highlight = plugin->config.active && plugin->config.Aadj_active; + gui->Aadj_readout->update(plugin->config.Aadj_val); + gui->slider_labels[11]->set_color(highlight && plugin->config.Aadj_val != 100 ? + get_resources()->default_text_color : dimtextcolor); + gui->enter_config_change(); + gui->commit_config_change(); + } + void trough_color(float hdel, float vdel, float &r, float &g, float &b, float &a){ + r=g=b=.8; + a=1-cos(hdel*M_PI*.5); + } +}; + +int BluebananaAAReadout::value_event(){ + float val = get_value(); + plugin->config.Aadj_val = val; + gui->Aadj_slider->update(); + return 1; +} + // ------------------------------------- picker buttons ----------------------------------------- class BluebananaHPicker : public BC_GenericButton{ public: @@ -1424,6 +1473,14 @@ class BluebananaOAReset : public BC_GenericButton{ int handle_event() { gui->Oadj_slider->reset(); return 1;} BluebananaWindow *gui; }; +class BluebananaAAReset : public BC_GenericButton{ + public: + BluebananaAAReset(BluebananaWindow *gui, int w) : BC_GenericButton(-1, -1, w, _("Reset")){ + this->gui = gui; + } + int handle_event() { gui->Aadj_slider->reset(); return 1;} + BluebananaWindow *gui; +}; // ----------------------------------- slider active buttons ------------------------------------ @@ -1632,6 +1689,34 @@ public: BluebananaWindow *gui; }; +class BluebananaAAActive : public BC_CheckBox { +public: + + BluebananaAAActive(BluebananaMain *plugin, BluebananaWindow *gui) + : BC_CheckBox(-1, -1, &plugin->config.Aadj_active, ""){ + this->plugin = plugin; + this->gui = gui; + } + virtual int handle_event(){ + plugin->config.Aadj_active = + !BC_CModels::has_alpha(plugin->colormodel) ? 0 : get_value(); + update(); + return 1; + } + void update(){ + this->BC_CheckBox::update(plugin->config.Aadj_active,1); + if( BC_CModels::has_alpha(plugin->colormodel) ) { + if( is_hidden() ) show_window(); + }else{ + if( !is_hidden() ) hide_window(); + } + if( is_hidden() ) return; + gui->Aadj_slider->update(); + } + BluebananaMain *plugin; + BluebananaWindow *gui; +}; + // -------------------------------------------- Erode -------------------------------------------- class BluebananaErode : public BC_CheckBox { public: @@ -1738,6 +1823,7 @@ public: gui->Gadj_slider->update(); gui->Badj_slider->update(); gui->Oadj_slider->update(); + gui->Aadj_slider->update(); gui->commit_config_change(); } } @@ -1759,7 +1845,6 @@ public: this->y=-1; gui->add_subwindow(this->label); gui->add_subwindow(this); - hidden = -1; } virtual int handle_event(){ plugin->config.capture_mask=get_value(); @@ -1798,23 +1883,21 @@ public: break; } - if(hideme && hidden!=1){ + if(hideme && !is_hidden()){ hide_window(); label->hide_window(); gui->set_color(get_resources()->get_bg_color()); gui->draw_box(x,y,w,h); gui->set_color(get_resources()->default_text_color); gui->draw_line(x,y+h/2,x+w,y+h/2); - hidden=1; f=1; } - if(!hideme && hidden!=0){ + if(!hideme && is_hidden()){ gui->set_color(get_resources()->get_bg_color()); gui->draw_box(x,y,w,h); show_window(); label->show_window(); - hidden=0; f=1; } @@ -1826,7 +1909,7 @@ public: BluebananaMain *plugin; BluebananaWindow *gui; BC_Title *label; - int x,y,padx,hidden; + int x,y,padx; }; // ------------------------------------------ Use mask ---------------------------------------- @@ -1842,7 +1925,6 @@ public: this->y=-1; gui->add_subwindow(this->label); gui->add_subwindow(this); - hidden = -1; } virtual int handle_event(){ plugin->config.use_mask=get_value(); @@ -1880,14 +1962,13 @@ public: case BC_YUV888: case BC_RGB161616: case BC_YUV161616: - if(hidden!=1){ + if(!is_hidden()){ hide_window(); label->hide_window(); gui->set_color(get_resources()->get_bg_color()); gui->draw_box(x,y,w,h); gui->set_color(get_resources()->default_text_color); gui->draw_line(x,y+h/2,x+w,y+h/2); - hidden=1; f=1; } break; @@ -1896,12 +1977,11 @@ public: case BC_YUVA8888: case BC_RGBA16161616: case BC_YUVA16161616: - if(hidden!=0){ + if(is_hidden()){ gui->set_color(get_resources()->get_bg_color()); gui->draw_box(x,y,w,h); show_window(); label->show_window(); - hidden=0; f=1; } break; @@ -1920,7 +2000,7 @@ public: BluebananaMain *plugin; BluebananaWindow *gui; BC_Title *label; - int x,y,padx,hidden; + int x,y,padx; }; // --------------------------------------- Main GUI window -------------------------------------- @@ -1948,6 +2028,7 @@ BluebananaWindow::BluebananaWindow(BluebananaMain *plugin) Gadj_slider=NULL; Badj_slider=NULL; Oadj_slider=NULL; + Aadj_slider=NULL; use_mask=0; capture_mask=0; @@ -2002,8 +2083,8 @@ void BluebananaWindow::create_objects() y += l->get_h()*(row_padding+1.); } - const char *labels[11]={_("hue"),_("saturation"),_("value"),_("fill"),_("red"),_("green"),_("blue"),_("hue"),_("saturation"),_("value"),_("fade")}; - for(i=0;i<11;i++){ + const char *labels[12]={_("hue"),_("saturation"),_("value"),_("fill"),_("red"),_("green"),_("blue"),_("hue"),_("saturation"),_("value"),_("fade"),_("alpha")}; + for(i=0;i<12;i++){ add_subwindow(slider_labels[i] = new BC_Title(-1,-1,labels[i])); if(slider_labels[i]->get_w()>label_w)label_w=slider_labels[i]->get_w(); } @@ -2020,7 +2101,7 @@ void BluebananaWindow::create_objects() add_subwindow(erode_label); add_subwindow(erode); - for(i=0;i<11;i++){ + for(i=0;i<12;i++){ BC_GenericButton *p=NULL; BluebananaSlider *s=NULL; BB_Tumble *t0 = NULL, *t1=NULL, *t2=NULL; @@ -2223,6 +2304,14 @@ void BluebananaWindow::create_objects() s = Oadj_slider = new BluebananaOASlider(plugin,this,slider_x,y,slider_w,row_h); break; + case 11: + + add_subwindow(t0 = Aadj_readout = new BluebananaAAReadout(plugin,this,tumbler_text_ww)); + add_subwindow(a = Aadj_active = new BluebananaAAActive(plugin,this)); + add_subwindow(p = new BluebananaAAReset(this,tumbler_col2_w)); + s = Aadj_slider = new BluebananaAASlider(plugin,this,slider_x,y,slider_w,row_h); + break; + } add_subwindow(s); @@ -2388,6 +2477,7 @@ void BluebananaWindow::update(){ Gadj_slider->update(); Badj_slider->update(); Oadj_slider->update(); + Aadj_slider->update(); active->update(); mark->update(); @@ -2407,6 +2497,7 @@ void BluebananaWindow::update(){ Gadj_active->update(); Badj_active->update(); Oadj_active->update(); + Aadj_active->update(); // called to release configuration without pushing leave_config_change(); @@ -2425,6 +2516,7 @@ void BluebananaWindow::render(){ Gadj_slider->render(); Badj_slider->render(); Oadj_slider->render(); + Aadj_slider->render(); } }