UI: Theme: Generalize geometry attribute properties

This PR generalizes properties for geometry (currently mesh only) attributes
found in 3D Viewport theme, namely:

- Combine "Edge Bevel" and "Vertex Bevel" into one "Bevel" property.
- Combine "Freestyle Edge Mark" and "Freestyle Face Mark" into one "Freestyle" property.
- Remove word "Edge" from Crease, Sharp, and Seam properties, to match others.
- Group all of the above together in the UI.

This is a breaking change (that will be handled with others in migration),
but doesn't introduce any visual changes in the default theme (and almost any theme).

Pull Request: https://projects.blender.org/blender/blender/pulls/146732
This commit is contained in:
Nika Kutsniashvili
2025-09-25 14:02:46 +02:00
committed by Nika Kutsniashvili
parent 1a0a35ac93
commit 28b97afda2
14 changed files with 102 additions and 125 deletions

View File

@@ -1 +1 @@
<svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_bevel_weight" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg> <svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_bevel" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1 +1 @@
<svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_mesh_crease" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg> <svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_crease" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1 +1 @@
<svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_edge_seam" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg> <svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_seam" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -1 +1 @@
<svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_edge_sharp" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path id="blender_text" d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg> <svg height="1600" viewBox="0 0 1500 1600" width="1500" xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"><sodipodi:namedview pagecolor="#303030" showgrid="true"><inkscape:grid id="grid5" units="px" spacingx="100" spacingy="100" color="#4772b3" opacity="0.2" visible="true" /></sodipodi:namedview><g enable-background="new" transform="matrix(0 -100 -100 0 19302.143 4198.242)"><g id="blender_sharp" fill="#fff"><path d="m27.486328 183.01367c-.276131.00003-.499972.22387-.5.5v2c.000028.27613.223869.49997.5.5h9c.276131-.00003.499972-.22387.5-.5v-2c-.000028-.27613-.223869-.49997-.5-.5z" fill-rule="evenodd"/></g><g id="blender_text" fill="#fff"><path id="blender_text" d="m31.478516 179.02148c-.1326.00003-.259761.0527-.353516.14649l-1.992188 1.99219c-.490839.47125.235779 1.19787.707032.70703l1.845703-1.84571h8.292969v8.29297l-2.707032 2.70703h-8.292968l.0072-4.00727-1-.002-.0072 4.50727c-.0011.27689.223106.50192.5.50195h9c.132599-.00002.259759-.0527.353515-.14648l3-3c.09377-.0938.14646-.22092.146485-.35352v-9c-.000028-.27613-.223869-.49997-.5-.5z" opacity=".6"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -373,20 +373,20 @@ const bTheme U_theme_default = {
.transform = RGBA(0xffffffff), .transform = RGBA(0xffffffff),
.vertex = RGBA(0x000000ff), .vertex = RGBA(0x000000ff),
.vertex_select = RGBA(0xff7a00ff), .vertex_select = RGBA(0xff7a00ff),
.vertex_bevel = RGBA(0x00a5ffff),
.edge = RGBA(0x000000ff), .edge = RGBA(0x000000ff),
.edge_select = RGBA(0xff9900ff), .edge_select = RGBA(0xff9900ff),
.edge_mode_select = RGBA(0xffd800ff), .edge_mode_select = RGBA(0xffd800ff),
.edge_seam = RGBA(0xdb2512ff),
.edge_sharp = RGBA(0x00ffffff),
.edge_crease = RGBA(0xcc0099ff),
.edge_bevel = RGBA(0x00a5ffff),
.face = RGBA(0xffffff02), .face = RGBA(0xffffff02),
.face_select = RGBA(0xffa30033), .face_select = RGBA(0xffa30033),
.face_mode_select = RGBA(0xffb70033), .face_mode_select = RGBA(0xffb70033),
.face_retopology = RGBA(0x50c8ff0f), .face_retopology = RGBA(0x50c8ff0f),
.face_back = RGBA(0xff0000b3), .face_back = RGBA(0xff0000b3),
.face_front = RGBA(0x0000ff00), .face_front = RGBA(0x0000ff00),
.bevel = RGBA(0x00a5ffff),
.seam = RGBA(0xdb2512ff),
.sharp = RGBA(0x00ffffff),
.crease = RGBA(0xcc0099ff),
.freestyle = RGBA(0x7fff7f4d),
.extra_edge_len = RGBA(0x150806ff), .extra_edge_len = RGBA(0x150806ff),
.extra_edge_angle = RGBA(0x4d4d00ff), .extra_edge_angle = RGBA(0x4d4d00ff),
.extra_face_angle = RGBA(0x0000ccff), .extra_face_angle = RGBA(0x0000ccff),
@@ -401,8 +401,6 @@ const bTheme U_theme_default = {
.before_current_frame = RGBA(0xf22e23ff), .before_current_frame = RGBA(0xf22e23ff),
.after_current_frame = RGBA(0x78f244ff), .after_current_frame = RGBA(0x78f244ff),
.time_gp_keyframe = RGBA(0x7a9b14ff), .time_gp_keyframe = RGBA(0x7a9b14ff),
.freestyle_edge_mark = RGBA(0x7fff7fff),
.freestyle_face_mark = RGBA(0x7fff7f4d),
.nurb_uline = RGBA(0x909000ff), .nurb_uline = RGBA(0x909000ff),
.nurb_vline = RGBA(0x803060ff), .nurb_vline = RGBA(0x803060ff),
.act_spline = RGBA(0xdb2512ff), .act_spline = RGBA(0xdb2512ff),

View File

@@ -487,21 +487,19 @@
vertex="#000000" vertex="#000000"
vertex_select="#ff7a00" vertex_select="#ff7a00"
vertex_size="3" vertex_size="3"
vertex_bevel="#00a5ff"
vertex_unreferenced="#000000" vertex_unreferenced="#000000"
edge_select="#ff9900" edge_select="#ff9900"
edge_mode_select="#ffd800" edge_mode_select="#ffd800"
edge_seam="#db2512"
edge_sharp="#00ffff"
edge_crease="#cc0099"
edge_bevel="#00a5ff"
freestyle_edge_mark="#7fff7f"
face="#00000012" face="#00000012"
face_select="#ffa30033" face_select="#ffa30033"
face_mode_select="#ffb70033" face_mode_select="#ffb70033"
facedot_size="4" facedot_size="4"
freestyle_face_mark="#7fff7f33"
face_retopology="#50c8ff1e" face_retopology="#50c8ff1e"
bevel="#00a5ff"
seam="#db2512"
sharp="#00ffff"
crease="#cc0099"
freestyle="#7fff7f33"
face_back="#ff0000b3" face_back="#ff0000b3"
face_front="#0000ff00" face_front="#0000ff00"
nurb_uline="#909000" nurb_uline="#909000"

View File

@@ -27,7 +27,7 @@
/* Blender file format version. */ /* Blender file format version. */
#define BLENDER_FILE_VERSION BLENDER_VERSION #define BLENDER_FILE_VERSION BLENDER_VERSION
#define BLENDER_FILE_SUBVERSION 90 #define BLENDER_FILE_SUBVERSION 91
/* Minimum Blender version that supports reading file written with the current /* Minimum Blender version that supports reading file written with the current
* version. Older Blender versions will test this and cancel loading the file, showing a warning to * version. Older Blender versions will test this and cancel loading the file, showing a warning to

View File

@@ -367,6 +367,14 @@ static void do_versions_theme(const UserDef *userdef, bTheme *btheme)
FROM_DEFAULT_V4_UCHAR(regions.scrubbing.time_marker_selected); FROM_DEFAULT_V4_UCHAR(regions.scrubbing.time_marker_selected);
} }
if (!USER_VERSION_ATLEAST(500, 91)) {
FROM_DEFAULT_V4_UCHAR(space_view3d.bevel);
FROM_DEFAULT_V4_UCHAR(space_view3d.seam);
FROM_DEFAULT_V4_UCHAR(space_view3d.sharp);
FROM_DEFAULT_V4_UCHAR(space_view3d.crease);
FROM_DEFAULT_V4_UCHAR(space_view3d.freestyle);
}
/** /**
* Always bump subversion in BKE_blender_version.h when adding versioning * Always bump subversion in BKE_blender_version.h when adding versioning
* code here, and wrap it inside a USER_VERSION_ATLEAST check. * code here, and wrap it inside a USER_VERSION_ATLEAST check.

View File

@@ -268,10 +268,10 @@ void Resources::update_theme_settings(const DRWContext *ctx, const State &state)
UI_GetThemeColor4fv(TH_GP_VERTEX, gb.colors.gpencil_vertex); UI_GetThemeColor4fv(TH_GP_VERTEX, gb.colors.gpencil_vertex);
UI_GetThemeColor4fv(TH_GP_VERTEX_SELECT, gb.colors.gpencil_vertex_select); UI_GetThemeColor4fv(TH_GP_VERTEX_SELECT, gb.colors.gpencil_vertex_select);
UI_GetThemeColor4fv(TH_EDGE_SEAM, gb.colors.edge_seam); UI_GetThemeColor4fv(TH_SEAM, gb.colors.edge_seam);
UI_GetThemeColor4fv(TH_EDGE_SHARP, gb.colors.edge_sharp); UI_GetThemeColor4fv(TH_SHARP, gb.colors.edge_sharp);
UI_GetThemeColor4fv(TH_EDGE_CREASE, gb.colors.edge_crease); UI_GetThemeColor4fv(TH_CREASE, gb.colors.edge_crease);
UI_GetThemeColor4fv(TH_EDGE_BEVEL, gb.colors.edge_bweight); UI_GetThemeColor4fv(TH_BEVEL, gb.colors.edge_bweight);
UI_GetThemeColor4fv(TH_FACE, gb.colors.face); UI_GetThemeColor4fv(TH_FACE, gb.colors.face);
UI_GetThemeColor4fv(TH_FACE_SELECT, gb.colors.face_select); UI_GetThemeColor4fv(TH_FACE_SELECT, gb.colors.face_select);
UI_GetThemeColor4fv(TH_FACE_MODE_SELECT, gb.colors.face_mode_select); UI_GetThemeColor4fv(TH_FACE_MODE_SELECT, gb.colors.face_mode_select);
@@ -299,8 +299,8 @@ void Resources::update_theme_settings(const DRWContext *ctx, const State &state)
gb.colors.edit_mesh_middle.w); gb.colors.edit_mesh_middle.w);
#ifdef WITH_FREESTYLE #ifdef WITH_FREESTYLE
UI_GetThemeColor4fv(TH_FREESTYLE_EDGE_MARK, gb.colors.edge_freestyle); UI_GetThemeColor4fv(TH_FREESTYLE, gb.colors.edge_freestyle), gb.colors.edge_freestyle[3] = 1.0f;
UI_GetThemeColor4fv(TH_FREESTYLE_FACE_MARK, gb.colors.face_freestyle); UI_GetThemeColor4fv(TH_FREESTYLE, gb.colors.face_freestyle);
#else #else
gb.colors.edge_freestyle = float4(0.0f); gb.colors.edge_freestyle = float4(0.0f);
gb.colors.face_freestyle = float4(0.0f); gb.colors.face_freestyle = float4(0.0f);

View File

@@ -102,7 +102,6 @@ enum ThemeColorID {
TH_EDGE, TH_EDGE,
TH_EDGE_SELECT, /* Stands for edge selection, not edge select mode. */ TH_EDGE_SELECT, /* Stands for edge selection, not edge select mode. */
TH_EDGE_MODE_SELECT, TH_EDGE_MODE_SELECT,
TH_EDGE_SEAM,
TH_FACE, TH_FACE,
TH_FACE_SELECT, /* Stands for face selection, not face select mode. */ TH_FACE_SELECT, /* Stands for face selection, not face select mode. */
TH_FACE_MODE_SELECT, TH_FACE_MODE_SELECT,
@@ -233,7 +232,6 @@ enum ThemeColorID {
TH_SEQ_TEXT_CURSOR, TH_SEQ_TEXT_CURSOR,
TH_SEQ_SELECTED_TEXT, TH_SEQ_SELECTED_TEXT,
TH_EDGE_SHARP,
TH_EDITMESH_ACTIVE, TH_EDITMESH_ACTIVE,
TH_HANDLE_VERTEX, TH_HANDLE_VERTEX,
@@ -250,8 +248,6 @@ enum ThemeColorID {
TH_PREVIEW_BACK, TH_PREVIEW_BACK,
TH_EDGE_CREASE,
TH_DRAWEXTRA_EDGELEN, TH_DRAWEXTRA_EDGELEN,
TH_DRAWEXTRA_EDGEANG, TH_DRAWEXTRA_EDGEANG,
TH_DRAWEXTRA_FACEAREA, TH_DRAWEXTRA_FACEAREA,
@@ -286,9 +282,6 @@ enum ThemeColorID {
TH_UV_SHADOW, TH_UV_SHADOW,
TH_FREESTYLE_EDGE_MARK,
TH_FREESTYLE_FACE_MARK,
TH_MATCH, /* highlight color for search matches */ TH_MATCH, /* highlight color for search matches */
TH_SELECT_HIGHLIGHT, /* highlight color for selected outliner item */ TH_SELECT_HIGHLIGHT, /* highlight color for selected outliner item */
TH_SELECT_ACTIVE, /* highlight color for active outliner item */ TH_SELECT_ACTIVE, /* highlight color for active outliner item */
@@ -371,8 +364,11 @@ enum ThemeColorID {
TH_METADATA_BG, TH_METADATA_BG,
TH_METADATA_TEXT, TH_METADATA_TEXT,
TH_EDGE_BEVEL, TH_BEVEL,
TH_VERTEX_BEVEL, TH_CREASE,
TH_SEAM,
TH_SHARP,
TH_FREESTYLE,
}; };
/* Specific defines per space should have higher define values. */ /* Specific defines per space should have higher define values. */

View File

@@ -1551,10 +1551,10 @@ static void svg_replace_color_attributes(std::string &svg,
{"blender_tool_transform", tool_transform}, {"blender_tool_transform", tool_transform},
{"blender_tool_white", tool_white}, {"blender_tool_white", tool_white},
{"blender_tool_red", tool_red}, {"blender_tool_red", tool_red},
{"blender_bevel_weight", nullptr, TH_EDGE_BEVEL}, {"blender_bevel", nullptr, TH_BEVEL},
{"blender_mesh_crease", nullptr, TH_EDGE_CREASE}, {"blender_crease", nullptr, TH_CREASE},
{"blender_edge_seam", nullptr, TH_EDGE_SEAM}, {"blender_seam", nullptr, TH_SEAM},
{"blender_edge_sharp", nullptr, TH_EDGE_SHARP}, {"blender_sharp", nullptr, TH_SHARP},
}; };
for (const ColorItem &item : items) { for (const ColorItem &item : items) {

View File

@@ -382,9 +382,6 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_VERTEX_ACTIVE: case TH_VERTEX_ACTIVE:
cp = ts->vertex_active; cp = ts->vertex_active;
break; break;
case TH_VERTEX_BEVEL:
cp = ts->vertex_bevel;
break;
case TH_VERTEX_UNREFERENCED: case TH_VERTEX_UNREFERENCED:
cp = ts->vertex_unreferenced; cp = ts->vertex_unreferenced;
break; break;
@@ -409,18 +406,6 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_EDGE_MODE_SELECT: case TH_EDGE_MODE_SELECT:
cp = ts->edge_mode_select; cp = ts->edge_mode_select;
break; break;
case TH_EDGE_BEVEL:
cp = btheme->space_view3d.edge_bevel;
break;
case TH_EDGE_CREASE:
cp = btheme->space_view3d.edge_crease;
break;
case TH_EDGE_SEAM:
cp = btheme->space_view3d.edge_seam;
break;
case TH_EDGE_SHARP:
cp = btheme->space_view3d.edge_sharp;
break;
case TH_EDITMESH_ACTIVE: case TH_EDITMESH_ACTIVE:
cp = ts->editmesh_active; cp = ts->editmesh_active;
break; break;
@@ -445,6 +430,23 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
case TH_FACEDOT_SIZE: case TH_FACEDOT_SIZE:
cp = &ts->facedot_size; cp = &ts->facedot_size;
break; break;
case TH_BEVEL:
cp = btheme->space_view3d.bevel;
break;
case TH_CREASE:
cp = btheme->space_view3d.crease;
break;
case TH_SEAM:
cp = btheme->space_view3d.seam;
break;
case TH_SHARP:
cp = btheme->space_view3d.sharp;
break;
case TH_FREESTYLE:
cp = btheme->space_view3d.freestyle;
break;
case TH_DRAWEXTRA_EDGELEN: case TH_DRAWEXTRA_EDGELEN:
cp = ts->extra_edge_len; cp = ts->extra_edge_len;
break; break;
@@ -598,13 +600,6 @@ const uchar *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid)
cp = btheme->common.curves.handle_sel_auto_clamped; cp = btheme->common.curves.handle_sel_auto_clamped;
break; break;
case TH_FREESTYLE_EDGE_MARK:
cp = ts->freestyle_edge_mark;
break;
case TH_FREESTYLE_FACE_MARK:
cp = ts->freestyle_face_mark;
break;
case TH_SYNTAX_B: case TH_SYNTAX_B:
cp = ts->syntaxb; cp = ts->syntaxb;
break; break;

View File

@@ -316,10 +316,8 @@ typedef struct ThemeSpace {
unsigned char wire[4], wire_edit[4], select[4]; unsigned char wire[4], wire_edit[4], select[4];
unsigned char lamp[4], speaker[4], empty[4], camera[4]; unsigned char lamp[4], speaker[4], empty[4], camera[4];
unsigned char active[4], transform[4]; unsigned char active[4], transform[4];
unsigned char vertex[4], vertex_select[4], vertex_active[4], vertex_bevel[4], unsigned char vertex[4], vertex_select[4], vertex_active[4], vertex_unreferenced[4];
vertex_unreferenced[4];
unsigned char edge[4], edge_select[4], edge_mode_select[4]; unsigned char edge[4], edge_select[4], edge_mode_select[4];
unsigned char edge_seam[4], edge_sharp[4], edge_crease[4], edge_bevel[4];
/** Solid faces. */ /** Solid faces. */
unsigned char face[4], face_select[4], face_mode_select[4], face_retopology[4]; unsigned char face[4], face_select[4], face_mode_select[4], face_retopology[4];
unsigned char face_back[4], face_front[4]; unsigned char face_back[4], face_front[4];
@@ -332,7 +330,9 @@ typedef struct ThemeSpace {
unsigned char strip[4], strip_select[4]; unsigned char strip[4], strip_select[4];
unsigned char before_current_frame[4], after_current_frame[4]; unsigned char before_current_frame[4], after_current_frame[4];
unsigned char time_gp_keyframe[4]; unsigned char time_gp_keyframe[4];
unsigned char freestyle_edge_mark[4], freestyle_face_mark[4];
/** Geometry attributes. */
unsigned char bevel[4], seam[4], sharp[4], crease[4], freestyle[4];
unsigned char nurb_uline[4], nurb_vline[4]; unsigned char nurb_uline[4], nurb_vline[4];
unsigned char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4]; unsigned char act_spline[4], nurb_sel_uline[4], nurb_sel_vline[4];

View File

@@ -2617,9 +2617,7 @@ static void rna_def_userdef_theme_spaces_gradient(StructRNA *srna)
RNA_def_property_ui_text(prop, "Theme Space", "Settings for space"); RNA_def_property_ui_text(prop, "Theme Space", "Settings for space");
} }
static void rna_def_userdef_theme_spaces_vertex(StructRNA *srna, static void rna_def_userdef_theme_spaces_vertex(StructRNA *srna, const bool has_vertex_active)
const bool has_vertex_active,
const bool has_vertex_attributes)
{ {
PropertyRNA *prop; PropertyRNA *prop;
@@ -2644,18 +2642,6 @@ static void rna_def_userdef_theme_spaces_vertex(StructRNA *srna,
RNA_def_property_range(prop, 1, 32); RNA_def_property_range(prop, 1, 32);
RNA_def_property_ui_text(prop, "Vertex Size", ""); RNA_def_property_ui_text(prop, "Vertex Size", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
if (has_vertex_attributes) {
prop = RNA_def_property(srna, "vertex_bevel", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Vertex Bevel", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "vertex_unreferenced", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Vertex Group Unreferenced", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
} }
static void rna_def_userdef_theme_spaces_edge(StructRNA *srna) static void rna_def_userdef_theme_spaces_edge(StructRNA *srna)
@@ -2671,37 +2657,9 @@ static void rna_def_userdef_theme_spaces_edge(StructRNA *srna)
RNA_def_property_array(prop, 3); RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Edge Mode Selection", ""); RNA_def_property_ui_text(prop, "Edge Mode Selection", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "edge_seam", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Edge Seam", "");
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "edge_sharp", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Edge Sharp", "");
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "edge_crease", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Edge Crease", "");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_WINDOWMANAGER);
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "edge_bevel", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Edge Bevel", "");
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "freestyle_edge_mark", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Freestyle Edge Mark", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
} }
static void rna_def_userdef_theme_spaces_face(StructRNA *srna, static void rna_def_userdef_theme_spaces_face(StructRNA *srna, const bool has_face_orientation)
const bool has_face_attributes,
const bool has_face_orientation)
{ {
PropertyRNA *prop; PropertyRNA *prop;
@@ -2725,18 +2683,6 @@ static void rna_def_userdef_theme_spaces_face(StructRNA *srna,
RNA_def_property_ui_text(prop, "Face Dot Size", ""); RNA_def_property_ui_text(prop, "Face Dot Size", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
if (has_face_attributes) {
prop = RNA_def_property(srna, "freestyle_face_mark", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Freestyle Face Mark", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "face_retopology", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Face Retopology", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
}
if (has_face_orientation) { if (has_face_orientation) {
prop = RNA_def_property(srna, "face_back", PROP_FLOAT, PROP_COLOR_GAMMA); prop = RNA_def_property(srna, "face_back", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4); RNA_def_property_array(prop, 4);
@@ -2878,9 +2824,35 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
/* Mesh Object specific */ /* Mesh Object specific */
rna_def_userdef_theme_spaces_vertex(srna, false, true); rna_def_userdef_theme_spaces_vertex(srna, false);
rna_def_userdef_theme_spaces_edge(srna); rna_def_userdef_theme_spaces_edge(srna);
rna_def_userdef_theme_spaces_face(srna, true, true); rna_def_userdef_theme_spaces_face(srna, true);
prop = RNA_def_property(srna, "bevel", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Bevel", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "seam", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Seam", "");
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "sharp", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Sharp", "");
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "crease", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Crease", "");
RNA_def_property_translation_context(prop, BLT_I18NCONTEXT_ID_WINDOWMANAGER);
RNA_def_property_update(prop, 0, "rna_userdef_gpu_update");
prop = RNA_def_property(srna, "freestyle", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Freestyle", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "extra_edge_len", PROP_FLOAT, PROP_COLOR_GAMMA); prop = RNA_def_property(srna, "extra_edge_len", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3); RNA_def_property_array(prop, 3);
@@ -2923,6 +2895,16 @@ static void rna_def_userdef_theme_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Custom Normal", ""); RNA_def_property_ui_text(prop, "Custom Normal", "");
RNA_def_property_update(prop, 0, "rna_userdef_update"); RNA_def_property_update(prop, 0, "rna_userdef_update");
prop = RNA_def_property(srna, "vertex_unreferenced", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Vertex Group Unreferenced", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
prop = RNA_def_property(srna, "face_retopology", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Face Retopology", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
/* Curve Object specific */ /* Curve Object specific */
prop = RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA); prop = RNA_def_property(srna, "nurb_uline", PROP_FLOAT, PROP_COLOR_GAMMA);
@@ -3063,7 +3045,7 @@ static void rna_def_userdef_theme_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Grid", ""); RNA_def_property_ui_text(prop, "Grid", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
rna_def_userdef_theme_spaces_vertex(srna, true, false); rna_def_userdef_theme_spaces_vertex(srna, true);
} }
static void rna_def_userdef_theme_space_file(BlenderRNA *brna) static void rna_def_userdef_theme_space_file(BlenderRNA *brna)
@@ -3600,8 +3582,8 @@ static void rna_def_userdef_theme_space_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Grid", ""); RNA_def_property_ui_text(prop, "Grid", "");
RNA_def_property_update(prop, 0, "rna_userdef_theme_update"); RNA_def_property_update(prop, 0, "rna_userdef_theme_update");
rna_def_userdef_theme_spaces_vertex(srna, false, false); rna_def_userdef_theme_spaces_vertex(srna, false);
rna_def_userdef_theme_spaces_face(srna, false, false); rna_def_userdef_theme_spaces_face(srna, false);
prop = RNA_def_property(srna, "editmesh_active", PROP_FLOAT, PROP_COLOR_GAMMA); prop = RNA_def_property(srna, "editmesh_active", PROP_FLOAT, PROP_COLOR_GAMMA);
RNA_def_property_array(prop, 4); RNA_def_property_array(prop, 4);