From 7d2b02415130f1687e21d5ce1d9a90901eed88c1 Mon Sep 17 00:00:00 2001 From: Nika Kutsniashvili Date: Fri, 15 Aug 2025 21:40:56 +0200 Subject: [PATCH] UI: Theme: Move curve handle properties in common Continuing #140360, after 39c066ee5315ea32d415a7b4a00bb4f1b9ea8c9d Moving curve handle colors & size from space editors into common theme properties. They are now shared by 3D Viewport, Image Editor, Graph Editor, and Movie Clip Editor, instead of each of them having their own properties. (Video in PR) --- Details: - NURB U/V lines, active spline, and last selected point colors were defined in `rna_def_userdef_theme_spaces_curves` but were optional and only called by 3D viewport. Since no other editor calls that function anymore, I removed it and moved those properties directly inside `rna_def_userdef_theme_space_view3d`. - In Image Editor & Movie Clip Editor (Mask mode), curves don't ever show selection colors, and Vector handles are generally never visible, that is bug/missing in Blender in general, not a result of this PR. - Handle vertex size were included in Dope Sheet and NLA, where handles don't exist. Now as a side effect they're removed as well. Pull Request: https://projects.blender.org/blender/blender/pulls/143762 --- .../datafiles/userdef/userdef_default_theme.c | 50 +--- .../presets/interface_theme/Blender_Light.xml | 62 ++-- scripts/startup/bl_ui/space_userpref.py | 1 + .../blender/blenkernel/BKE_blender_version.h | 2 +- .../blenloader/intern/versioning_userdef.cc | 16 ++ source/blender/editors/interface/resources.cc | 47 +-- source/blender/makesdna/DNA_theme_types.h | 30 +- source/blender/makesrna/intern/rna_userdef.cc | 268 +++++++++--------- 8 files changed, 227 insertions(+), 249 deletions(-) diff --git a/release/datafiles/userdef/userdef_default_theme.c b/release/datafiles/userdef/userdef_default_theme.c index 77db282918b..e9e06c10c8e 100644 --- a/release/datafiles/userdef/userdef_default_theme.c +++ b/release/datafiles/userdef/userdef_default_theme.c @@ -287,6 +287,21 @@ const bTheme U_theme_default = { .channel_group = RGBA(0x1a332d37), .channel_group_active = RGBA(0x216d5b67), }, + .curves = { + .handle_free = RGBA(0x000000ff), + .handle_auto = RGBA(0x909000ff), + .handle_vect = RGBA(0x409030ff), + .handle_align = RGBA(0x803060ff), + .handle_auto_clamped = RGBA(0x994030ff), + .handle_sel_free = RGBA(0x000000ff), + .handle_sel_auto = RGBA(0xf0ff40ff), + .handle_sel_vect = RGBA(0x40c030ff), + .handle_sel_align = RGBA(0xf090a0ff), + .handle_sel_auto_clamped = RGBA(0xf0af90ff), + .handle_vertex = RGBA(0x000000ff), + .handle_vertex_select = RGBA(0xff8500ff), + .handle_vertex_size = 5, + }, }, .space_properties = { .back = RGBA(0x30303000), @@ -366,14 +381,6 @@ const bTheme U_theme_default = { .nurb_sel_uline = RGBA(0xf0ff40ff), .nurb_sel_vline = RGBA(0xf090a0ff), .lastsel_point = RGBA(0xffffffff), - .handle_free = RGBA(0x000000ff), - .handle_auto = RGBA(0x909000ff), - .handle_vect = RGBA(0x409030ff), - .handle_align = RGBA(0x803060ff), - .handle_sel_free = RGBA(0x000000ff), - .handle_sel_auto = RGBA(0xf0ff40ff), - .handle_sel_vect = RGBA(0x40c030ff), - .handle_sel_align = RGBA(0xf090a0ff), .vertex_size = 3, .edge_width = 1, .outline_width = 1, @@ -427,20 +434,9 @@ const bTheme U_theme_default = { .vertex_select = RGBA(0xff8500ff), .vertex_active = RGBA(0xffffffff), .time_scrub_background = RGBA(0x161616ff), - .lastsel_point = RGBA(0xffffffff), - .handle_auto = RGBA(0x909000ff), - .handle_vect = RGBA(0x409030ff), - .handle_align = RGBA(0x803060ff), - .handle_auto_clamped = RGBA(0x994030ff), - .handle_sel_auto = RGBA(0xf0ff40ff), - .handle_sel_vect = RGBA(0x40c030ff), - .handle_sel_align = RGBA(0xf090a0ff), - .handle_sel_auto_clamped = RGBA(0xf0af90ff), .vertex_size = 6, .outline_width = 1, .facedot_size = 4, - .handle_vertex_select = RGBA(0xff8500ff), - .handle_vertex_size = 5, }, .space_info = { .back = RGBA(0x1d1d1d00), @@ -506,7 +502,6 @@ const bTheme U_theme_default = { .facedot_size = 4, .simulated_frames = RGBA(0x721e65ff), .keyframe_scale_fac = 1.0f, - .handle_vertex_size = 4, .anim_active = RGBA(0x4d272766), }, .space_nla = { @@ -533,7 +528,6 @@ const bTheme U_theme_default = { .vertex_size = 3, .outline_width = 1, .facedot_size = 4, - .handle_vertex_size = 4, .anim_active = RGBA(0x99541366), .anim_non_active = RGBA(0x4d3b174d), .nla_tweaking = RGBA(0x4df31a4d), @@ -622,17 +616,11 @@ const bTheme U_theme_default = { .face_select = RGBA(0xff85003c), .face_dot = RGBA(0xff8500ff), .freestyle_face_mark = RGBA(0x7fff7f33), - .handle_auto = RGBA(0x909000ff), - .handle_align = RGBA(0x803060ff), - .handle_sel_auto = RGBA(0xf0ff40ff), - .handle_sel_align = RGBA(0xf090a0ff), .vertex_size = 3, .edge_width = 1, .outline_width = 1, .facedot_size = 3, .editmesh_active = RGBA(0xffffff40), - .handle_vertex_select = RGBA(0xffff00ff), - .handle_vertex_size = 5, .gp_vertex_size = 3, .gp_vertex_select = RGBA(0xff8500ff), .preview_back = RGBA(0x727272ff), @@ -796,17 +784,9 @@ const bTheme U_theme_default = { .strip = RGBA(0xffffff80), .strip_select = RGBA(0xff8c00ff), .time_scrub_background = RGBA(0x181818ff), - .handle_auto = RGBA(0x909000ff), - .handle_align = RGBA(0x803060ff), - .handle_auto_clamped = RGBA(0x99403000), - .handle_sel_auto = RGBA(0xf0ff40ff), - .handle_sel_align = RGBA(0xf090a0ff), - .handle_sel_auto_clamped = RGBA(0xf0af9000), .vertex_size = 3, .outline_width = 1, .facedot_size = 4, - .handle_vertex_select = RGBA(0xff8500ff), - .handle_vertex_size = 5, .marker = RGBA(0x808000ff), .act_marker = RGBA(0xffffffff), .sel_marker = RGBA(0xffff00ff), diff --git a/scripts/presets/interface_theme/Blender_Light.xml b/scripts/presets/interface_theme/Blender_Light.xml index de76d6a07e6..caf680458d9 100644 --- a/scripts/presets/interface_theme/Blender_Light.xml +++ b/scripts/presets/interface_theme/Blender_Light.xml @@ -398,6 +398,24 @@ > + + + + @@ -445,14 +463,6 @@ nurb_sel_uline="#f0ff40" nurb_sel_vline="#f090a0" act_spline="#db2512" - handle_free="#000000" - handle_auto="#909000" - handle_vect="#409030" - handle_sel_vect="#40c030" - handle_align="#803060" - handle_sel_free="#000000" - handle_sel_auto="#f0ff40" - handle_sel_align="#f090a0" lastsel_point="#ffffff" extra_edge_len="#ff6149" extra_edge_angle="#cccc00" @@ -519,20 +529,7 @@ vertex_size="6" vertex_bevel="#000000" vertex_unreferenced="#000000" - handle_free="#000000" - handle_auto="#909000" - handle_vect="#409030" - handle_sel_vect="#40c030" - handle_align="#803060" - handle_sel_free="#000000" - handle_sel_auto="#f0ff40" - handle_sel_align="#f090a0" - handle_auto_clamped="#994030" - handle_sel_auto_clamped="#f0af90" lastsel_point="#ffffff" - handle_vertex="#000000" - handle_vertex_select="#ff8500" - handle_vertex_size="5" > @@ -1067,17 +1053,7 @@ strips_selected="#ff8c00" metadatabg="#000000" metadatatext="#ffffff" - handle_free="#000000" - handle_auto="#909000" - handle_align="#803060" - handle_sel_free="#000000" - handle_sel_auto="#f0ff40" - handle_sel_align="#f090a0" - handle_auto_clamped="#000000" - handle_sel_auto_clamped="#000000" - handle_vertex="#000000" - handle_vertex_select="#ffff00" - handle_vertex_size="5" + preview_range="#a14d0066" > common.curves.handle_vertex_size = U_theme_default.common.curves.handle_vertex_size; + } + /** * Always bump subversion in BKE_blender_version.h when adding versioning * code here, and wrap it inside a USER_VERSION_ATLEAST check. diff --git a/source/blender/editors/interface/resources.cc b/source/blender/editors/interface/resources.cc index 667594067d8..debdc6837fa 100644 --- a/source/blender/editors/interface/resources.cc +++ b/source/blender/editors/interface/resources.cc @@ -549,6 +549,7 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) case TH_TIME_GP_KEYFRAME: cp = ts->time_gp_keyframe; break; + case TH_NURB_ULINE: cp = ts->nurb_uline; break; @@ -567,36 +568,38 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) case TH_ACTIVE_VERT: cp = ts->lastsel_point; break; + case TH_HANDLE_FREE: - cp = ts->handle_free; - break; - case TH_HANDLE_AUTO: - cp = ts->handle_auto; - break; - case TH_HANDLE_AUTOCLAMP: - cp = ts->handle_auto_clamped; - break; - case TH_HANDLE_VECT: - cp = ts->handle_vect; - break; - case TH_HANDLE_ALIGN: - cp = ts->handle_align; + cp = btheme->common.curves.handle_free; break; case TH_HANDLE_SEL_FREE: - cp = ts->handle_sel_free; + cp = btheme->common.curves.handle_sel_free; + break; + case TH_HANDLE_AUTO: + cp = btheme->common.curves.handle_auto; break; case TH_HANDLE_SEL_AUTO: - cp = ts->handle_sel_auto; + cp = btheme->common.curves.handle_sel_auto; break; - case TH_HANDLE_SEL_AUTOCLAMP: - cp = ts->handle_sel_auto_clamped; + case TH_HANDLE_VECT: + cp = btheme->common.curves.handle_vect; break; case TH_HANDLE_SEL_VECT: - cp = ts->handle_sel_vect; + cp = btheme->common.curves.handle_sel_vect; + break; + case TH_HANDLE_ALIGN: + cp = btheme->common.curves.handle_align; break; case TH_HANDLE_SEL_ALIGN: - cp = ts->handle_sel_align; + cp = btheme->common.curves.handle_sel_align; break; + case TH_HANDLE_AUTOCLAMP: + cp = btheme->common.curves.handle_auto_clamped; + break; + case TH_HANDLE_SEL_AUTOCLAMP: + cp = btheme->common.curves.handle_sel_auto_clamped; + break; + case TH_FREESTYLE_EDGE_MARK: cp = ts->freestyle_edge_mark; break; @@ -780,13 +783,13 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) break; case TH_HANDLE_VERTEX: - cp = ts->handle_vertex; + cp = btheme->common.curves.handle_vertex; break; case TH_HANDLE_VERTEX_SELECT: - cp = ts->handle_vertex_select; + cp = btheme->common.curves.handle_vertex_select; break; case TH_HANDLE_VERTEX_SIZE: - cp = &ts->handle_vertex_size; + cp = &btheme->common.curves.handle_vertex_size; break; case TH_GP_VERTEX: diff --git a/source/blender/makesdna/DNA_theme_types.h b/source/blender/makesdna/DNA_theme_types.h index 256e4b45551..ef642383f4d 100644 --- a/source/blender/makesdna/DNA_theme_types.h +++ b/source/blender/makesdna/DNA_theme_types.h @@ -116,8 +116,25 @@ typedef struct ThemeCommonAnim { unsigned char channel_group[4], channel_group_active[4]; } ThemeCommonAnim; +typedef struct ThemeCommonCurves { + /** Curve handles. */ + unsigned char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4], + handle_auto_clamped[4]; + unsigned char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4], + handle_sel_auto_clamped[4]; + + /** Curve points. */ + unsigned char handle_vertex[4]; + unsigned char handle_vertex_select[4]; + unsigned char handle_vertex_size; + + char _pad0[3]; +} ThemeCommonCurves; + typedef struct ThemeCommon { ThemeCommonAnim anim; + ThemeCommonCurves curves; + char _pad0[4]; } ThemeCommon; typedef struct uiWidgetColors { @@ -302,16 +319,11 @@ typedef struct ThemeSpace { unsigned char time_keyframe[4], time_gp_keyframe[4]; unsigned char freestyle_edge_mark[4], freestyle_face_mark[4]; unsigned char time_scrub_background[4]; - char _pad9[4]; + char _pad10[4]; unsigned char nurb_uline[4], nurb_vline[4]; unsigned char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4], lastsel_point[4]; - unsigned char handle_free[4], handle_auto[4], handle_vect[4], handle_align[4], - handle_auto_clamped[4]; - unsigned char handle_sel_free[4], handle_sel_auto[4], handle_sel_vect[4], handle_sel_align[4], - handle_sel_auto_clamped[4]; - /** Dope-sheet. */ unsigned char ds_ipoline[4]; /** Key-types. */ @@ -362,11 +374,7 @@ typedef struct ThemeSpace { float keyframe_scale_fac; unsigned char editmesh_active[4]; - - unsigned char handle_vertex[4]; - unsigned char handle_vertex_select[4]; - - unsigned char handle_vertex_size; + char _pad9[1]; unsigned char clipping_border_3d[4]; diff --git a/source/blender/makesrna/intern/rna_userdef.cc b/source/blender/makesrna/intern/rna_userdef.cc index 02fde4b08c8..ba4f356fe74 100644 --- a/source/blender/makesrna/intern/rna_userdef.cc +++ b/source/blender/makesrna/intern/rna_userdef.cc @@ -2204,12 +2204,100 @@ static void rna_def_userdef_theme_common_anim(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); } +static void rna_def_userdef_theme_common_curves(BlenderRNA *brna) +{ + StructRNA *srna; + PropertyRNA *prop; + + srna = RNA_def_struct(brna, "ThemeCommonCurves", nullptr); + RNA_def_struct_sdna(srna, "ThemeCommonCurves"); + RNA_def_struct_ui_text(srna, "Common Curve Properties", "Shared curve theme properties"); + + /* Curve handle colors. */ + prop = RNA_def_property(srna, "handle_free", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_free"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Free Handle", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_sel_free", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_sel_free"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Free Handle Selected", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_auto", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_auto"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Auto Handle", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_sel_auto", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_sel_auto"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Auto Handle Selected", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_vect", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_vect"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Vector Handle", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_sel_vect", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_sel_vect"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Vector Handle Selected", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_align", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_align"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Align Handle", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_sel_align", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_sel_align"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Align Handle Selected", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_auto_clamped", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_auto_clamped"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Auto-Clamped Handle", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_sel_auto_clamped", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "handle_sel_auto_clamped"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Auto-Clamped Handle Selected", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + /* Curve handle point colors & size. */ + prop = RNA_def_property(srna, "handle_vertex", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Handle Vertex", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_vertex_select", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Handle Vertex Select", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "handle_vertex_size", PROP_INT, PROP_PIXEL); + RNA_def_property_range(prop, 1, 100); + RNA_def_property_ui_text(prop, "Handle Vertex Size", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); +} + static void rna_def_userdef_theme_common(BlenderRNA *brna) { StructRNA *srna; PropertyRNA *prop; rna_def_userdef_theme_common_anim(brna); + rna_def_userdef_theme_common_curves(brna); srna = RNA_def_struct(brna, "ThemeCommon", nullptr); RNA_def_struct_ui_text( @@ -2219,6 +2307,11 @@ static void rna_def_userdef_theme_common(BlenderRNA *brna) RNA_def_property_flag(prop, PROP_NEVER_NULL); RNA_def_property_ui_text(prop, "Animation", ""); RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "curves", PROP_POINTER, PROP_NONE); + RNA_def_property_flag(prop, PROP_NEVER_NULL); + RNA_def_property_ui_text(prop, "Curves", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); } static void rna_def_userdef_theme_space_common(StructRNA *srna) @@ -2560,134 +2653,6 @@ static void rna_def_userdef_theme_spaces_paint_curves(StructRNA *srna) RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); } -static void rna_def_userdef_theme_spaces_curves( - StructRNA *srna, bool incl_nurbs, bool incl_lastsel, bool incl_vector, bool incl_verthandle) -{ - PropertyRNA *prop; - - if (incl_nurbs) { - prop = RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "nurb_uline"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "NURBS U Lines", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "nurb_vline", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "nurb_vline"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "NURBS V Lines", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "nurb_sel_uline", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "nurb_sel_uline"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "NURBS Active U Lines", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "nurb_sel_vline", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "nurb_sel_vline"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "NURBS Active V Lines", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "act_spline", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "act_spline"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Active Spline", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - } - - prop = RNA_def_property(srna, "handle_free", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_free"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Free Handle", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_auto", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_auto"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Auto Handle", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - if (incl_vector) { - prop = RNA_def_property(srna, "handle_vect", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_vect"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Vector Handle", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_sel_vect", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_sel_vect"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Vector Handle Selected", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - } - - prop = RNA_def_property(srna, "handle_align", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_align"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Align Handle", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_sel_free", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_sel_free"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Free Handle Selected", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_sel_auto", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_sel_auto"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Auto Handle Selected", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_sel_align", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_sel_align"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Align Handle Selected", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - if (!incl_nurbs) { - /* assume that when nurbs are off, this is for 2D (i.e. anim) editors */ - prop = RNA_def_property(srna, "handle_auto_clamped", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_auto_clamped"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Auto-Clamped Handle", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_sel_auto_clamped", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "handle_sel_auto_clamped"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Auto-Clamped Handle Selected", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - } - - if (incl_lastsel) { - prop = RNA_def_property(srna, "lastsel_point", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_float_sdna(prop, nullptr, "lastsel_point"); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Last Selected Point", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - } - - if (incl_verthandle) { - prop = RNA_def_property(srna, "handle_vertex", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Handle Vertex", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_vertex_select", PROP_FLOAT, PROP_COLOR_GAMMA); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Handle Vertex Select", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - prop = RNA_def_property(srna, "handle_vertex_size", PROP_INT, PROP_PIXEL); - RNA_def_property_range(prop, 1, 100); - RNA_def_property_ui_text(prop, "Handle Vertex Size", ""); - RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - } -} - static void rna_def_userdef_theme_spaces_gpencil(StructRNA *srna) { PropertyRNA *prop; @@ -2812,10 +2777,6 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna) rna_def_userdef_theme_spaces_edge(srna); rna_def_userdef_theme_spaces_face(srna); - /* Mesh Object specific curves. */ - - rna_def_userdef_theme_spaces_curves(srna, true, true, true, false); - prop = RNA_def_property(srna, "extra_edge_len", PROP_FLOAT, PROP_COLOR_GAMMA); RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Edge Length Text", ""); @@ -2857,6 +2818,44 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Custom Normal", ""); RNA_def_property_update(prop, 0, "rna_userdef_update"); + /* Curve Object specific */ + + prop = RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "nurb_uline"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "NURBS U Lines", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "nurb_vline", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "nurb_vline"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "NURBS V Lines", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "nurb_sel_uline", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "nurb_sel_uline"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "NURBS Active U Lines", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "nurb_sel_vline", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "nurb_sel_vline"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "NURBS Active V Lines", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "act_spline", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "act_spline"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Active Spline", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + + prop = RNA_def_property(srna, "lastsel_point", PROP_FLOAT, PROP_COLOR_GAMMA); + RNA_def_property_float_sdna(prop, nullptr, "lastsel_point"); + RNA_def_property_array(prop, 3); + RNA_def_property_ui_text(prop, "Last Selected Point", ""); + RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); + /* Armature Object specific. */ prop = RNA_def_property(srna, "bone_pose", PROP_FLOAT, PROP_COLOR_GAMMA); @@ -2985,7 +2984,6 @@ static void rna_def_userdef_theme_space_graph(BlenderRNA *brna) RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); rna_def_userdef_theme_spaces_vertex(srna, true); - rna_def_userdef_theme_spaces_curves(srna, false, true, true, true); } static void rna_def_userdef_theme_space_file(BlenderRNA *brna) @@ -3636,8 +3634,6 @@ static void rna_def_userdef_theme_space_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Metadata Text", ""); RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - rna_def_userdef_theme_spaces_curves(srna, false, false, false, true); - rna_def_userdef_theme_spaces_paint_curves(srna); } @@ -4335,8 +4331,6 @@ static void rna_def_userdef_theme_space_clip(BlenderRNA *brna) RNA_def_property_array(prop, 3); RNA_def_property_ui_text(prop, "Metadata Text", ""); RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); - - rna_def_userdef_theme_spaces_curves(srna, false, false, false, true); } static void rna_def_userdef_theme_space_topbar(BlenderRNA *brna)