return result;
}
-#define COLOR_W 100
-#define COLOR_H 30
+#define COLOR_W xS(100)
+#define COLOR_H yS(30)
GradientWindow::GradientWindow(GradientMain *plugin)
- : PluginClientWindow(plugin, 350, 290, 350, 290, 0)
+ : PluginClientWindow(plugin, xS(350), yS(290), xS(350), yS(290), 0)
{
this->plugin = plugin;
angle = 0;
center_y = 0;
center_x_title = 0;
center_y_title = 0;
- in_color_thread = 0;
- out_color_thread = 0;
}
GradientWindow::~GradientWindow()
{
- delete in_color_thread;
- delete out_color_thread;
}
void GradientWindow::create_objects()
{
+ int xs10 = xS(10);
+ int ys10 = yS(10);
int margin = plugin->get_theme()->widget_border;
- int x = 10, y = 10;
+ int x = xs10, y = ys10;
BC_Title *title;
add_subwindow(title = new BC_Title(x, y, _("Shape:")));
add_subwindow(rate = new GradientRate(plugin,
x + title->get_w() + margin, y));
rate->create_objects();
- y += rate->get_h() + margin;
+ y += rate->get_h() + 3*margin;
int x1 = x, y1 = y;
BC_Title *title1;
BC_Title *title2;
add_subwindow(title2 = new BC_Title(x, y, _("Outer radius:")));
- add_subwindow(reset = new GradientReset(plugin, this, x, y+100));
-
y = y1;
x += MAX(title1->get_w(), title2->get_w()) + margin;
add_subwindow(in_radius = new GradientInRadius(plugin, x, y));
y += in_radius->get_h() + margin;
add_subwindow(out_radius = new GradientOutRadius(plugin, x, y));
- y += out_radius->get_h() + margin;
+ y += out_radius->get_h() + 3*margin;
x = x1;
- y1 = y;
- add_subwindow(in_color = new GradientInColorButton(plugin, this, x, y));
- y += COLOR_H + margin;
-
- add_subwindow(out_color = new GradientOutColorButton(plugin, this, x, y));
- x += MAX(in_color->get_w(), out_color->get_w()) + margin;
- y = y1;
-
- in_color_x = x;
- in_color_y = y;
- y += COLOR_H + margin;
- out_color_x = x;
- out_color_y = y;
- in_color_thread = new GradientInColorThread(plugin, this);
- out_color_thread = new GradientOutColorThread(plugin, this);
- update_in_color();
- update_out_color();
+ add_subwindow(title1 = new BC_Title(x, y, _("Inner Color:")));
+ y1 = y + COLOR_H+4 + 2*margin;
+ add_subwindow(title2 = new BC_Title(x, y1, _("Outer Color:")));
+ int x2 = x + MAX(title1->get_w(), title2->get_w()) + margin;
+ int in_rgb = plugin->config.get_in_color();
+ int in_a = plugin->config.in_a;
+ add_subwindow(in_color = new GradientInColorButton(plugin, this, x2+2, y+2, in_rgb, in_a));
+ draw_3d_border(x2,y, COLOR_W+4,COLOR_H+4, 1);
+ in_color->create_objects();
+
+ int out_rgb = plugin->config.get_out_color();
+ int out_a = plugin->config.out_a;
+ add_subwindow(out_color = new GradientOutColorButton(plugin, this, x2+2, y1+2, out_rgb, out_a));
+ draw_3d_border(x2,y1, COLOR_W+4,COLOR_H+4, 1);
+ out_color->create_objects();
+ y = y1 + COLOR_H+4 + 3*margin;
+
+ add_subwindow(reset = new GradientReset(plugin, this, x, y));
update_shape();
-
- draw_3d_border(in_color_x - 2, in_color_y - 2,
- COLOR_W + 4, COLOR_H + 4, 1);
-
- draw_3d_border(out_color_x - 2, out_color_y - 2,
- COLOR_W + 4, COLOR_H + 4, 1);
show_window();
}
delete center_y; center_y = 0;
if( !angle ) {
add_subwindow(angle_title = new BC_Title(x, y, _("Angle:")));
- add_subwindow(angle = new GradientAngle(plugin, x + angle_title->get_w() + 10, y));
+ add_subwindow(angle = new GradientAngle(plugin, x + angle_title->get_w() + xS(10), y));
}
}
else {
if( !center_x ) {
add_subwindow(center_x_title = new BC_Title(x, y, _("Center X:")));
add_subwindow(center_x = new GradientCenterX(plugin,
- x + center_x_title->get_w() + 10, y));
- x += center_x_title->get_w() + 10 + center_x->get_w() + 10;
+ x + center_x_title->get_w() + xS(10), y));
+ x += center_x_title->get_w() + xS(10) + center_x->get_w() + xS(10);
add_subwindow(center_y_title = new BC_Title(x, y, _("Center Y:")));
add_subwindow(center_y = new GradientCenterY(plugin,
- x + center_y_title->get_w() + 10, y));
+ x + center_y_title->get_w() + xS(10), y));
}
}
show_window();
}
-void GradientWindow::update_in_color()
-{
-//printf("GradientWindow::update_in_color 1 %08x\n", plugin->config.get_in_color());
- set_color(plugin->config.get_in_color());
- draw_box(in_color_x, in_color_y, COLOR_W, COLOR_H);
- flash(in_color_x, in_color_y, COLOR_W, COLOR_H);
-}
-
-void GradientWindow::update_out_color()
-{
-//printf("GradientWindow::update_out_color 1 %08x\n", plugin->config.get_in_color());
- set_color(plugin->config.get_out_color());
- draw_box(out_color_x, out_color_y, COLOR_W, COLOR_H);
- flash(out_color_x, out_color_y, COLOR_W, COLOR_H);
-}
-
void GradientWindow::done_event(int result)
{
- in_color_thread->close_window();
- out_color_thread->close_window();
+ in_color->close_picker();
+ out_color->close_picker();
}
GradientShape::GradientShape(GradientMain *plugin, GradientWindow *gui, int x, int y)
- : BC_PopupMenu(x, y, 100, to_text(plugin->config.shape), 1)
+ : BC_PopupMenu(x, y, xS(100), to_text(plugin->config.shape), 1)
{
this->plugin = plugin;
this->gui = gui;
GradientCenterX::GradientCenterX(GradientMain *plugin, int x, int y)
- : BC_FPot(x, y, plugin->config.center_x, 0, 100)
+ : BC_FPot(x, y, plugin->config.center_x, 0, xS(100))
{
this->plugin = plugin;
}
GradientCenterY::GradientCenterY(GradientMain *plugin, int x, int y)
- : BC_FPot(x, y, plugin->config.center_y, 0, 100)
+ : BC_FPot(x, y, plugin->config.center_y, 0, xS(100))
{
this->plugin = plugin;
}
GradientRate::GradientRate(GradientMain *plugin, int x, int y)
- : BC_PopupMenu(x, y, 100, to_text(plugin->config.rate), 1)
+ : BC_PopupMenu(x, y, xS(100), to_text(plugin->config.rate), 1)
{
this->plugin = plugin;
}
GradientInRadius::GradientInRadius(GradientMain *plugin, int x, int y)
- : BC_FSlider(x, y, 0, 200, 200,
+ : BC_FSlider(x, y, 0, xS(200), yS(200),
0.f, 100.f, (float)plugin->config.in_radius)
{
this->plugin = plugin;
GradientOutRadius::GradientOutRadius(GradientMain *plugin, int x, int y)
- : BC_FSlider(x, y, 0, 200, 200,
+ : BC_FSlider(x, y, 0, xS(200), yS(200),
0.f, 100.f, (float)plugin->config.out_radius)
{
this->plugin = plugin;
return 1;
}
-GradientInColorButton::GradientInColorButton(GradientMain *plugin, GradientWindow *window, int x, int y)
- : BC_GenericButton(x, y, _("Inner color:"))
+
+GradientInColorButton::GradientInColorButton(GradientMain *plugin, GradientWindow *gui,
+ int x, int y, int color, int alpha)
+ : ColorBoxButton(_("Inner color:"), x, y, COLOR_W, COLOR_H, color, alpha, 1)
{
this->plugin = plugin;
- this->window = window;
+ this->gui = gui;
}
-int GradientInColorButton::handle_event()
+GradientInColorButton::~GradientInColorButton()
{
- window->in_color_thread->start_window(
- plugin->config.get_in_color(),
- plugin->config.in_a);
- return 1;
}
-
-GradientOutColorButton::GradientOutColorButton(GradientMain *plugin, GradientWindow *window, int x, int y)
- : BC_GenericButton(x, y, _("Outer color:"))
+void GradientInColorButton::handle_done_event(int result)
{
- this->plugin = plugin;
- this->window = window;
+ if( result ) {
+ gui->lock_window("GradientInColorButton::handle_done_event");
+ update_gui(orig_color, orig_alpha);
+ gui->unlock_window();
+ handle_new_color(orig_color, orig_alpha);
+ }
}
-int GradientOutColorButton::handle_event()
+int GradientInColorButton::handle_new_color(int color, int alpha)
{
- window->out_color_thread->start_window(
- plugin->config.get_out_color(),
- plugin->config.out_a);
+ plugin->config.in_r = (color & 0xff0000) >> 16;
+ plugin->config.in_g = (color & 0xff00) >> 8;
+ plugin->config.in_b = (color & 0xff);
+ plugin->config.in_a = alpha;
+ plugin->send_configure_change();
return 1;
}
-GradientReset::GradientReset(GradientMain *plugin, GradientWindow *window, int x, int y)
- : BC_GenericButton(x, y, _("Reset"))
+GradientOutColorButton::GradientOutColorButton(GradientMain *plugin, GradientWindow *gui,
+ int x, int y, int color, int alpha)
+ : ColorBoxButton(_("Outer color:"), x, y, COLOR_W, COLOR_H, color, alpha, 1)
{
this->plugin = plugin;
- this->window = window;
+ this->gui = gui;
}
-int GradientReset::handle_event()
+GradientOutColorButton::~GradientOutColorButton()
{
- plugin->config.reset();
- window->update_gui();
- plugin->send_configure_change();
- return 1;
}
-GradientInColorThread::GradientInColorThread(GradientMain *plugin,
- GradientWindow *window)
- : ColorPicker(1, _("Inner color"))
+void GradientOutColorButton::handle_done_event(int result)
{
- this->plugin = plugin;
- this->window = window;
+ if( result ) {
+ gui->lock_window("GradientOutColorButton::handle_done_event");
+ update_gui(orig_color, orig_alpha);
+ gui->unlock_window();
+ handle_new_color(orig_color, orig_alpha);
+ }
}
-int GradientInColorThread::handle_new_color(int output, int alpha)
+int GradientOutColorButton::handle_new_color(int color, int alpha)
{
- plugin->config.in_r = (output & 0xff0000) >> 16;
- plugin->config.in_g = (output & 0xff00) >> 8;
- plugin->config.in_b = (output & 0xff);
- plugin->config.in_a = alpha;
-
- window->lock_window("GradientInColorThread::handle_new_color");
- window->update_in_color();
- window->flush();
- window->unlock_window();
+ plugin->config.out_r = (color & 0xff0000) >> 16;
+ plugin->config.out_g = (color & 0xff00) >> 8;
+ plugin->config.out_b = (color & 0xff);
+ plugin->config.out_a = alpha;
plugin->send_configure_change();
-//printf("GradientInColorThread::handle_event 1 %d %d %d %d %d %d %d %d\n",
-// plugin->config.in_r, plugin->config.in_g, plugin->config.in_b, plugin->config.in_a,
-// plugin->config.out_r, plugin->config.out_g, plugin->config.out_b, plugin->config.out_a);
return 1;
}
-GradientOutColorThread::GradientOutColorThread(GradientMain *plugin,
- GradientWindow *window)
- : ColorPicker(1, _("Outer color"))
+GradientReset::GradientReset(GradientMain *plugin, GradientWindow *window, int x, int y)
+ : BC_GenericButton(x, y, _("Reset"))
{
this->plugin = plugin;
this->window = window;
}
-int GradientOutColorThread::handle_new_color(int output, int alpha)
+int GradientReset::handle_event()
{
- plugin->config.out_r = (output & 0xff0000) >> 16;
- plugin->config.out_g = (output & 0xff00) >> 8;
- plugin->config.out_b = (output & 0xff);
- plugin->config.out_a = alpha;
- window->lock_window("GradientOutColorThread::handle_new_color");
- window->update_out_color();
- window->flush();
- window->unlock_window();
+ plugin->config.reset();
+ window->update_gui();
plugin->send_configure_change();
-//printf("GradientOutColorThread::handle_event 1 %d %d %d %d %d %d %d %d\n",
-// plugin->config.in_r, plugin->config.in_g, plugin->config.in_b, plugin->config.in_a,
-// plugin->config.out_r, plugin->config.out_g, plugin->config.out_b, plugin->config.out_a);
return 1;
}
{
if( !thread ) return;
if( !load_configuration() ) return;
- ((GradientWindow*)thread->window)->lock_window("GradientMain::update_gui");
- GradientWindow *window = (GradientWindow *)thread->window;
- window->update_gui();
- window->unlock_window();
+ thread->window->lock_window("GradientMain::update_gui");
+ if( load_configuration() ) {
+ GradientWindow *window = (GradientWindow *)thread->window;
+ window->update_gui();
+ window->flush();
+ }
+ thread->window->unlock_window();
}
void GradientWindow::update_gui()
if( angle ) angle->update(config.angle);
if( center_x ) center_x->update(config.center_x);
if( center_y ) center_y->update(config.center_y);
- update_in_color();
- update_out_color();
update_shape();
- unlock_window();
- in_color_thread->update_gui(config.get_in_color(), config.in_a);
- out_color_thread->update_gui(config.get_out_color(), config.out_a);
- lock_window("GradientWindow::update_gui");
+ in_color->update_gui(config.get_in_color(), config.in_a);
+ out_color->update_gui(config.get_out_color(), config.out_a);
}
int out1, out2, out3, out4;
YUV::yuv.rgb_to_yuv_8(in_r,in_g,in_b, in1,in2,in3);
in4 = plugin->config.in_a;
- int out_r = plugin->config.in_r;
- int out_g = plugin->config.in_g;
- int out_b = plugin->config.in_b;
+ int out_r = plugin->config.out_r;
+ int out_g = plugin->config.out_g;
+ int out_b = plugin->config.out_b;
YUV::yuv.rgb_to_yuv_8(out_r,out_g,out_b, out1,out2,out3);
out4 = plugin->config.out_a;
CREATE_GRADIENT(unsigned char, int, 3, 0xff)
int out1, out2, out3, out4;
YUV::yuv.rgb_to_yuv_8(in_r,in_g,in_b, in1,in2,in3);
in4 = plugin->config.in_a;
- int out_r = plugin->config.in_r;
- int out_g = plugin->config.in_g;
- int out_b = plugin->config.in_b;
+ int out_r = plugin->config.out_r;
+ int out_g = plugin->config.out_g;
+ int out_b = plugin->config.out_b;
YUV::yuv.rgb_to_yuv_8(out_r,out_g,out_b, out1,out2,out3);
out4 = plugin->config.out_a;
CREATE_GRADIENT(unsigned char, int, 4, 0xff)