{
ColorWindow *gui = (ColorWindow *)get_gui();
if( !gui ) return;
- gui->lock_window();
+ gui->lock_window("ColorPicker::update_gui");
this->output = output;
this->alpha = alpha;
gui->change_values();
int ColorWindow::handle_event()
{
+ unlock_window();
thread->handle_new_color(rgb888(), alpha8());
+ lock_window("ColorWindow::handle_event");
return 1;
}
delete color_picker; color_picker = 0;
}
+void ColorButton::update_gui(int color, int alpha)
+{
+ if( color_picker )
+ color_picker->update_gui(color, alpha);
+ update_gui(color | (~alpha<<24));
+}
+
void ColorButton::update_gui(int color)
{
set_color(color);
color_button->handle_done_event(result);
}
-int ColorButtonPicker::handle_new_color(int color, int alpha)
+void ColorButtonPicker::update(int color, int alpha)
{
color_button->color = color;
+ color_button->alpha = alpha;
color_button->color_thread->update_lock->unlock();
- color_button->handle_new_color(color, alpha);
- return 1;
+}
+
+int ColorButtonPicker::handle_new_color(int color, int alpha)
+{
+ color_button->lock_window("ColorButtonPicker::handle_new_color");
+ color_button->update_gui(color, alpha);
+ color_button->unlock_window();
+ return color_button->handle_new_color(color, alpha);
}
void ColorButtonPicker::update_gui()
{
color_button->lock_window("ColorButtonPicker::update_gui");
- color_button->update_gui(color_button->color);
+ color_button->update_gui(color_button->color, color_button->alpha);
color_button->unlock_window();
}
+void ColorButtonPicker::update_gui(int color, int alpha)
+{
+ ColorPicker::update_gui(color, alpha);
+ color_button->handle_new_color(color, alpha);
+}
+
ColorButtonThread::ColorButtonThread(ColorButton *color_button)
: Thread(1, 0, 0)
{
}
void ColorBoxButton::create_objects()
{
- update_gui(color);
+ update_gui(color, alpha);
}
void ColorBoxButton::set_color(int color)
{
- this->color = color;
+ this->color = (color & 0xffffff);
+ this->alpha = (~color>>24) & 0xff;
int r = (color>>16) & 0xff;
int g = (color>> 8) & 0xff;
int b = (color>> 0) & 0xff;
}
void ColorCircleButton::create_objects()
{
- update_gui(color);
+ update_gui(color, alpha);
}
void ColorCircleButton::set_color(int color)
{
- this->color = color;
+ this->color = (color & 0xffffff);
+ this->alpha = (~color>>24) & 0xff;
int r = (color>>16) & 0xff;
int g = (color>>8) & 0xff;
int b = (color>>0) & 0xff;