X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fbluebanana%2Fbluebananawindow.C;h=10692ce465bccd1ce0a81611e1fea6a91490d458;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hp=8ef90b551b191d1b4b1c66baeda0255a71461510;hpb=b77dbd97d927405c86a2a8ca0dd927bca3c70175;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C b/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C index 8ef90b55..10692ce4 100644 --- a/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C +++ b/cinelerra-5.1/plugins/bluebanana/bluebananawindow.C @@ -29,6 +29,7 @@ #include "bluebananawindow.h" #include "keys.h" #include "language.h" +#include "plugin.h" #include "brender.h" #include "bluebananacolor.c" @@ -1350,10 +1351,9 @@ class BluebananaAAReadout : public BB_Tumble { class BluebananaAASlider : public BluebananaSliderSingle { public: - int hidden; BluebananaAASlider(BluebananaMain *plugin, BluebananaWindow *gui, int x, int y, int w, int h) - : BluebananaSliderSingle(plugin,gui,x,y,w,h,0,100) { hidden = 0; } + : BluebananaSliderSingle(plugin,gui,x,y,w,h,0,100) {} virtual int handle_event() { plugin->config.Aadj_val = val; return 1; @@ -1365,11 +1365,11 @@ public: void update(){ val = plugin->config.Aadj_val; if( BC_CModels::has_alpha(plugin->colormodel) ) { - if( hidden ) { show_window(); hidden = 0; } + if( is_hidden() ) show_window(); }else{ - if( !hidden ) { hide_window(); hidden = 1; } + if( !is_hidden() ) hide_window(); } - if( hidden ) return; + 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 ? @@ -1692,13 +1692,11 @@ public: class BluebananaAAActive : public BC_CheckBox { public: - int hidden; BluebananaAAActive(BluebananaMain *plugin, BluebananaWindow *gui) : BC_CheckBox(-1, -1, &plugin->config.Aadj_active, ""){ this->plugin = plugin; this->gui = gui; - hidden = 0; } virtual int handle_event(){ plugin->config.Aadj_active = @@ -1709,11 +1707,11 @@ public: void update(){ this->BC_CheckBox::update(plugin->config.Aadj_active,1); if( BC_CModels::has_alpha(plugin->colormodel) ) { - if( hidden ) { show_window(); hidden = 0; } + if( is_hidden() ) show_window(); }else{ - if( !hidden ) { hide_window(); hidden = 1; } + if( !is_hidden() ) hide_window(); } - if( hidden ) return; + if( is_hidden() ) return; gui->Aadj_slider->update(); } BluebananaMain *plugin; @@ -1765,6 +1763,31 @@ public: }; +// -------------------------------------------- Op -------------------------------------------- +class BluebananaOp : public BC_CheckBox { +public: + BluebananaOp(BluebananaMain *plugin, BluebananaWindow *gui) + : BC_CheckBox(-1, -1, &plugin->config.op, ""){ + this->plugin = plugin; + this->gui = gui; + } + virtual int handle_event() { + if(plugin->config.op != get_value()){ + plugin->config.op = get_value(); + gui->enter_config_change(); + gui->commit_config_change(); + } + return 1; + } + void update (){ + if(plugin->config.op != get_value()){ + this->BC_CheckBox::update(plugin->config.op,1); + } + }; + BluebananaMain *plugin; + BluebananaWindow *gui; +}; + // -------------------------------------------- Mark -------------------------------------------- class BluebananaMark : public BC_CheckBox { public: @@ -1816,8 +1839,11 @@ public: } void update(){ if(active != plugin->config.active){ - plugin->config.active = active; - this->BC_CheckBox::update(plugin->config.active,1); + if(active>=0) + plugin->config.active = active; + else + active = plugin->config.active; + this->BC_CheckBox::update(active,1); gui->enter_config_change(); gui->Hadj_slider->update(); gui->Sadj_slider->update(); @@ -1848,7 +1874,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(); @@ -1887,23 +1912,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; } @@ -1915,7 +1938,7 @@ public: BluebananaMain *plugin; BluebananaWindow *gui; BC_Title *label; - int x,y,padx,hidden; + int x,y,padx; }; // ------------------------------------------ Use mask ---------------------------------------- @@ -1931,7 +1954,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(); @@ -1969,14 +1991,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; @@ -1985,12 +2006,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; @@ -2009,7 +2029,7 @@ public: BluebananaMain *plugin; BluebananaWindow *gui; BC_Title *label; - int x,y,padx,hidden; + int x,y,padx; }; // --------------------------------------- Main GUI window -------------------------------------- @@ -2072,26 +2092,30 @@ void BluebananaWindow::create_objects() /* window headline */ { - BC_Title *l = new BC_Title(xmargin,y,_("Color Selection")); + BC_Title *l = new BC_Title(xmargin,y,_("Combine Selection")); BC_Title *l2 = new BC_Title(-1,-1,_(" Mark Selected Areas")); add_subwindow(mark = new BluebananaMark(plugin,this)); add_subwindow(l); add_subwindow(l2); padx = l->get_h()*column_padding; - label_x = xmargin + l->get_w(); - - int x0 = get_w()-xmargin-mark->get_w(); - mark->reposition_window(x0,y-(mark->get_h()-l->get_h())/2); - x0 -= padx+l2->get_w(); - l2->reposition_window(x0,y); - x0-=padx; + add_subwindow(op = new BluebananaOp(plugin,this)); + int x0 = xmargin + l->get_w() + padx; + op->reposition_window(x0,y-(op->get_h()-l->get_h())/2); + x0 += op->get_w() + padx; + int x1 = get_w()-xmargin-mark->get_w(); + mark->reposition_window(x1,y-(mark->get_h()-l->get_h())/2); + x1 -= padx+l2->get_w(); + l2->reposition_window(x1,y); + x1-=padx; set_color(get_resources()->default_text_color); - draw_line(label_x+padx, (int)(y+l->get_h()*.5), x0, (int)(y+l->get_h()*.5)); + int y0 = y+l->get_h()*.5; + draw_line(x0,y0, x1,y0); y += l->get_h()*(row_padding+1.); } + label_x = xmargin + 100 + padx; 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])); @@ -2451,10 +2475,11 @@ int BluebananaWindow::flush_config_change(){ int BluebananaWindow::repeat_event(int64_t d){ if(d==97){ - if(config_consume==config_produce) + if(config_consume!=config_produce) flush_config_change(); - config_consume=config_produce; } + if(!plugin->server->plugin) return 0; + if(!plugin->server->plugin->on) return 0; if(d==207){ /* if background render is active and we're showing the zebra, mark