Display the old color in ColorPicker for easier comparison
This only affects ColorPickerButton nodes that spawn a ColorPicker, not standalone ColorPickers.
This commit is contained in:
parent
18277679a7
commit
6d03fe5194
|
@ -394,17 +394,39 @@ void ColorPicker::_update_text_value() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ColorPicker::_sample_draw() {
|
void ColorPicker::_sample_draw() {
|
||||||
const Rect2 r = Rect2(Point2(), Size2(uv_edit->get_size().width, sample->get_size().height * 0.95));
|
// Covers the right half of the sample if the old color is being displayed,
|
||||||
|
// or the whole sample if it's not being displayed.
|
||||||
|
Rect2 rect_new;
|
||||||
|
|
||||||
if (color.a < 1.0) {
|
if (display_old_color) {
|
||||||
sample->draw_texture_rect(get_icon("preset_bg", "ColorPicker"), r, true);
|
rect_new = Rect2(Point2(uv_edit->get_size().width * 0.5, 0), Size2(uv_edit->get_size().width * 0.5, sample->get_size().height * 0.95));
|
||||||
|
|
||||||
|
// Draw both old and new colors for easier comparison (only if spawned from a ColorPickerButton).
|
||||||
|
const Rect2 rect_old = Rect2(Point2(), Size2(uv_edit->get_size().width * 0.5, sample->get_size().height * 0.95));
|
||||||
|
|
||||||
|
if (display_old_color && old_color.a < 1.0) {
|
||||||
|
sample->draw_texture_rect(get_icon("preset_bg", "ColorPicker"), rect_old, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
sample->draw_rect(rect_old, old_color);
|
||||||
|
|
||||||
|
if (old_color.r > 1 || old_color.g > 1 || old_color.b > 1) {
|
||||||
|
// Draw an indicator to denote that the old color is "overbright" and can't be displayed accurately in the preview.
|
||||||
|
sample->draw_texture(get_icon("overbright_indicator", "ColorPicker"), Point2());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
rect_new = Rect2(Point2(), Size2(uv_edit->get_size().width, sample->get_size().height * 0.95));
|
||||||
}
|
}
|
||||||
|
|
||||||
sample->draw_rect(r, color);
|
if (color.a < 1.0) {
|
||||||
|
sample->draw_texture_rect(get_icon("preset_bg", "ColorPicker"), rect_new, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
sample->draw_rect(rect_new, color);
|
||||||
|
|
||||||
if (color.r > 1 || color.g > 1 || color.b > 1) {
|
if (color.r > 1 || color.g > 1 || color.b > 1) {
|
||||||
// Draw an indicator to denote that the color is "overbright" and can't be displayed accurately in the preview
|
// Draw an indicator to denote that the new color is "overbright" and can't be displayed accurately in the preview
|
||||||
sample->draw_texture(get_icon("overbright_indicator", "ColorPicker"), Point2());
|
sample->draw_texture(get_icon("overbright_indicator", "ColorPicker"), Point2(uv_edit->get_size().width * 0.5, 0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -886,6 +908,13 @@ ColorPicker::ColorPicker() :
|
||||||
|
|
||||||
/////////////////
|
/////////////////
|
||||||
|
|
||||||
|
void ColorPickerButton::_about_to_show() {
|
||||||
|
set_pressed(true);
|
||||||
|
if (picker) {
|
||||||
|
picker->set_old_color(color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ColorPickerButton::_color_changed(const Color &p_color) {
|
void ColorPickerButton::_color_changed(const Color &p_color) {
|
||||||
color = p_color;
|
color = p_color;
|
||||||
update();
|
update();
|
||||||
|
@ -943,6 +972,18 @@ Color ColorPickerButton::get_pick_color() const {
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ColorPicker::set_old_color(const Color &p_color) {
|
||||||
|
old_color = p_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColorPicker::set_display_old_color(bool p_enabled) {
|
||||||
|
display_old_color = p_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ColorPicker::is_displaying_old_color() const {
|
||||||
|
return display_old_color;
|
||||||
|
}
|
||||||
|
|
||||||
void ColorPickerButton::set_edit_alpha(bool p_show) {
|
void ColorPickerButton::set_edit_alpha(bool p_show) {
|
||||||
edit_alpha = p_show;
|
edit_alpha = p_show;
|
||||||
if (picker) {
|
if (picker) {
|
||||||
|
@ -972,10 +1013,11 @@ void ColorPickerButton::_update_picker() {
|
||||||
add_child(popup);
|
add_child(popup);
|
||||||
picker->connect("color_changed", this, "_color_changed");
|
picker->connect("color_changed", this, "_color_changed");
|
||||||
popup->connect("modal_closed", this, "_modal_closed");
|
popup->connect("modal_closed", this, "_modal_closed");
|
||||||
popup->connect("about_to_show", this, "set_pressed", varray(true));
|
popup->connect("about_to_show", this, "_about_to_show");
|
||||||
popup->connect("popup_hide", this, "set_pressed", varray(false));
|
popup->connect("popup_hide", this, "set_pressed", varray(false));
|
||||||
picker->set_pick_color(color);
|
picker->set_pick_color(color);
|
||||||
picker->set_edit_alpha(edit_alpha);
|
picker->set_edit_alpha(edit_alpha);
|
||||||
|
picker->set_display_old_color(true);
|
||||||
emit_signal("picker_created");
|
emit_signal("picker_created");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -987,6 +1029,7 @@ void ColorPickerButton::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_popup"), &ColorPickerButton::get_popup);
|
ClassDB::bind_method(D_METHOD("get_popup"), &ColorPickerButton::get_popup);
|
||||||
ClassDB::bind_method(D_METHOD("set_edit_alpha", "show"), &ColorPickerButton::set_edit_alpha);
|
ClassDB::bind_method(D_METHOD("set_edit_alpha", "show"), &ColorPickerButton::set_edit_alpha);
|
||||||
ClassDB::bind_method(D_METHOD("is_editing_alpha"), &ColorPickerButton::is_editing_alpha);
|
ClassDB::bind_method(D_METHOD("is_editing_alpha"), &ColorPickerButton::is_editing_alpha);
|
||||||
|
ClassDB::bind_method(D_METHOD("_about_to_show"), &ColorPickerButton::_about_to_show);
|
||||||
ClassDB::bind_method(D_METHOD("_color_changed"), &ColorPickerButton::_color_changed);
|
ClassDB::bind_method(D_METHOD("_color_changed"), &ColorPickerButton::_color_changed);
|
||||||
ClassDB::bind_method(D_METHOD("_modal_closed"), &ColorPickerButton::_modal_closed);
|
ClassDB::bind_method(D_METHOD("_modal_closed"), &ColorPickerButton::_modal_closed);
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,8 @@ private:
|
||||||
int presets_per_row;
|
int presets_per_row;
|
||||||
|
|
||||||
Color color;
|
Color color;
|
||||||
|
Color old_color;
|
||||||
|
bool display_old_color = false;
|
||||||
bool raw_mode_enabled;
|
bool raw_mode_enabled;
|
||||||
bool hsv_mode_enabled;
|
bool hsv_mode_enabled;
|
||||||
bool deferred_mode_enabled;
|
bool deferred_mode_enabled;
|
||||||
|
@ -112,6 +114,10 @@ public:
|
||||||
void _set_pick_color(const Color &p_color, bool p_update_sliders);
|
void _set_pick_color(const Color &p_color, bool p_update_sliders);
|
||||||
void set_pick_color(const Color &p_color);
|
void set_pick_color(const Color &p_color);
|
||||||
Color get_pick_color() const;
|
Color get_pick_color() const;
|
||||||
|
void set_old_color(const Color &p_color);
|
||||||
|
|
||||||
|
void set_display_old_color(bool p_enabled);
|
||||||
|
bool is_displaying_old_color() const;
|
||||||
|
|
||||||
void add_preset(const Color &p_color);
|
void add_preset(const Color &p_color);
|
||||||
void erase_preset(const Color &p_color);
|
void erase_preset(const Color &p_color);
|
||||||
|
@ -145,6 +151,7 @@ class ColorPickerButton : public Button {
|
||||||
Color color;
|
Color color;
|
||||||
bool edit_alpha;
|
bool edit_alpha;
|
||||||
|
|
||||||
|
void _about_to_show();
|
||||||
void _color_changed(const Color &p_color);
|
void _color_changed(const Color &p_color);
|
||||||
void _modal_closed();
|
void _modal_closed();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue