1
0
Fork 0

Fix ColorPicker sliders in overbright RGB

This commit is contained in:
kobewi 2025-01-31 13:56:39 +01:00
parent 9ee1873ae1
commit 66dffca1f2
3 changed files with 6 additions and 8 deletions

View File

@ -43,12 +43,6 @@ String ColorModeRGB::get_slider_label(int idx) const {
return labels[idx]; return labels[idx];
} }
float ColorModeRGB::get_slider_max(int idx) const {
ERR_FAIL_INDEX_V_MSG(idx, 4, 0, "Couldn't get slider max value.");
Color color = color_picker->get_pick_color();
return next_power_of_2(MAX(255, color.components[idx] * 255.0)) - 1;
}
float ColorModeRGB::get_slider_value(int idx) const { float ColorModeRGB::get_slider_value(int idx) const {
ERR_FAIL_INDEX_V_MSG(idx, 4, 0, "Couldn't get slider value."); ERR_FAIL_INDEX_V_MSG(idx, 4, 0, "Couldn't get slider value.");
return color_picker->get_pick_color().components[idx] * 255; return color_picker->get_pick_color().components[idx] * 255;

View File

@ -46,6 +46,7 @@ public:
virtual float get_spinbox_arrow_step() const { return get_slider_step(); } virtual float get_spinbox_arrow_step() const { return get_slider_step(); }
virtual String get_slider_label(int idx) const = 0; virtual String get_slider_label(int idx) const = 0;
virtual float get_slider_max(int idx) const = 0; virtual float get_slider_max(int idx) const = 0;
virtual bool get_allow_greater() const { return false; }
virtual float get_slider_value(int idx) const = 0; virtual float get_slider_value(int idx) const = 0;
virtual Color get_color() const = 0; virtual Color get_color() const = 0;
@ -92,7 +93,8 @@ public:
virtual float get_slider_step() const override { return 1; } virtual float get_slider_step() const override { return 1; }
virtual String get_slider_label(int idx) const override; virtual String get_slider_label(int idx) const override;
virtual float get_slider_max(int idx) const override; virtual float get_slider_max(int idx) const override { return 255; }
virtual bool get_allow_greater() const override { return true; }
virtual float get_slider_value(int idx) const override; virtual float get_slider_value(int idx) const override;
virtual Color get_color() const override; virtual Color get_color() const override;
@ -114,6 +116,7 @@ public:
virtual float get_spinbox_arrow_step() const override { return 0.01; } virtual float get_spinbox_arrow_step() const override { return 0.01; }
virtual String get_slider_label(int idx) const override; virtual String get_slider_label(int idx) const override;
virtual float get_slider_max(int idx) const override; virtual float get_slider_max(int idx) const override;
virtual bool get_allow_greater() const override { return true; }
virtual float get_slider_value(int idx) const override; virtual float get_slider_value(int idx) const override;
virtual Color get_color() const override; virtual Color get_color() const override;

View File

@ -675,8 +675,9 @@ void ColorPicker::_update_color(bool p_update_sliders) {
for (int i = 0; i < current_slider_count; i++) { for (int i = 0; i < current_slider_count; i++) {
sliders[i]->set_max(modes[current_mode]->get_slider_max(i)); sliders[i]->set_max(modes[current_mode]->get_slider_max(i));
sliders[i]->set_step(step); sliders[i]->set_step(step);
values[i]->set_custom_arrow_step(spinbox_arrow_step);
sliders[i]->set_value(modes[current_mode]->get_slider_value(i)); sliders[i]->set_value(modes[current_mode]->get_slider_value(i));
values[i]->set_custom_arrow_step(spinbox_arrow_step);
values[i]->set_allow_greater(modes[current_mode]->get_allow_greater());
} }
alpha_slider->set_max(modes[current_mode]->get_slider_max(current_slider_count)); alpha_slider->set_max(modes[current_mode]->get_slider_max(current_slider_count));
alpha_slider->set_step(step); alpha_slider->set_step(step);