summaryrefslogtreecommitdiffstats
path: root/scene
diff options
context:
space:
mode:
authorGeorge L. Albany <Megacake1234@gmail.com>2024-10-27 13:26:09 +0000
committerGitHub <noreply@github.com>2024-10-27 13:26:09 +0000
commite8177416ec3cfcdd63a3d2233db54316e8b854bc (patch)
tree4ac81b3e488dc98c4d3a72aed6a92bb1ae06c600 /scene
parent6e3e9dfb9857b751f59fd4b40c55e9262ff5a864 (diff)
parent6b2fb2a325db980dd90a3fee00b8dd805f9cf4ed (diff)
downloadredot-engine-e8177416ec3cfcdd63a3d2233db54316e8b854bc.tar.gz
Merge pull request #810 from Spartan322/add/wheel_picker_cursor
Add `wheel_picker_cursor` theme icon to `ColorPicker`
Diffstat (limited to 'scene')
-rw-r--r--scene/gui/color_picker.cpp14
-rw-r--r--scene/gui/color_picker.h1
-rw-r--r--scene/theme/default_theme.cpp1
-rw-r--r--scene/theme/icons/color_picker_wheel_cursor.svg1
4 files changed, 9 insertions, 8 deletions
diff --git a/scene/gui/color_picker.cpp b/scene/gui/color_picker.cpp
index 4faf571104..3a5c057caf 100644
--- a/scene/gui/color_picker.cpp
+++ b/scene/gui/color_picker.cpp
@@ -1217,14 +1217,11 @@ void ColorPicker::_hsv_draw(int p_which, Control *c) {
col.set_hsv(h, 1, 1);
if (actual_shape == SHAPE_HSV_WHEEL) {
- points.resize(4);
- double h1 = h - (0.5 / 360);
- double h2 = h + (0.5 / 360);
- points.set(0, Point2(center.x + (center.x * Math::cos(h1 * Math_TAU)), center.y + (center.y * Math::sin(h1 * Math_TAU))));
- points.set(1, Point2(center.x + (center.x * Math::cos(h1 * Math_TAU) * 0.84), center.y + (center.y * Math::sin(h1 * Math_TAU) * 0.84)));
- points.set(2, Point2(center.x + (center.x * Math::cos(h2 * Math_TAU)), center.y + (center.y * Math::sin(h2 * Math_TAU))));
- points.set(3, Point2(center.x + (center.x * Math::cos(h2 * Math_TAU) * 0.84), center.y + (center.y * Math::sin(h2 * Math_TAU) * 0.84)));
- c->draw_multiline(points, col.inverted());
+ const real_t near_wheel_radius_multiplier = 0.84;
+ const real_t wheel_radis_center_multipler = near_wheel_radius_multiplier + (1.0 - near_wheel_radius_multiplier) / 2;
+ real_t wheel_x = center.x + (center.x * Math::cos(h * Math_TAU) * wheel_radis_center_multipler) - (theme_cache.wheel_picker_cursor->get_width() / 2);
+ real_t wheel_y = center.y + (center.y * Math::sin(h * Math_TAU) * wheel_radis_center_multipler) - (theme_cache.wheel_picker_cursor->get_height() / 2);
+ c->draw_texture(theme_cache.wheel_picker_cursor, Point2(wheel_x, wheel_y));
}
} else if (p_which == 1) {
@@ -1817,6 +1814,7 @@ void ColorPicker::_bind_methods() {
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, sample_revert);
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, overbright_indicator);
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, picker_cursor);
+ BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, wheel_picker_cursor);
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, color_hue);
BIND_THEME_ITEM(Theme::DATA_TYPE_ICON, ColorPicker, color_okhsl_hue);
diff --git a/scene/gui/color_picker.h b/scene/gui/color_picker.h
index a2a59f66f5..8383d8a8f4 100644
--- a/scene/gui/color_picker.h
+++ b/scene/gui/color_picker.h
@@ -241,6 +241,7 @@ private:
Ref<Texture2D> sample_revert;
Ref<Texture2D> overbright_indicator;
Ref<Texture2D> picker_cursor;
+ Ref<Texture2D> wheel_picker_cursor;
Ref<Texture2D> color_hue;
Ref<Texture2D> color_okhsl_hue;
diff --git a/scene/theme/default_theme.cpp b/scene/theme/default_theme.cpp
index 7d404ece82..6db13985a5 100644
--- a/scene/theme/default_theme.cpp
+++ b/scene/theme/default_theme.cpp
@@ -1040,6 +1040,7 @@ void fill_default_theme(Ref<Theme> &theme, const Ref<Font> &default_font, const
theme->set_icon("overbright_indicator", "ColorPicker", icons["color_picker_overbright"]);
theme->set_icon("bar_arrow", "ColorPicker", icons["color_picker_bar_arrow"]);
theme->set_icon("picker_cursor", "ColorPicker", icons["color_picker_cursor"]);
+ theme->set_icon("wheel_picker_cursor", "ColorPicker", icons["color_picker_wheel_cursor"]);
{
const int precision = 7;
diff --git a/scene/theme/icons/color_picker_wheel_cursor.svg b/scene/theme/icons/color_picker_wheel_cursor.svg
new file mode 100644
index 0000000000..2eaad3c128
--- /dev/null
+++ b/scene/theme/icons/color_picker_wheel_cursor.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><circle cx="8" cy="8" r="5.5" fill="none" stroke="#fff"/><circle cx="8" cy="8" r="4.5" fill="none" stroke="#000"/></svg> \ No newline at end of file