if( x < 0 ) x = 0;
if( y < 0 ) y = 0;
ColorWindow *window = new ColorWindow(this, x, y, w, h, window_title);
+ window->create_objects();
window->start_selection(color, !do_alpha ? -1 : alpha, ok_cancel);
return window;
}
{
}
+void ColorWindow::create_objects()
+{
+ BC_WindowBase::create_objects();
+ ColorGUI::create_objects();
+ thread->create_objects(this);
+}
+
void ColorWindow::update_gui(int color, int alpha)
{
lock_window("ColorWindow::update_gui");
ColorPicker(int do_alpha = 0, const char *title = 0);
~ColorPicker();
void start_window(int color, int alpha, int ok_cancel=0);
+ virtual void create_objects(ColorWindow *window) {}
virtual void update_gui(int color, int alpha);
virtual int handle_new_color(int color, int alpha);
BC_Window* new_gui();
void update_gui(int color, int alpha);
int handle_new_color(int color, int alpha);
+ void create_objects();
int close_event() { return close_gui(); }
int cursor_motion_event() { return cursor_motion_gui(); }
VFrame *title_bar = new VFrame(tw, th, colormodel);
uint8_t **bar_rows = title_bar->get_rows();
const uint8_t gap_grey = 0x4a;
+ union { unsigned rgba; struct { uint8_t r,g,b,a; }; } c;
+ c.r = color>>16; c.g = color>>8; c.b = color>>0; c.a = 0xff;
if( BC_CModels::has_alpha(colormodel) && // fast path
BC_CModels::calculate_pixelsize(colormodel) == sizeof(unsigned) ) {
const unsigned gap_rgba = (0xff<<24) |
unsigned *bp = (unsigned *)bar_rows[0];
for( int i=tw; --i>=0; ) *bp++ = gap_rgba;
}
- unsigned rgba = (0xff<<24) | (color & 0xffffff);
for( int y=1; y<th; ++y ) {
unsigned *bp = (unsigned *)bar_rows[y];
if( tw > 0 ) *bp++ = gap_rgba;
- for( int i=tw1; --i>0; ++bp ) *bp = rgba;
+ for( int i=tw1; --i>0; ++bp ) *bp = c.rgba;
if( tw > 1 ) *bp = gap_rgba;
}
}
else {
- uint8_t cr = (color>>16), cg = (color>>8), cb = (color>>0);
if( th > 0 ) {
uint8_t *cp = bar_rows[0];
for( int x=0; x<tw; ++x ) {
cp += bpp;
}
for( int x=1; x<tw1; ++x ) {
- cp[0] = cr; cp[1] = cg; cp[2] = cb;
+ cp[0] = c.r; cp[1] = c.g; cp[2] = c.b;
if( bpp > 3 ) cp[3] = 0xff;
cp += bpp;
}
}
void TrackTitleColorPicker::create_objects(ColorWindow *gui)
{
+ gui->lock_window("TrackTitleColorPicker::create_objects");
int y = gui->get_h() - BC_CancelButton::calculate_h() + yS(10);
int x = gui->get_w() - BC_CancelButton::calculate_w() - xS(10);
x -= BC_GenericButton::calculate_w(gui, _("default")) + xS(15);
gui->add_subwindow(new TrackTitleColorDefault(this, x, y));
+ gui->unlock_window();
}
int TrackTitleColorPicker::handle_new_color(int color, int alpha)
{
this->gui = gui;
this->plugin = plugin;
+ set_tooltip(_("Anti-Aliasing"));
}
SketcherAliasing::~SketcherAliasing()
{
const char *SketcherAliasing::alias_to_text(int alias)
{
if( alias < 0 ) return _("Off");
- if( alias > 0 ) return _("Dbl");
+ if( alias > 0 ) return _("Double");
return _("On");
}