Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Eisel <julian@blender.org>2020-03-17 22:20:22 +0300
committerJulian Eisel <julian@blender.org>2020-03-17 22:20:22 +0300
commita640587e25e43be8007fa0090a59fd9bb6d51e39 (patch)
treeef780ec436232535a9e36ac233de1792ee8ba9e4
parent99eb95337f74f1a303c774902ea29f7d378bac1b (diff)
parent892637f60afbbb787334caa26f5342baf1d4a7d7 (diff)
Merge branch 'temp-openxr-blenderside' into soc-2019-openxrsoc-2019-openxr
-rw-r--r--build_files/build_environment/cmake/harvest.cmake2
-rw-r--r--build_files/build_environment/cmake/xr_openxr.cmake1
-rw-r--r--extern/mantaflow/helper/pwrapper/registry.cpp4
-rw-r--r--extern/mantaflow/helper/pwrapper/registry.h2
-rw-r--r--extern/mantaflow/preprocessed/gitinfo.h2
-rw-r--r--intern/cycles/render/colorspace.cpp85
-rw-r--r--intern/cycles/render/colorspace.h4
-rw-r--r--intern/cycles/render/image.cpp2
-rw-r--r--intern/mantaflow/intern/manta_python_API.cpp2
-rw-r--r--release/scripts/presets/interface_theme/deep_grey.xml1481
-rw-r--r--release/scripts/presets/interface_theme/maya.xml1481
-rw-r--r--release/scripts/presets/interface_theme/minimal_dark.xml1481
-rw-r--r--release/scripts/presets/interface_theme/modo.xml1481
-rw-r--r--release/scripts/presets/interface_theme/print_friendly.xml1481
-rw-r--r--release/scripts/presets/interface_theme/white.xml1470
-rw-r--r--release/scripts/presets/interface_theme/xsi.xml1481
-rw-r--r--release/scripts/startup/bl_ui/properties_grease_pencil_common.py6
-rw-r--r--release/scripts/startup/bl_ui/properties_material_gpencil.py14
-rw-r--r--release/scripts/startup/bl_ui/properties_physics_fluid.py3
-rw-r--r--release/scripts/startup/bl_ui/space_userpref.py21
-rw-r--r--source/blender/blenkernel/BKE_blender_undo.h5
-rw-r--r--source/blender/blenkernel/BKE_lib_id.h5
-rw-r--r--source/blender/blenkernel/BKE_main.h5
-rw-r--r--source/blender/blenkernel/BKE_mesh.h2
-rw-r--r--source/blender/blenkernel/BKE_multires.h15
-rw-r--r--source/blender/blenkernel/BKE_ocean.h2
-rw-r--r--source/blender/blenkernel/BKE_scene.h4
-rw-r--r--source/blender/blenkernel/BKE_undo_system.h3
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c1
-rw-r--r--source/blender/blenkernel/intern/blender_undo.c13
-rw-r--r--source/blender/blenkernel/intern/blendfile.c38
-rw-r--r--source/blender/blenkernel/intern/crazyspace.c8
-rw-r--r--source/blender/blenkernel/intern/fluid.c124
-rw-r--r--source/blender/blenkernel/intern/gpencil.c33
-rw-r--r--source/blender/blenkernel/intern/lib_id.c48
-rw-r--r--source/blender/blenkernel/intern/lib_override.c2
-rw-r--r--source/blender/blenkernel/intern/lib_query.c2
-rw-r--r--source/blender/blenkernel/intern/mesh.c4
-rw-r--r--source/blender/blenkernel/intern/multires.c64
-rw-r--r--source/blender/blenkernel/intern/multires_reshape.c31
-rw-r--r--source/blender/blenkernel/intern/multires_reshape.h94
-rw-r--r--source/blender/blenkernel/intern/multires_reshape_apply_base.c57
-rw-r--r--source/blender/blenkernel/intern/multires_reshape_util.c69
-rw-r--r--source/blender/blenkernel/intern/scene.c128
-rw-r--r--source/blender/blenkernel/intern/undo_system.c3
-rw-r--r--source/blender/blenloader/BLO_readfile.h9
-rw-r--r--source/blender/blenloader/BLO_undofile.h4
-rw-r--r--source/blender/blenloader/intern/readblenentry.c12
-rw-r--r--source/blender/blenloader/intern/readfile.c324
-rw-r--r--source/blender/blenloader/intern/readfile.h23
-rw-r--r--source/blender/blenloader/intern/undofile.c9
-rw-r--r--source/blender/blenloader/intern/writefile.c23
-rw-r--r--source/blender/depsgraph/DEG_depsgraph.h5
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_relations.cc15
-rw-r--r--source/blender/depsgraph/intern/depsgraph.cc23
-rw-r--r--source/blender/depsgraph/intern/depsgraph_tag.cc4
-rw-r--r--source/blender/draw/engines/overlay/overlay_edit_mesh.c2
-rw-r--r--source/blender/draw/engines/overlay/overlay_extra.c11
-rw-r--r--source/blender/editors/armature/armature_naming.c6
-rw-r--r--source/blender/editors/gpencil/gpencil_data.c93
-rw-r--r--source/blender/editors/gpencil/gpencil_edit.c12
-rw-r--r--source/blender/editors/gpencil/gpencil_intern.h12
-rw-r--r--source/blender/editors/gpencil/gpencil_ops.c12
-rw-r--r--source/blender/editors/gpencil/gpencil_primitive.c2
-rw-r--r--source/blender/editors/physics/physics_fluid.c6
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c5
-rw-r--r--source/blender/editors/space_node/node_draw.c19
-rw-r--r--source/blender/editors/space_view3d/space_view3d.c6
-rw-r--r--source/blender/editors/space_view3d/view3d_edit.c8
-rw-r--r--source/blender/editors/space_view3d/view3d_utils.c9
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c10
-rw-r--r--source/blender/editors/transform/transform_convert.c2
-rw-r--r--source/blender/editors/undo/memfile_undo.c120
-rw-r--r--source/blender/makesdna/DNA_ID.h12
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h3
-rw-r--r--source/blender/makesdna/DNA_view3d_types.h6
-rw-r--r--source/blender/makesdna/intern/dna_rename_defs.h13
-rw-r--r--source/blender/makesrna/intern/rna_fluid.c4
-rw-r--r--source/blender/makesrna/intern/rna_space.c10
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c8
-rw-r--r--source/blender/modifiers/intern/MOD_triangulate.c8
-rw-r--r--source/creator/blender.map1
-rw-r--r--source/creator/osx_locals.map1
83 files changed, 1287 insertions, 10829 deletions
diff --git a/build_files/build_environment/cmake/harvest.cmake b/build_files/build_environment/cmake/harvest.cmake
index 6801ef284d0..4d27509890f 100644
--- a/build_files/build_environment/cmake/harvest.cmake
+++ b/build_files/build_environment/cmake/harvest.cmake
@@ -162,7 +162,7 @@ harvest(opensubdiv/lib opensubdiv/lib "*.a")
harvest(openvdb/include/openvdb openvdb/include/openvdb "*.h")
harvest(openvdb/lib openvdb/lib "*.a")
harvest(xr_openxr_sdk/include/openxr xr_openxr_sdk/include/openxr "*.h")
-harvest(xr_openxr_sdk/lib xr_openxr_sdk/src/loader "*.a")
+harvest(xr_openxr_sdk/lib xr_openxr_sdk/lib "*.a")
harvest(osl/bin osl/bin "oslc")
harvest(osl/include osl/include "*.h")
harvest(osl/lib osl/lib "*.a")
diff --git a/build_files/build_environment/cmake/xr_openxr.cmake b/build_files/build_environment/cmake/xr_openxr.cmake
index b0751e418b9..3eb613e3a42 100644
--- a/build_files/build_environment/cmake/xr_openxr.cmake
+++ b/build_files/build_environment/cmake/xr_openxr.cmake
@@ -29,6 +29,7 @@ if(UNIX AND NOT APPLE)
-DBUILD_WITH_WAYLAND_HEADERS=OFF
-DBUILD_WITH_XCB_HEADERS=OFF
-DBUILD_WITH_XLIB_HEADERS=ON
+ -DCMAKE_CXX_FLAGS=-DDISABLE_STD_FILESYSTEM=1
)
endif()
diff --git a/extern/mantaflow/helper/pwrapper/registry.cpp b/extern/mantaflow/helper/pwrapper/registry.cpp
index 3cdc2248b98..5b313e52fb4 100644
--- a/extern/mantaflow/helper/pwrapper/registry.cpp
+++ b/extern/mantaflow/helper/pwrapper/registry.cpp
@@ -192,7 +192,7 @@ int cbDisableConstructor(PyObject *self, PyObject *args, PyObject *kwds)
return -1;
}
-PyMODINIT_FUNC PyInit_Main(void)
+PyMODINIT_FUNC PyInit_manta_main(void)
{
MantaEnsureRegistration();
#if PY_MAJOR_VERSION >= 3
@@ -567,7 +567,7 @@ void WrapperRegistry::construct(const string &scriptname, const vector<string> &
registerDummyTypes();
// work around for certain gcc versions, cast to char*
- PyImport_AppendInittab((char *)gDefaultModuleName.c_str(), PyInit_Main);
+ PyImport_AppendInittab((char *)gDefaultModuleName.c_str(), PyInit_manta_main);
}
inline PyObject *castPy(PyTypeObject *p)
diff --git a/extern/mantaflow/helper/pwrapper/registry.h b/extern/mantaflow/helper/pwrapper/registry.h
index 139863df85d..d9d2bbb624b 100644
--- a/extern/mantaflow/helper/pwrapper/registry.h
+++ b/extern/mantaflow/helper/pwrapper/registry.h
@@ -62,7 +62,7 @@ void MantaEnsureRegistration();
#ifdef BLENDER
# ifdef PyMODINIT_FUNC
-PyMODINIT_FUNC PyInit_Main(void);
+PyMODINIT_FUNC PyInit_manta_main(void);
# endif
#endif
diff --git a/extern/mantaflow/preprocessed/gitinfo.h b/extern/mantaflow/preprocessed/gitinfo.h
index 574b655d6ce..208d8008a7e 100644
--- a/extern/mantaflow/preprocessed/gitinfo.h
+++ b/extern/mantaflow/preprocessed/gitinfo.h
@@ -1,3 +1,3 @@
-#define MANTA_GIT_VERSION "commit caae2ddea6ea895677aca88df00a130a67eeb6c7"
+#define MANTA_GIT_VERSION "commit 5fbd3d04381b21afce4a593d1fe2d9bc7bef5424"
diff --git a/intern/cycles/render/colorspace.cpp b/intern/cycles/render/colorspace.cpp
index 97a9ba3f012..7684d48756f 100644
--- a/intern/cycles/render/colorspace.cpp
+++ b/intern/cycles/render/colorspace.cpp
@@ -262,58 +262,49 @@ template<typename T> inline void cast_from_float4(T *data, float4 value)
/* Slower versions for other all data types, which needs to convert to float and back. */
template<typename T, bool compress_as_srgb = false>
-inline void processor_apply_pixels(const OCIO::Processor *processor,
- T *pixels,
- size_t width,
- size_t height)
+inline void processor_apply_pixels(const OCIO::Processor *processor, T *pixels, size_t num_pixels)
{
/* TODO: implement faster version for when we know the conversion
* is a simple matrix transform between linear spaces. In that case
* unpremultiply is not needed. */
/* Process large images in chunks to keep temporary memory requirement down. */
- size_t y_chunk_size = max(1, 16 * 1024 * 1024 / (sizeof(float4) * width));
- vector<float4> float_pixels(y_chunk_size * width);
+ const size_t chunk_size = std::min((size_t)(16 * 1024 * 1024), num_pixels);
+ vector<float4> float_pixels(chunk_size);
- for (size_t y0 = 0; y0 < height; y0 += y_chunk_size) {
- size_t y1 = std::min(y0 + y_chunk_size, height);
- size_t i = 0;
+ for (size_t j = 0; j < num_pixels; j += chunk_size) {
+ size_t width = std::min(chunk_size, num_pixels - j);
- for (size_t y = y0; y < y1; y++) {
- for (size_t x = 0; x < width; x++, i++) {
- float4 value = cast_to_float4(pixels + 4 * (y * width + x));
+ for (size_t i = 0; i < width; i++) {
+ float4 value = cast_to_float4(pixels + 4 * (j + i));
- if (!(value.w <= 0.0f || value.w == 1.0f)) {
- float inv_alpha = 1.0f / value.w;
- value.x *= inv_alpha;
- value.y *= inv_alpha;
- value.z *= inv_alpha;
- }
-
- float_pixels[i] = value;
+ if (!(value.w <= 0.0f || value.w == 1.0f)) {
+ float inv_alpha = 1.0f / value.w;
+ value.x *= inv_alpha;
+ value.y *= inv_alpha;
+ value.z *= inv_alpha;
}
+
+ float_pixels[i] = value;
}
- OCIO::PackedImageDesc desc((float *)float_pixels.data(), width, y_chunk_size, 4);
+ OCIO::PackedImageDesc desc((float *)float_pixels.data(), width, 1, 4);
processor->apply(desc);
- i = 0;
- for (size_t y = y0; y < y1; y++) {
- for (size_t x = 0; x < width; x++, i++) {
- float4 value = float_pixels[i];
+ for (size_t i = 0; i < width; i++) {
+ float4 value = float_pixels[i];
- if (compress_as_srgb) {
- value = color_linear_to_srgb_v4(value);
- }
-
- if (!(value.w <= 0.0f || value.w == 1.0f)) {
- value.x *= value.w;
- value.y *= value.w;
- value.z *= value.w;
- }
+ if (compress_as_srgb) {
+ value = color_linear_to_srgb_v4(value);
+ }
- cast_from_float4(pixels + 4 * (y * width + x), value);
+ if (!(value.w <= 0.0f || value.w == 1.0f)) {
+ value.x *= value.w;
+ value.y *= value.w;
+ value.z *= value.w;
}
+
+ cast_from_float4(pixels + 4 * (j + i), value);
}
}
}
@@ -322,9 +313,7 @@ inline void processor_apply_pixels(const OCIO::Processor *processor,
template<typename T>
void ColorSpaceManager::to_scene_linear(ustring colorspace,
T *pixels,
- size_t width,
- size_t height,
- size_t depth,
+ size_t num_pixels,
bool compress_as_srgb)
{
#ifdef WITH_OCIO
@@ -333,23 +322,17 @@ void ColorSpaceManager::to_scene_linear(ustring colorspace,
if (processor) {
if (compress_as_srgb) {
/* Compress output as sRGB. */
- for (size_t z = 0; z < depth; z++) {
- processor_apply_pixels<T, true>(processor, &pixels[z * width * height], width, height);
- }
+ processor_apply_pixels<T, true>(processor, pixels, num_pixels);
}
else {
/* Write output as scene linear directly. */
- for (size_t z = 0; z < depth; z++) {
- processor_apply_pixels<T>(processor, &pixels[z * width * height], width, height);
- }
+ processor_apply_pixels<T>(processor, pixels, num_pixels);
}
}
#else
(void)colorspace;
(void)pixels;
- (void)width;
- (void)height;
- (void)depth;
+ (void)num_pixels;
(void)compress_as_srgb;
#endif
}
@@ -404,9 +387,9 @@ void ColorSpaceManager::free_memory()
}
/* Template instanstations so we don't have to inline functions. */
-template void ColorSpaceManager::to_scene_linear(ustring, uchar *, size_t, size_t, size_t, bool);
-template void ColorSpaceManager::to_scene_linear(ustring, ushort *, size_t, size_t, size_t, bool);
-template void ColorSpaceManager::to_scene_linear(ustring, half *, size_t, size_t, size_t, bool);
-template void ColorSpaceManager::to_scene_linear(ustring, float *, size_t, size_t, size_t, bool);
+template void ColorSpaceManager::to_scene_linear(ustring, uchar *, size_t, bool);
+template void ColorSpaceManager::to_scene_linear(ustring, ushort *, size_t, bool);
+template void ColorSpaceManager::to_scene_linear(ustring, half *, size_t, bool);
+template void ColorSpaceManager::to_scene_linear(ustring, float *, size_t, bool);
CCL_NAMESPACE_END
diff --git a/intern/cycles/render/colorspace.h b/intern/cycles/render/colorspace.h
index 9fea2d6efc6..51d0b121cc0 100644
--- a/intern/cycles/render/colorspace.h
+++ b/intern/cycles/render/colorspace.h
@@ -45,9 +45,7 @@ class ColorSpaceManager {
template<typename T>
static void to_scene_linear(ustring colorspace,
T *pixels,
- size_t width,
- size_t height,
- size_t depth,
+ size_t num_pixels,
bool compress_as_srgb);
/* Efficiently convert pixels to scene linear colorspace at render time,
diff --git a/intern/cycles/render/image.cpp b/intern/cycles/render/image.cpp
index 8868811b5e7..df8226fb79f 100644
--- a/intern/cycles/render/image.cpp
+++ b/intern/cycles/render/image.cpp
@@ -534,7 +534,7 @@ bool ImageManager::file_load_image(Image *img, int texture_limit)
img->metadata.colorspace != u_colorspace_srgb) {
/* Convert to scene linear. */
ColorSpaceManager::to_scene_linear(
- img->metadata.colorspace, pixels, width, height, depth, img->metadata.compress_as_srgb);
+ img->metadata.colorspace, pixels, num_pixels, img->metadata.compress_as_srgb);
}
}
diff --git a/intern/mantaflow/intern/manta_python_API.cpp b/intern/mantaflow/intern/manta_python_API.cpp
index 8f7a396410a..a905e045fd3 100644
--- a/intern/mantaflow/intern/manta_python_API.cpp
+++ b/intern/mantaflow/intern/manta_python_API.cpp
@@ -26,5 +26,5 @@
PyObject *Manta_initPython(void)
{
- return Pb::PyInit_Main();
+ return Pb::PyInit_manta_main();
}
diff --git a/release/scripts/presets/interface_theme/deep_grey.xml b/release/scripts/presets/interface_theme/deep_grey.xml
deleted file mode 100644
index d6a78997eec..00000000000
--- a/release/scripts/presets/interface_theme/deep_grey.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.1"
- menu_shadow_width="10"
- icon_alpha="1"
- icon_saturation="1"
- widget_emboss="#ffffff00"
- editor_outline="#303030"
- widget_text_cursor="#d9d9d9"
- axis_x="#e54444"
- axis_y="#2de579"
- axis_z="#2d89e5"
- gizmo_hi="#ffffff"
- gizmo_primary="#f5f14d"
- gizmo_secondary="#63ffff"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#e6e6e6ff"
- icon_collection="#ccccccff"
- icon_object="#ffa864ff"
- icon_object_data="#98cc98ff"
- icon_modifier="#8cc0ffff"
- icon_shading="#ff8b8bff"
- icon_folder="#bdbdbdff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#333333ff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#b8b8b8ff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#ffffffff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#505050ff"
- item="#333333ff"
- text="#b8b8b8"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#e6e6e6"
- inner="#47474700"
- inner_sel="#cbcbcbff"
- item="#000000ff"
- text="#b8b8b8"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#ffffffff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#505050ff"
- item="#333333ff"
- text="#b8b8b8"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#505050ff"
- item="#c85130ff"
- text="#cccccc"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-10"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#202020"
- inner="#00000019"
- inner_sel="#c85130ff"
- item="#ffffffff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-7"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#202020"
- inner="#595959ff"
- inner_sel="#c85130ff"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#202020"
- inner="#474747ff"
- inner_sel="#c85130ff"
- item="#ffffffff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#202020"
- inner="#474747ff"
- inner_sel="#616161ff"
- item="#333333ff"
- text="#b8b8b8"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#202020"
- inner="#474747ff"
- inner_sel="#c85130ff"
- item="#6b6b6bff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#202020"
- inner="#ffffe1ff"
- inner_sel="#c85130ff"
- item="#646464ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#202020"
- inner="#3f3f3f00"
- inner_sel="#c85130ff"
- item="#b8b8b8ff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#c85130ff"
- item="#6b6b6bff"
- text="#b8b8b8"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#646464b4"
- item="#c85130ff"
- text="#b8b8b8"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#202020"
- inner="#3f3f3f00"
- inner_sel="#c85130ff"
- item="#ffffffff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#53992e"
- inner_anim_sel="#38a600"
- inner_key="#b3ae36"
- inner_key_sel="#b29700"
- inner_driven="#9000cc"
- inner_driven_sel="#9900e6"
- inner_overridden="#00c3c3"
- inner_overridden_sel="#118f8f"
- inner_changed="#cc7529"
- inner_changed_sel="#d26400"
- blend="0.4"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#202020"
- inner="#333333ff"
- inner_sel="#6b6b6bff"
- item="#5a5a5aff"
- text="#b8b8b8"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#51515180"
- clipping_border_3d="#313131ff"
- wire="#000000"
- wire_edit="#000000"
- gp_vertex="#000000"
- gp_vertex_select="#ff8500"
- gp_vertex_size="3"
- text_grease_pencil="#b5e61d"
- object_selected="#00b5ff"
- object_active="#ffaa18"
- text_keyframe="#ddd700"
- camera="#b3ccbe"
- empty="#000000"
- light="#b3ccbe28"
- speaker="#000000"
- vertex="#000000"
- vertex_select="#ffaa18"
- vertex_size="3"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- edge_select="#ffa000"
- edge_seam="#db2512"
- edge_sharp="#00ffff"
- edge_crease="#cc0099"
- edge_bevel="#00a5ff"
- edge_facesel="#4b4b4b"
- freestyle_edge_mark="#7fff7f"
- face="#80808014"
- face_select="#ffa5526c"
- face_dot="#00beb0"
- facedot_size="3"
- freestyle_face_mark="#7fff7f33"
- face_back="#e54444b3"
- face_front="#2d89e5b3"
- nurb_uline="#89908a"
- nurb_vline="#fff8f4"
- nurb_sel_uline="#2400ff"
- nurb_sel_vline="#f0deeb"
- act_spline="#00c6db"
- handle_free="#000000"
- handle_auto="#1c00ff"
- handle_vect="#409030"
- handle_sel_vect="#40c030"
- handle_align="#7b807e"
- handle_sel_free="#000000"
- handle_sel_auto="#9aa3a1"
- handle_sel_align="#f0e6e9"
- lastsel_point="#ffffff"
- extra_edge_len="#fff3fa"
- extra_edge_angle="#202000"
- extra_face_angle="#ffff00"
- extra_face_area="#002000"
- editmesh_active="#ffffff80"
- normal="#22dddd"
- vertex_normal="#2361dd"
- split_normal="#dd23dd"
- bone_pose="#00b5ff"
- bone_pose_active="#ffaa18"
- bone_solid="#b2b2b2"
- bone_locked_weight="#ff000080"
- bundle_solid="#c8c8c8"
- camera_path="#000000"
- skin_root="#b44d4d"
- view_overlay="#000000"
- transform="#ffffff"
- frame_current="#4c9933"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#000000"
- text="#cccccc"
- text_hi="#cccccc"
- header="#47474700"
- header_text="#d9d9d9"
- header_text_hi="#ffffff"
- button="#47474700"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#9e9e9e"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <gradients>
- <ThemeGradientColors
- background_type="SINGLE_COLOR"
- high_gradient="#404040"
- gradient="#383838"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#303030"
- frame_current="#4c9933"
- time_scrub_background="#333333e6"
- time_marker_line="#b8b8b880"
- time_marker_line_selected="#ffaa18e6"
- window_sliders="#969696"
- channels_region="#505050"
- dopesheet_channel="#c85130"
- dopesheet_subchannel="#805543"
- channel_group="#42566d"
- active_channels_group="#326799"
- preview_range="#a14d0066"
- vertex="#000000"
- vertex_select="#ffc832"
- vertex_size="6"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- handle_free="#000000"
- handle_auto="#8d8e90"
- handle_vect="#409030"
- handle_sel_vect="#40c030"
- handle_align="#b6b5b6"
- handle_sel_free="#000000"
- handle_sel_auto="#f0ff40"
- handle_sel_align="#148bce"
- handle_auto_clamped="#7e7e7e"
- handle_sel_auto_clamped="#f0af90"
- lastsel_point="#ffffff"
- handle_vertex="#000000"
- handle_vertex_select="#ffc832"
- handle_vertex_size="5"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#b8b8b8"
- text_hi="#fcfcfc"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b7b7b7"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#474747"
- list_title="#8b8b8b"
- list_text="#b8b8b8"
- list_text_hi="#fff500"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#c85130"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#e4e4e4"
- text="#cacaca"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#ffffff"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#474747ff"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#303030"
- view_sliders="#969696"
- dopesheet_channel="#42566d"
- nla_track="#424242"
- active_action="#a65b1566"
- active_action_unset="#7365494d"
- preview_range="#a14d0066"
- strips="#0c0a0a"
- strips_selected="#ff8c00"
- transition_strips="#1c2630"
- transition_strips_selected="#2e75db"
- meta_strips="#332642"
- meta_strips_selected="#692196"
- sound_strips="#2b3d3d"
- sound_strips_selected="#1f7a7a"
- tweak="#4df31a"
- tweak_duplicate="#d90000"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- frame_current="#4c9933"
- time_scrub_background="#333333e6"
- time_marker_line="#b8b8b880"
- time_marker_line_selected="#ffaa18e6"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b7b7b7"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#474747"
- list_title="#000000"
- list_text="#b8b8b8"
- list_text_hi="#fff500"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#303030"
- frame_current="#4c9933"
- time_scrub_background="#333333e6"
- time_marker_line="#b8b8b880"
- time_marker_line_selected="#ffaa18e6"
- value_sliders="#000000"
- view_sliders="#929292"
- dopesheet_channel="#c8513024"
- dopesheet_subchannel="#80554324"
- channels="#505050ff"
- channels_selected="#60c04044"
- channel_group="#42566d37"
- active_channels_group="#32679955"
- long_key="#1a151580"
- long_key_selected="#ff8c00cc"
- keyframe="#e8e8e8"
- keyframe_selected="#ffbe33"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#94e575"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#5c5656"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#2c2c2cff"
- keyframe_border_selected="#2c2c2cff"
- keyframe_scale_factor="1"
- summary="#3b3b3b6d"
- preview_range="#a14d0066"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#b8b8b8"
- text_hi="#fcfcfc"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b7b7b7"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#474747"
- list_title="#000000"
- list_text="#b8b8b8"
- list_text_hi="#fff500"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000000"
- vertex_select="#ffaa18"
- vertex_size="3"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- face="#ffce990a"
- face_select="#ff85003c"
- face_dot="#ff8500"
- facedot_size="2"
- freestyle_face_mark="#7fff7f33"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#ffffff80"
- wire_edit="#5c5c5c"
- edge_select="#ff8500"
- scope_back="#333333ff"
- preview_stitch_face="#1242b026"
- preview_stitch_edge="#ff8500b2"
- preview_stitch_vert="#ff85007f"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#4c9933"
- metadatabg="#333333"
- metadatatext="#b8b8b8"
- 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"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#cccccc"
- text_hi="#cccccc"
- header="#47474700"
- header_text="#d9d9d9"
- header_text_hi="#b8b8b8"
- button="#47474700"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#404040"
- window_sliders="#a0a0a0"
- movie_strip="#516987"
- movieclip_strip="#8f4c4c"
- image_strip="#8f744b"
- scene_strip="#828f50"
- audio_strip="#2e8f8f"
- effect_strip="#a9547c"
- transition_strip="#a25f6f"
- meta_strip="#6d9183"
- text_strip="#a29700"
- frame_current="#4c9933"
- time_scrub_background="#333333e6"
- time_marker_line="#b8b8b880"
- time_marker_line_selected="#ffaa18e6"
- keyframe="#ff8500"
- draw_action="#607f9e"
- preview_back="#474747"
- metadatabg="#333333"
- metadatatext="#b8b8b8"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#e4e4e4"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b7b7b7"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#cccccc"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#b8b8b8"
- header_text_hi="#ffffff"
- button="#474747ff"
- button_title="#c7c7c7"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#474747ff"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#838383"
- line_numbers_background="#2e2e2e"
- selected_text="#575757"
- cursor="#d9d9d9"
- syntax_builtin="#009eed"
- syntax_symbols="#b8b8b8"
- syntax_special="#009eed"
- syntax_preprocessor="#409090"
- syntax_reserved="#c4753b"
- syntax_comment="#6a9955"
- syntax_string="#f0ad6d"
- syntax_numbers="#48c5e6"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#fefefe"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#b8b8b8"
- header_text_hi="#cccccc"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#00b5ff"
- node_active="#ffaa18"
- wire="#808080"
- wire_inner="#808080"
- wire_select="#ffffff"
- selected_text="#909090"
- node_backdrop="#585858ff"
- converter_node="#7f8080"
- color_node="#4c5975"
- group_node="#3a582cb9"
- group_socket_node="#353b47"
- frame_node="#50505080"
- matte_node="#0076b6"
- distor_node="#292929"
- noodle_curving="2"
- grid_levels="2"
- input_node="#3471ae"
- output_node="#cc6666"
- filter_node="#0076b6"
- vector_node="#7191e2"
- texture_node="#e66d25"
- shader_node="#32995e"
- script_node="#141414"
- pattern_node="#008db6"
- layout_node="#3c3c3c"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#d9d9d9"
- text_hi="#d9d9d9"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b7b7b7"
- button="#47474700"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#a5a5a5"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#fff500"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#2e732e"
- selected_highlight="#575757"
- active="#666666"
- selected_object="#00b5ff"
- active_object="#fff500"
- edited_object="#00806266"
- row_alternate="#4f4f4fff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#e4e4e4"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#ffffff"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#e4e4e4"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#c85130"
- info_selected_text="#ffffff"
- info_error="#801a1aff"
- info_error_text="#d9d9d9"
- info_warning="#3b3b3bff"
- info_warning_text="#ffe100"
- info_info="#1c4180ff"
- info_info_text="#d9d9d9"
- info_debug="#c4c4c4ff"
- info_debug_text="#000000"
- info_property="#3ace87ff"
- info_property_text="#ffffff"
- info_operator="#3ace87ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#e4e4e4"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#000000"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#cccccc"
- text="#b8b8b8"
- text_hi="#d9d9d9"
- header="#474747ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#474747ff"
- execution_buts="#474747ff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#838383"
- line_input="#d9d9d9"
- line_info="#6585a6"
- line_error="#ff404e"
- cursor="#d9d9d9"
- select="#ffffff29"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#e4e4e4"
- text="#000000"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#ffffff"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#7f7f00"
- active_marker="#ffffff"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#4c9933"
- time_scrub_background="#333333e6"
- time_marker_line="#b8b8b880"
- time_marker_line_selected="#ffaa18e6"
- strips="#0c0a0a"
- strips_selected="#ff8c00"
- metadatabg="#333333"
- metadatatext="#b8b8b8"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#474747"
- title="#ffffff"
- text="#b8b8b8"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#b8b8b8"
- button="#474747ff"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#6b6b6b"
- tab_inactive="#333333"
- tab_back="#474747ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#6b6b6bff"
- back="#474747ff"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#474747"
- list_title="#000000"
- list_text="#b8b8b8"
- list_text_hi="#fff500"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#6b6b6b"
- title="#cccccc"
- text="#cccccc"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#d9d9d9"
- header_text_hi="#ffffff"
- button="#7272727f"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#727272"
- tab_inactive="#535353"
- tab_back="#404040ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000019"
- back="#72727280"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#393939"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#474747ff"
- header_text="#b8b8b8"
- header_text_hi="#ffffff"
- button="#7272727f"
- button_title="#cccccc"
- button_text="#b8b8b8"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#47474700"
- tab_active="#727272"
- tab_inactive="#535353"
- tab_back="#404040ff"
- tab_outline="#202020"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000019"
- back="#72727280"
- sub_back="#00000019"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#5ec1ef"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#ffffff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.15"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.15"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="0"
- shadow_alpha="0.25"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/maya.xml b/release/scripts/presets/interface_theme/maya.xml
deleted file mode 100644
index 1e93f3a0993..00000000000
--- a/release/scripts/presets/interface_theme/maya.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.3"
- menu_shadow_width="4"
- icon_alpha="1"
- icon_saturation="0.5"
- widget_emboss="#00000005"
- editor_outline="#1f1f1f"
- widget_text_cursor="#3399e6"
- axis_x="#ff3352"
- axis_y="#8bdc00"
- axis_z="#2890ff"
- gizmo_hi="#000000"
- gizmo_primary="#000000"
- gizmo_secondary="#000000"
- gizmo_a="#000000"
- gizmo_b="#000000"
- icon_scene="#e6e6e6ff"
- icon_collection="#f4f4f4ff"
- icon_object="#ee9e5dff"
- icon_object_data="#00d4a3ff"
- icon_modifier="#84b8ffff"
- icon_shading="#ea7581ff"
- icon_folder="#e3c16eff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#373737"
- inner="#585858ff"
- inner_sel="#000000e6"
- item="#3e3e3eff"
- text="#ebebeb"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#373737"
- inner="#585858ff"
- inner_sel="#5e84a3ff"
- item="#ffffffff"
- text="#f2f2f2"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#2f2f2f"
- inner="#444444ff"
- inner_sel="#5e84a3ff"
- item="#ffffff8f"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#373737"
- inner="#595959ff"
- inner_sel="#bfbfbfe6"
- item="#ffffffff"
- text="#eeeeee"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#444444"
- inner="#1f1f1fff"
- inner_sel="#808080ff"
- item="#333333ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="TRUE"
- shadetop="-3"
- shadedown="0"
- roundness="0.2"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#373737"
- inner="#666666ff"
- inner_sel="#000000e6"
- item="#ffffffff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-15"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#373737"
- inner="#595959ff"
- inner_sel="#1d1d1de6"
- item="#191919ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#444444"
- inner="#2c2c2cff"
- inner_sel="#b3b3b366"
- item="#333333ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4107"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#444444"
- inner="#595959ff"
- inner_sel="#333333ff"
- item="#c2c2c2e6"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="TRUE"
- shadetop="-4"
- shadedown="0"
- roundness="0.390947"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#444444"
- inner="#00000033"
- inner_sel="#696e76ff"
- item="#191919ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#444444"
- inner="#5e5e5eff"
- inner_sel="#696e76ff"
- item="#e6e6e6ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#2e2e2e99"
- inner_sel="#5680c2ff"
- item="#727272ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#19191a"
- inner="#1f1f1fef"
- inner_sel="#585858ff"
- item="#727272ff"
- text="#b3b3b3"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#2e2e2e"
- inner="#212121ff"
- inner_sel="#585858ff"
- item="#5680c2ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#19191a"
- inner="#19191aef"
- inner_sel="#19191aef"
- item="#19191aef"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.8"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#000000"
- inner="#00000000"
- inner_sel="#5680c2ff"
- item="#ffffff8f"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="38"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#424242"
- inner="#67676700"
- inner_sel="#b3b3b3ff"
- item="#676767ff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#585858"
- inner="#2c2c2cff"
- inner_sel="#5680c2ff"
- item="#5680c2ff"
- text="#eeeeee"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#2d2d2d"
- inner="#2d2d2d00"
- inner_sel="#696e76ff"
- item="#b3b3b3ff"
- text="#e1e1e1"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#73be4c"
- inner_anim_sel="#5aa633"
- inner_key="#f0eb64"
- inner_key_sel="#d7d34b"
- inner_driven="#b400ff"
- inner_driven_sel="#9900e6"
- inner_overridden="#19c3c3"
- inner_overridden_sel="#118f8f"
- inner_changed="#cc7529"
- inner_changed_sel="#d26400"
- blend="0.5"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#2d2d2d"
- inner="#323232ff"
- inner_sel="#4b4b4bff"
- item="#2d2d2dff"
- text="#a4a4a4"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.3"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#0427084d"
- clipping_border_3d="#313131ff"
- wire="#020044"
- wire_edit="#79fdff"
- gp_vertex="#000000"
- gp_vertex_select="#ff8500"
- gp_vertex_size="3"
- text_grease_pencil="#b5e61d"
- object_selected="#ffffff"
- object_active="#26ff99"
- text_keyframe="#ddd700"
- camera="#000000"
- empty="#000000"
- light="#00000028"
- speaker="#000000"
- vertex="#ff00fa"
- vertex_select="#ffea00"
- vertex_size="2"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- edge_select="#ff904f"
- edge_seam="#db2512"
- edge_sharp="#00ffff"
- edge_crease="#cc0099"
- edge_bevel="#00a5ff"
- edge_facesel="#4b4b4b"
- freestyle_edge_mark="#7fff7f"
- face="#00000012"
- face_select="#ff904f3d"
- face_dot="#ff8500"
- facedot_size="3"
- freestyle_face_mark="#7fff7f33"
- face_back="#ff0000b3"
- face_front="#0000ffb3"
- nurb_uline="#909000"
- nurb_vline="#803060"
- 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="#150806"
- extra_edge_angle="#4d4d00"
- extra_face_angle="#0000cc"
- extra_face_area="#004d00"
- editmesh_active="#ffffff80"
- normal="#22dddd"
- vertex_normal="#2361dd"
- split_normal="#dd23dd"
- bone_pose="#50c8ff"
- bone_pose_active="#8cffff"
- bone_solid="#c8c8c8"
- bone_locked_weight="#ff000080"
- bundle_solid="#c8c8c8"
- camera_path="#000000"
- skin_root="#b44d4d"
- view_overlay="#000000"
- transform="#ffffff"
- frame_current="#60c040"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#42424200"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#35353500"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <gradients>
- <ThemeGradientColors
- background_type="LINEAR"
- high_gradient="#8895aa"
- gradient="#0f0f10"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#1a1a1a"
- frame_current="#308837"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- window_sliders="#969696"
- channels_region="#2e2e2e"
- dopesheet_channel="#5a85b2"
- dopesheet_subchannel="#7d98b3"
- channel_group="#44992e"
- active_channels_group="#5ccd3e"
- preview_range="#a14d0066"
- vertex="#000000"
- vertex_select="#ff8500"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#353535"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#2e2e2eff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#2e2e2e"
- list_title="#ffffff"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#5b8199"
- >
- <space>
- <ThemeSpaceGeneric
- back="#353535"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#2e2e2eff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#444444ff"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#5e5e5e"
- view_sliders="#969696"
- dopesheet_channel="#5a85b2"
- nla_track="#424242"
- active_action="#cc701a66"
- active_action_unset="#9987614d"
- preview_range="#a14d0066"
- strips="#0c0a0a"
- strips_selected="#ff8c00"
- transition_strips="#1c2630"
- transition_strips_selected="#2e75db"
- meta_strips="#332642"
- meta_strips_selected="#692196"
- sound_strips="#2b3d3d"
- sound_strips_selected="#1f7a7a"
- tweak="#4df31a"
- tweak_duplicate="#d90000"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- frame_current="#308837"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- >
- <space>
- <ThemeSpaceGeneric
- back="#353535"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#212121ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#2e2e2e"
- list_title="#ffffff"
- list_text="#cccccc"
- list_text_hi="#cccccc"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#272727"
- frame_current="#308837"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- value_sliders="#000000"
- view_sliders="#c0c0c0"
- dopesheet_channel="#5a85b224"
- dopesheet_subchannel="#7d98b324"
- channels="#707070ff"
- channels_selected="#60c04044"
- channel_group="#44992e37"
- active_channels_group="#5ccd3e55"
- long_key="#1a151580"
- long_key_selected="#ff8c00cc"
- keyframe="#e8e8e8"
- keyframe_selected="#ffbe33"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#94e575"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#5c5656"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- keyframe_scale_factor="1"
- summary="#a14d0066"
- preview_range="#a14d0066"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#424242"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#2e2e2e"
- list_title="#d8d8d8"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000000"
- vertex_select="#ff8500"
- vertex_size="3"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- face="#ffffff0a"
- face_select="#ff85003c"
- face_dot="#ff8500"
- facedot_size="3"
- freestyle_face_mark="#7fff7f33"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#ffffff80"
- wire_edit="#c0c0c0"
- edge_select="#ff8500"
- scope_back="#727272ff"
- preview_stitch_face="#7f7f0033"
- preview_stitch_edge="#ff00ff33"
- preview_stitch_vert="#0000ff33"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#60c040"
- 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"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#444444"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#404040"
- window_sliders="#a0a0a0"
- movie_strip="#516987"
- movieclip_strip="#20208f"
- image_strip="#6d5881"
- scene_strip="#4e983e"
- audio_strip="#2e8f8f"
- effect_strip="#a9547c"
- transition_strip="#a25f6f"
- meta_strip="#6d9183"
- text_strip="#a29700"
- frame_current="#308837"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- keyframe="#ff8500"
- draw_action="#50c8ff"
- preview_back="#000000"
- metadatabg="#000000"
- metadatatext="#ffffff"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#424242"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#444444"
- title="#d4d4d4"
- text="#e5e5e5"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#232323ff"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#5e5e5eff"
- back="#4a4a4aff"
- sub_back="#00000024"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#d0d0d0"
- line_numbers_background="#313133"
- selected_text="#19191a"
- cursor="#ff0000"
- syntax_builtin="#ff1961"
- syntax_symbols="#ff734d"
- syntax_special="#95d600"
- syntax_preprocessor="#ad80ff"
- syntax_reserved="#c4753b"
- syntax_comment="#939393"
- syntax_string="#f6e162"
- syntax_numbers="#50dbff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#272727"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#42424200"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#42424200"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#ed5700"
- node_active="#ffffff"
- wire="#808080"
- wire_inner="#808080"
- wire_select="#ffffff"
- selected_text="#7f7070"
- node_backdrop="#565656ff"
- converter_node="#66c4ff"
- color_node="#ccb83d"
- group_node="#49b300b9"
- group_socket_node="#1a1a1a"
- frame_node="#9b9b9ba0"
- matte_node="#975b5b"
- distor_node="#749797"
- noodle_curving="0"
- grid_levels="2"
- input_node="#e64555"
- output_node="#b33641"
- filter_node="#584d80"
- vector_node="#9b80ff"
- texture_node="#e68745"
- shader_node="#39bf6d"
- script_node="#084d4d"
- pattern_node="#6c696f"
- layout_node="#6c696f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#232323"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#2e2e2e"
- list_title="#ffffff"
- list_text="#cccccc"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#337f33"
- selected_highlight="#456481"
- active="#5981a6"
- selected_object="#ffffff"
- active_object="#ffffff"
- edited_object="#00806266"
- row_alternate="#ffffff00"
- >
- <space>
- <ThemeSpaceGeneric
- back="#353535"
- title="#ffffff"
- text="#c3c3c3"
- text_hi="#ffffff"
- header="#454545ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#6080ff"
- info_selected_text="#ffffff"
- info_error="#990000ff"
- info_error_text="#ffffff"
- info_warning="#b36a00ff"
- info_warning_text="#ffffff"
- info_info="#668000ff"
- info_info_text="#ffffff"
- info_debug="#d3d3d3ff"
- info_debug_text="#000000"
- info_property="#3ace87ff"
- info_property_text="#ffffff"
- info_operator="#3ace87ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#424242"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#424242"
- title="#eeeeee"
- text="#e6e6e6"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#4b4b4bff"
- execution_buts="#4b4b4bff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#42424200"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#b3c2ff"
- line_input="#ffffff"
- line_info="#47b347"
- line_error="#de6f6f"
- cursor="#de5959"
- select="#ffffff30"
- >
- <space>
- <ThemeSpaceGeneric
- back="#272727"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#7f7f00"
- active_marker="#ffffff"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#308837"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- strips="#0c0a0a"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#424242"
- title="#eeeeee"
- text="#ffffff"
- text_hi="#ffffff"
- header="#424242ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#666666"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#4b4b4b"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#232323ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#2e2e2e"
- title="#ffffff"
- text="#838383"
- text_hi="#ffffff"
- header="#303030ff"
- header_text="#aaaaaa"
- header_text_hi="#ffffff"
- button="#353535ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#5680c2"
- tab_inactive="#424242"
- tab_back="#232323ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#5ec1ef"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#ffffff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="12"
- font_kerning_style="FITTED"
- shadow="1"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.15"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.15"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="0"
- shadow_alpha="0.25"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/minimal_dark.xml b/release/scripts/presets/interface_theme/minimal_dark.xml
deleted file mode 100644
index b61589d6e84..00000000000
--- a/release/scripts/presets/interface_theme/minimal_dark.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.5"
- menu_shadow_width="12"
- icon_alpha="1"
- icon_saturation="1"
- widget_emboss="#00000000"
- editor_outline="#202020"
- widget_text_cursor="#cccccc"
- axis_x="#ff4040"
- axis_y="#00ff00"
- axis_z="#6666ff"
- gizmo_hi="#ffffff"
- gizmo_primary="#f3ef4c"
- gizmo_secondary="#63ffff"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#f2f2f2ff"
- icon_collection="#f2f2f2ff"
- icon_object="#f2f2f2ff"
- icon_object_data="#f2f2f2ff"
- icon_modifier="#f2f2f2ff"
- icon_shading="#f2f2f2ff"
- icon_folder="#e3c16eff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#262626ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#404040"
- inner="#404040ff"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#262626ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#393939"
- inner="#262626ff"
- inner_sel="#337fccff"
- item="#e6e6e600"
- text="#d9d9d9"
- text_sel="#d9d9d9"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#e6e6e600"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#333333ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#333333ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-10"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#333333"
- inner="#2e2e2eff"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#f2f2f2"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-7"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#4d4d4d"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#bfbfbfff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="5"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#383838"
- inner="#4d4d4dff"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#333333"
- inner="#333333ff"
- inner_sel="#337fccff"
- item="#262626ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#1a1a1a"
- inner="#1a1a1aff"
- inner_sel="#337fccff"
- item="#337fccff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#0d0d0d"
- inner="#0d0d0dff"
- inner_sel="#337fccff"
- item="#646464ff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#262626"
- inner="#26262600"
- inner_sel="#337fccff"
- item="#ffffffff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="20"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#383838"
- inner="#383838ff"
- inner_sel="#337fccff"
- item="#262626ff"
- text="#999999"
- text_sel="#b0b0b0"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#262626"
- inner="#1a1a1aff"
- inner_sel="#262626ff"
- item="#337fccff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#323232"
- inner="#36363600"
- inner_sel="#337fccff"
- item="#323232ff"
- text="#999999"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-10"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#4d664d"
- inner_anim_sel="#4d664d"
- inner_key="#008000"
- inner_key_sel="#008000"
- inner_driven="#f500ff"
- inner_driven_sel="#f500ff"
- inner_overridden="#19c3c3"
- inner_overridden_sel="#19c3c3"
- inner_changed="#cc7529"
- inner_changed_sel="#e6852d"
- blend="0.8"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#262626"
- inner="#262626ff"
- inner_sel="#404040ff"
- item="#404040ff"
- text="#bfbfbf"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.25"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#1a1a1a80"
- clipping_border_3d="#313131ff"
- wire="#666666"
- wire_edit="#000000"
- gp_vertex="#000000"
- gp_vertex_select="#ff8500"
- gp_vertex_size="3"
- text_grease_pencil="#b5e61d"
- object_selected="#00d9ff"
- object_active="#00ff2f"
- text_keyframe="#ddd700"
- camera="#0d0d0d"
- empty="#0d0d0d"
- light="#0d0d0d00"
- speaker="#0d0d0d"
- vertex="#0d0d0d"
- vertex_select="#00abe6"
- vertex_size="3"
- vertex_bevel="#008dff"
- vertex_unreferenced="#000000"
- edge_select="#40cfff"
- edge_seam="#bfaa00"
- edge_sharp="#0d0d0d"
- edge_crease="#ff0f00"
- edge_bevel="#008dff"
- edge_facesel="#515151"
- freestyle_edge_mark="#ff7d00"
- face="#4040404d"
- face_select="#0094ff80"
- face_dot="#00b5ff"
- facedot_size="3"
- freestyle_face_mark="#ff8a0433"
- face_back="#ff0000b3"
- face_front="#0000ffb3"
- nurb_uline="#7b807e"
- nurb_vline="#fff8f4"
- nurb_sel_uline="#00bdff"
- nurb_sel_vline="#f0deeb"
- act_spline="#666666"
- handle_free="#9c003a"
- handle_auto="#805c00"
- handle_vect="#b035b1"
- handle_sel_vect="#00bdff"
- handle_align="#404080"
- handle_sel_free="#00bdff"
- handle_sel_auto="#00bdff"
- handle_sel_align="#00bdff"
- lastsel_point="#00ff12"
- extra_edge_len="#fff3fa"
- extra_edge_angle="#fff200"
- extra_face_angle="#009aff"
- extra_face_area="#000000"
- editmesh_active="#00ff2fff"
- normal="#22dddd"
- vertex_normal="#225dd4"
- split_normal="#dd23dd"
- bone_pose="#00b8ff"
- bone_pose_active="#00ff2f"
- bone_solid="#bab5bc"
- bone_locked_weight="#ff000080"
- bundle_solid="#dadada"
- camera_path="#4d4d4d"
- skin_root="#000000"
- view_overlay="#000000"
- transform="#ffffff"
- frame_current="#60c040"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="3"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#000000"
- text="#e4e4e4"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#e4e4e4"
- header_text_hi="#ffffff"
- button="#40404000"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#3a3a3a"
- navigation_bar="#262626ff"
- execution_buts="#26262600"
- tab_active="#404040"
- tab_inactive="#262626"
- tab_back="#262626ff"
- tab_outline="#262626"
- >
- <gradients>
- <ThemeGradientColors
- background_type="RADIAL"
- high_gradient="#3f3f3f"
- gradient="#2d2d2d"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#404040e6"
- back="#383838e6"
- sub_back="#33333380"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#2b2b2b"
- frame_current="#337fcc"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- window_sliders="#808080"
- channels_region="#262626"
- dopesheet_channel="#404040"
- dopesheet_subchannel="#393939"
- channel_group="#333333"
- active_channels_group="#337fcc"
- preview_range="#00000080"
- vertex="#000000"
- vertex_select="#00bdff"
- vertex_size="8"
- vertex_bevel="#000000"
- vertex_unreferenced="#404040"
- handle_free="#000000"
- handle_auto="#8d8e90"
- handle_vect="#7e7e7e"
- handle_sel_vect="#19acff"
- handle_align="#b6b5b6"
- handle_sel_free="#19acff"
- handle_sel_auto="#fdfffc"
- handle_sel_align="#19acff"
- handle_auto_clamped="#7e7e7e"
- handle_sel_auto_clamped="#19acff"
- lastsel_point="#f2f0ff"
- handle_vertex="#808080"
- handle_vertex_select="#ffffff"
- handle_vertex_size="4"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#ffffff"
- text="#a6a6a6"
- text_hi="#fcfcfc"
- header="#575757cc"
- header_text="#ffffff"
- header_text_hi="#bababa"
- button="#404040ff"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#2b2b2bff"
- tab_outline="#2b2b2b"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#404040"
- list_title="#bfbfbf"
- list_text="#b3b3b3"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#337fcc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#e4e4e4"
- text="#ffffff"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#cacaca"
- header_text_hi="#ffffff"
- button="#404040ff"
- button_title="#cacaca"
- button_text="#e4e4e4"
- button_text_hi="#ffffff"
- navigation_bar="#262626ff"
- execution_buts="#444444ff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#292929"
- view_sliders="#000000"
- dopesheet_channel="#262626"
- nla_track="#575757"
- active_action="#00991d80"
- active_action_unset="#33333380"
- preview_range="#26262680"
- strips="#333333"
- strips_selected="#00bbff"
- transition_strips="#314553"
- transition_strips_selected="#00bbff"
- meta_strips="#503a64"
- meta_strips_selected="#00bbff"
- sound_strips="#33442f"
- sound_strips_selected="#00bbff"
- tweak="#00991d"
- tweak_duplicate="#d90000"
- keyframe_border="#000000ff"
- keyframe_border_selected="#00bbffff"
- frame_current="#337fcc"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#ffffff"
- text="#cccccc"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#ffffff"
- header_text_hi="#ffffff"
- button="#404040ff"
- button_title="#bfbfbf"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#202020ff"
- execution_buts="#202020ff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#2b2b2bff"
- tab_outline="#2b2b2b"
- >
- <panelcolors>
- <ThemePanelColors
- header="#40404000"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#404040"
- list_title="#cecece"
- list_text="#e6e6e6"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#2b2b2b"
- frame_current="#337fcc"
- time_scrub_background="#292929e6"
- time_marker_line="#00000040"
- time_marker_line_selected="#ffffff33"
- value_sliders="#000000"
- view_sliders="#000000"
- dopesheet_channel="#404040bf"
- dopesheet_subchannel="#393939bf"
- channels="#262626bf"
- channels_selected="#337fcc80"
- channel_group="#333333bf"
- active_channels_group="#337fcc80"
- long_key="#00000040"
- long_key_selected="#00bdff40"
- keyframe="#808080"
- keyframe_selected="#00bdff"
- keyframe_extreme="#808080"
- keyframe_extreme_selected="#00bdff"
- keyframe_breakdown="#808080"
- keyframe_breakdown_selected="#00bdff"
- keyframe_jitter="#808080"
- keyframe_jitter_selected="#00bdff"
- keyframe_movehold="#808080"
- keyframe_movehold_selected="#00bdff"
- keyframe_border="#00000080"
- keyframe_border_selected="#00bdffff"
- keyframe_scale_factor="1"
- summary="#59595900"
- preview_range="#26262680"
- interpolation_line="#bfbfbf40"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#ffffff"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#ffffff"
- header_text_hi="#b7b7b7"
- button="#404040ff"
- button_title="#c7c7c7"
- button_text="#cccccc"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#2b2b2bff"
- tab_outline="#2b2b2b"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#404040"
- list_title="#e6e6e6"
- list_text="#b3b3b3"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000000"
- vertex_select="#00c0ff"
- vertex_size="3"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- face="#80808080"
- face_select="#00c0ffa9"
- face_dot="#00c0ff"
- facedot_size="2"
- freestyle_face_mark="#7fff7f33"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#00ff90ff"
- wire_edit="#000000"
- edge_select="#00c0ff"
- scope_back="#0000004c"
- preview_stitch_face="#1242b026"
- preview_stitch_edge="#ff8500b2"
- preview_stitch_vert="#ff85007f"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#60c040"
- 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="3"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#1a1a1a"
- title="#ffffff"
- text="#8b8b8b"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#000000"
- header_text_hi="#b8b8b8"
- button="#40404000"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#262626ff"
- execution_buts="#262626ff"
- tab_active="#404040"
- tab_inactive="#262626"
- tab_back="#262626ff"
- tab_outline="#262626"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838e6"
- sub_back="#333333e6"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#000000"
- window_sliders="#999999"
- movie_strip="#3cbfe6"
- movieclip_strip="#4d4d99"
- image_strip="#a3a3a3"
- scene_strip="#777777"
- audio_strip="#60bf77"
- effect_strip="#71fe9b"
- transition_strip="#80797d"
- meta_strip="#608073"
- text_strip="#d1ff80"
- frame_current="#337fcc"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- keyframe="#00ff00"
- draw_action="#5d7b99"
- preview_back="#1a1a1a"
- metadatabg="#000000"
- metadatatext="#ffffff"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#e4e4e4"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#000000"
- header_text_hi="#b7b7b7"
- button="#333333ff"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#202020ff"
- execution_buts="#20202000"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#2b2b2bff"
- tab_outline="#2b2b2b"
- >
- <panelcolors>
- <ThemePanelColors
- header="#40404000"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#404040"
- title="#c7c7c7"
- text="#bfbfbf"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#c7c7c7"
- header_text_hi="#ffffff"
- button="#404040ff"
- button_title="#c7c7c7"
- button_text="#777777"
- button_text_hi="#ffffff"
- navigation_bar="#262626ff"
- execution_buts="#262626ff"
- tab_active="#404040"
- tab_inactive="#404040"
- tab_back="#404040ff"
- tab_outline="#131313"
- >
- <panelcolors>
- <ThemePanelColors
- header="#33333300"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#999999"
- line_numbers_background="#262626"
- selected_text="#262626"
- cursor="#8b8bff"
- syntax_builtin="#40bfff"
- syntax_symbols="#40ff9a"
- syntax_special="#c366ff"
- syntax_preprocessor="#398080"
- syntax_reserved="#a94800"
- syntax_comment="#999999"
- syntax_string="#40ff46"
- syntax_numbers="#fffe40"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#fefefe"
- text="#e7e7e7"
- text_hi="#ffffff"
- header="#575757e6"
- header_text="#ffffff"
- header_text_hi="#b7b7b7"
- button="#40404000"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#262626"
- tab_inactive="#1a1a1a"
- tab_back="#1a1a1aff"
- tab_outline="#1a1a1a"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#00bdff"
- node_active="#00ff2f"
- wire="#1a1a1a"
- wire_inner="#0d0d0d"
- wire_select="#00bdff"
- selected_text="#cccccc"
- node_backdrop="#404040ff"
- converter_node="#404040"
- color_node="#404040"
- group_node="#404040e6"
- group_socket_node="#404040"
- frame_node="#666666ff"
- matte_node="#404040"
- distor_node="#404040"
- noodle_curving="0"
- grid_levels="2"
- input_node="#404040"
- output_node="#404040"
- filter_node="#404040"
- vector_node="#404040"
- texture_node="#404040"
- shader_node="#404040"
- script_node="#404040"
- pattern_node="#404040"
- layout_node="#404040"
- >
- <space>
- <ThemeSpaceGeneric
- back="#262626"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#cdcdcd"
- header_text_hi="#b7b7b7"
- button="#40404000"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#404040"
- tab_inactive="#232323"
- tab_back="#23232300"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#404040ff"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#262626"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#404040"
- selected_highlight="#337fcc"
- active="#00991d"
- selected_object="#ffffff"
- active_object="#ffffff"
- edited_object="#00000080"
- row_alternate="#ffffff06"
- >
- <space>
- <ThemeSpaceGeneric
- back="#333333"
- title="#dadada"
- text="#e6e6e6"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#c7c7c7"
- header_text_hi="#ffffff"
- button="#404040ff"
- button_title="#c7c7c7"
- button_text="#000000"
- button_text_hi="#d8d8d8"
- navigation_bar="#202020ff"
- execution_buts="#00000000"
- tab_active="#727272"
- tab_inactive="#222222"
- tab_back="#222222ff"
- tab_outline="#222222"
- >
- <panelcolors>
- <ThemePanelColors
- header="#26262600"
- back="#292929ff"
- sub_back="#242424ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#18669e"
- info_selected_text="#ffffff"
- info_error="#131313ff"
- info_error_text="#ff4040"
- info_warning="#262626ff"
- info_warning_text="#ffe100"
- info_info="#262626ff"
- info_info_text="#25ff00"
- info_debug="#c4c4c4ff"
- info_debug_text="#000000"
- info_property="#3ace87ff"
- info_property_text="#ffffff"
- info_operator="#3ace87ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#404040"
- title="#e4e4e4"
- text="#cecece"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#ffffff"
- header_text_hi="#000000"
- button="#262626ff"
- button_title="#c7c7c7"
- button_text="#000000"
- button_text_hi="#000000"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#727272"
- tab_inactive="#222222"
- tab_back="#222222ff"
- tab_outline="#222222"
- >
- <panelcolors>
- <ThemePanelColors
- header="#333333ff"
- back="#292929ff"
- sub_back="#242424ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#404040"
- title="#eeeeee"
- text="#e6e6e6"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#404040ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#262626ff"
- execution_buts="#262626ff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#40404000"
- back="#383838ff"
- sub_back="#333333ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#40bfff"
- line_input="#ffffff"
- line_info="#607f9e"
- line_error="#ff0019"
- cursor="#8b8bff"
- select="#18181880"
- >
- <space>
- <ThemeSpaceGeneric
- back="#262626"
- title="#e4e4e4"
- text="#ffffff"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#262626ff"
- button_title="#c7c7c7"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#727272"
- tab_inactive="#4a4a4a"
- tab_back="#414141ff"
- tab_outline="#2d2d2d"
- >
- <panelcolors>
- <ThemePanelColors
- header="#262626ff"
- back="#1f1f1fff"
- sub_back="#1a1a1aff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#7f7f00"
- active_marker="#ffffff"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#01c040"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- strips="#0c0a0a"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#1a1a1a"
- title="#ffffff"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#575757cc"
- header_text="#000000"
- header_text_hi="#b8b8b8"
- button="#262626ff"
- button_title="#c7c7c7"
- button_text="#b4b4b4"
- button_text_hi="#ffffff"
- navigation_bar="#131313ff"
- execution_buts="#00000000"
- tab_active="#262626"
- tab_inactive="#1a1a1a"
- tab_back="#1a1a1aff"
- tab_outline="#1a1a1a"
- >
- <panelcolors>
- <ThemePanelColors
- header="#262626ff"
- back="#1f1f1fff"
- sub_back="#1a1a1aff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#262626"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#404040"
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#262626ff"
- header_text="#eeeeee"
- header_text_hi="#ffffff"
- button="#333333ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#202020ff"
- execution_buts="#1a1a1a00"
- tab_active="#262626"
- tab_inactive="#282828"
- tab_back="#262626ff"
- tab_outline="#131313"
- >
- <panelcolors>
- <ThemePanelColors
- header="#26262600"
- back="#292929ff"
- sub_back="#242424ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#262626"
- title="#ffffff"
- text="#838383"
- text_hi="#ffffff"
- header="#262626ff"
- header_text="#aaaaaa"
- header_text_hi="#ffffff"
- button="#333333ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#202020ff"
- execution_buts="#1a1a1a00"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#31313100"
- back="#292929ff"
- sub_back="#242424ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#65ceff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#ffffff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#010000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="1"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="10"
- font_kerning_style="FITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="10"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/modo.xml b/release/scripts/presets/interface_theme/modo.xml
deleted file mode 100644
index b98d00d7152..00000000000
--- a/release/scripts/presets/interface_theme/modo.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.5"
- menu_shadow_width="12"
- icon_alpha="1"
- icon_saturation="0.4"
- widget_emboss="#48484800"
- editor_outline="#383838"
- widget_text_cursor="#585858"
- axis_x="#dc0000"
- axis_y="#00dc00"
- axis_z="#0000dc"
- gizmo_hi="#000000"
- gizmo_primary="#0000dc"
- gizmo_secondary="#dc0000"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#acacacff"
- icon_collection="#282828ff"
- icon_object="#0083b9ff"
- icon_object_data="#b46c97ff"
- icon_modifier="#58a47aff"
- icon_shading="#a2783fff"
- icon_folder="#bda670ff"
- icon_border_intensity="0.297222"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#686868"
- inner="#686868ff"
- inner_sel="#f49c1cff"
- item="#2f76c3ff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#484848"
- inner="#686868ff"
- inner_sel="#f49c1cff"
- item="#181818ff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="15"
- shadedown="-15"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#383838"
- inner="#585858ff"
- inner_sel="#f49c1cff"
- item="#181818ff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#484848"
- inner="#5a5a5aff"
- inner_sel="#f49c1cff"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="15"
- shadedown="-15"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#9098a0"
- inner="#9098a0ff"
- inner_sel="#757c84ff"
- item="#0071daff"
- text="#181818"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="25"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#181818"
- inner="#686868ff"
- inner_sel="#f49c1cff"
- item="#181818ff"
- text="#cccccc"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="15"
- shadedown="-15"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#302e2e"
- inner="#606060ff"
- inner_sel="#f49c1cff"
- item="#5a5a5aff"
- text="#e1e1e1"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#484848"
- inner="#9098a0ff"
- inner_sel="#f49c1cff"
- item="#5a5a5aff"
- text="#181818"
- text_sel="#eeeeee"
- show_shaded="FALSE"
- shadetop="-20"
- shadedown="0"
- roundness="0.6"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#191919"
- inner="#b4b4b4ff"
- inner_sel="#f49c1cff"
- item="#9098a0ff"
- text="#181818"
- text_sel="#eeeeee"
- show_shaded="FALSE"
- shadetop="-20"
- shadedown="0"
- roundness="0.6"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#383838"
- inner="#444444ff"
- inner_sel="#646464ff"
- item="#181818ff"
- text="#cccccc"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#484848"
- inner="#606060ff"
- inner_sel="#f49c1cff"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="15"
- shadedown="-15"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#181818"
- inner="#606060ff"
- inner_sel="#f49c1c00"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#f49c1c"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#181818"
- inner="#484848ff"
- inner_sel="#2d2d2de6"
- item="#646464ff"
- text="#bfbfbf"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#383838"
- inner="#585858f7"
- inner_sel="#f49c1cff"
- item="#f49c1cff"
- text="#dfdfdf"
- text_sel="#181818"
- show_shaded="TRUE"
- shadetop="5"
- shadedown="-5"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#181818"
- inner="#191919e6"
- inner_sel="#2d2d2de6"
- item="#646464ff"
- text="#cccccc"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#ffffff"
- inner="#18181800"
- inner_sel="#505860ff"
- item="#ccccccff"
- text="#cccccc"
- text_sel="#181818"
- show_shaded="FALSE"
- shadetop="38"
- shadedown="0"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#383838"
- inner="#383838b4"
- inner_sel="#646464b4"
- item="#585858ff"
- text="#cccccc"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#181818"
- inner="#bebebeff"
- inner_sel="#646464b4"
- item="#f49c1cff"
- text="#0b0b0b"
- text_sel="#cccccc"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="0.5"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#181818"
- inner="#18181800"
- inner_sel="#f49c1c00"
- item="#5a5a5aff"
- text="#cccccc"
- text_sel="#f49c1c"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#53992e"
- inner_anim_sel="#5aa633"
- inner_key="#b3ae36"
- inner_key_sel="#d7d34b"
- inner_driven="#b400ff"
- inner_driven_sel="#9900e6"
- inner_overridden="#19c3c3"
- inner_overridden_sel="#118f8f"
- inner_changed="#cc7529"
- inner_changed_sel="#e6852d"
- blend="0.5"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#3e3e3e"
- inner="#3e3e3eff"
- inner_sel="#484848ff"
- item="#2f76c3ff"
- text="#909090"
- text_sel="#f49c1c"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.3"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#505050ff"
- clipping_border_3d="#313131ff"
- wire="#393939"
- wire_edit="#282828"
- gp_vertex="#292929"
- gp_vertex_select="#ffa829"
- gp_vertex_size="2"
- text_grease_pencil="#b5e61d"
- object_selected="#ffa829"
- object_active="#ffa829"
- text_keyframe="#ddd700"
- camera="#cccccc"
- empty="#cccccc"
- light="#cccccc28"
- speaker="#cccccc"
- vertex="#292929"
- vertex_select="#ffa829"
- vertex_size="3"
- vertex_bevel="#0ec6ff"
- vertex_unreferenced="#404040"
- edge_select="#ffa829"
- edge_seam="#0077db"
- edge_sharp="#800055"
- edge_crease="#ad009d"
- edge_bevel="#00a449"
- edge_facesel="#4b4b4b"
- freestyle_edge_mark="#7fff7f"
- face="#18181812"
- face_select="#ffa82940"
- face_dot="#ffa829"
- facedot_size="1"
- freestyle_face_mark="#7fff7f33"
- face_back="#ff0000b3"
- face_front="#0000ffb3"
- nurb_uline="#1d8fff"
- nurb_vline="#803060"
- nurb_sel_uline="#f0ff40"
- nurb_sel_vline="#f090a0"
- act_spline="#1d8fff"
- handle_free="#181818"
- handle_auto="#909000"
- handle_vect="#409030"
- handle_sel_vect="#40c030"
- handle_align="#1d8fff"
- handle_sel_free="#181818"
- handle_sel_auto="#f0ff40"
- handle_sel_align="#1d8fff"
- lastsel_point="#1d8fff"
- extra_edge_len="#181818"
- extra_edge_angle="#181818"
- extra_face_angle="#002000"
- extra_face_area="#000080"
- editmesh_active="#ffa82940"
- normal="#22dddd"
- vertex_normal="#407eff"
- split_normal="#ff4cff"
- bone_pose="#50c8ff"
- bone_pose_active="#cccccc"
- bone_solid="#c8c8c8"
- bone_locked_weight="#ff000080"
- bundle_solid="#c8c8c8"
- camera_path="#181818"
- skin_root="#181818"
- view_overlay="#181818"
- transform="#cccccc"
- frame_current="#60c040"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="10"
- >
- <space>
- <ThemeSpaceGradient
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#383838"
- >
- <gradients>
- <ThemeGradientColors
- background_type="SINGLE_COLOR"
- high_gradient="#5c666b"
- gradient="#2d2d2e"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#48484880"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#5b6672"
- frame_current="#c67f14"
- time_scrub_background="#9296a5cc"
- time_marker_line="#18181860"
- time_marker_line_selected="#ffffff60"
- window_sliders="#969696"
- channels_region="#424242"
- dopesheet_channel="#424242"
- dopesheet_subchannel="#424242"
- channel_group="#424242"
- active_channels_group="#86570d"
- preview_range="#f49c1c00"
- vertex="#181818"
- vertex_select="#f49c1c"
- vertex_size="3"
- vertex_bevel="#181818"
- vertex_unreferenced="#181818"
- handle_free="#181818"
- handle_auto="#909000"
- handle_vect="#409030"
- handle_sel_vect="#40c030"
- handle_align="#803060"
- handle_sel_free="#181818"
- handle_sel_auto="#f0ff40"
- handle_sel_align="#f090a0"
- handle_auto_clamped="#994030"
- handle_sel_auto_clamped="#f0af90"
- lastsel_point="#181818"
- handle_vertex="#181818"
- handle_vertex_select="#ff8500"
- handle_vertex_size="3"
- >
- <space>
- <ThemeSpaceGeneric
- back="#64707c"
- title="#cccccc"
- text="#303442"
- text_hi="#ffffff"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#ffffff"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#48484880"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#484848"
- list_title="#181818"
- list_text="#cccccc"
- list_text_hi="#f49c1c"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#f49c1c"
- >
- <space>
- <ThemeSpaceGeneric
- back="#484848"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#383838ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#3f3f3fff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#444444ff"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#3f3f3fff"
- sub_back="#3f3f3fff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#5e5e5e"
- view_sliders="#969696"
- dopesheet_channel="#5a85b2"
- nla_track="#525252"
- active_action="#cc701a66"
- active_action_unset="#9987614d"
- preview_range="#cc701a66"
- strips="#181818"
- strips_selected="#ff8c00"
- transition_strips="#1c2630"
- transition_strips_selected="#2e75db"
- meta_strips="#332642"
- meta_strips_selected="#692196"
- sound_strips="#2b3d3d"
- sound_strips_selected="#1f7a7a"
- tweak="#4df31a"
- tweak_duplicate="#d90000"
- keyframe_border="#181818ff"
- keyframe_border_selected="#181818ff"
- frame_current="#c69345"
- time_scrub_background="#292929e6"
- time_marker_line="#18181860"
- time_marker_line_selected="#ffffff60"
- >
- <space>
- <ThemeSpaceGeneric
- back="#64707c"
- title="#cccccc"
- text="#a6a6a6"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#484848"
- list_title="#181818"
- list_text="#181818"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#5b6672"
- frame_current="#c67f14"
- time_scrub_background="#9296a5cc"
- time_marker_line="#18181860"
- time_marker_line_selected="#cccccc60"
- value_sliders="#181818"
- view_sliders="#969696"
- dopesheet_channel="#424242ff"
- dopesheet_subchannel="#424242ff"
- channels="#424242ff"
- channels_selected="#f49c1cff"
- channel_group="#42424210"
- active_channels_group="#86570d57"
- long_key="#18181880"
- long_key_selected="#f49c1ccc"
- keyframe="#bddae8"
- keyframe_selected="#ffb21e"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#ace493"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#5c5656"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#18181880"
- keyframe_border_selected="#181818ff"
- keyframe_scale_factor="0.9"
- summary="#9b661057"
- preview_range="#f49c1c00"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#64707c"
- title="#cccccc"
- text="#303442"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#484848"
- list_title="#181818"
- list_text="#cccccc"
- list_text_hi="#f49c1c"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#eeeeee"
- vertex_select="#ffa829"
- vertex_size="5"
- vertex_bevel="#eeeeee"
- vertex_unreferenced="#404040"
- face="#eeeeee0a"
- face_select="#ffa8293c"
- face_dot="#ffa829"
- facedot_size="1"
- freestyle_face_mark="#18181800"
- face_back="#18181800"
- face_front="#18181800"
- editmesh_active="#ffa829ff"
- wire_edit="#c0c0c0"
- edge_select="#ffa829"
- scope_back="#727272ff"
- preview_stitch_face="#1242b026"
- preview_stitch_edge="#ffa829b2"
- preview_stitch_vert="#ffa8297f"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#60c040"
- metadatabg="#181818"
- metadatatext="#eeeeee"
- handle_free="#181818"
- handle_auto="#909000"
- handle_align="#803060"
- handle_sel_free="#181818"
- handle_sel_auto="#f0ff40"
- handle_sel_align="#f090a0"
- handle_auto_clamped="#181818"
- handle_sel_auto_clamped="#181818"
- handle_vertex="#181818"
- handle_vertex_select="#ffff00"
- handle_vertex_size="5"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#a3a3a3"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#888888"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#5b6672"
- window_sliders="#a0a0a0"
- movie_strip="#516987"
- movieclip_strip="#20208f"
- image_strip="#6d5881"
- scene_strip="#4e983e"
- audio_strip="#2e8f8f"
- effect_strip="#a9547c"
- transition_strip="#a25f6f"
- meta_strip="#6d9183"
- text_strip="#f49c1c"
- frame_current="#c67f14"
- time_scrub_background="#38383800"
- time_marker_line="#18181860"
- time_marker_line_selected="#ffffff60"
- keyframe="#f49c1c"
- draw_action="#50c8ff"
- preview_back="#181818"
- metadatabg="#181818"
- metadatatext="#cccccc"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#484848"
- title="#cccccc"
- text="#a6a6a6"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#48484842"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#484848"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#888888"
- header_text_hi="#dff5ff"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#3e3e3eff"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#d0d0d0"
- line_numbers_background="#383838"
- selected_text="#005aa6"
- cursor="#cccccc"
- syntax_builtin="#f49c1c"
- syntax_symbols="#a5a5a5"
- syntax_special="#66d9ef"
- syntax_preprocessor="#a5a5a5"
- syntax_reserved="#a5a5a5"
- syntax_comment="#696969"
- syntax_string="#e6db5a"
- syntax_numbers="#c89927"
- >
- <space>
- <ThemeSpaceGeneric
- back="#383838"
- title="#cccccc"
- text="#a5a5a5"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#ffa829"
- node_active="#ffa829"
- wire="#484848"
- wire_inner="#484848"
- wire_select="#ccccff"
- selected_text="#ffa829"
- node_backdrop="#484848ff"
- converter_node="#383838"
- color_node="#383838"
- group_node="#383838ff"
- group_socket_node="#383838"
- frame_node="#383838ff"
- matte_node="#383838"
- distor_node="#383838"
- noodle_curving="1"
- grid_levels="0"
- input_node="#383838"
- output_node="#383838"
- filter_node="#383838"
- vector_node="#383838"
- texture_node="#383838"
- shader_node="#383838"
- script_node="#383838"
- pattern_node="#383838"
- layout_node="#383838"
- >
- <space>
- <ThemeSpaceGeneric
- back="#64707c"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#484848"
- list_title="#181818"
- list_text="#181818"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#337f33"
- selected_highlight="#353b41"
- active="#404850"
- selected_object="#e96a00"
- active_object="#ffaf29"
- edited_object="#00806266"
- row_alternate="#ffffff07"
- >
- <space>
- <ThemeSpaceGeneric
- back="#7e8990"
- title="#cccccc"
- text="#181818"
- text_hi="#f49c1c"
- header="#525252ff"
- header_text="#888888"
- header_text_hi="#cccccc"
- button="#727272ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#404850"
- info_selected_text="#ffaf29"
- info_error="#181818ff"
- info_error_text="#ff453a"
- info_warning="#181818ff"
- info_warning_text="#ff453a"
- info_info="#181818ff"
- info_info_text="#cccccc"
- info_debug="#181818ff"
- info_debug_text="#cccccc"
- info_property="#181818ff"
- info_property_text="#cccccc"
- info_operator="#181818ff"
- info_operator_text="#82d38a"
- >
- <space>
- <ThemeSpaceGeneric
- back="#7e8990"
- title="#c8c6c9"
- text="#282828"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#404040"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#363636ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#484848ff"
- execution_buts="#4b4b4bff"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848a6"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#282828"
- line_input="#cccccc"
- line_info="#00aa00"
- line_error="#dc6060"
- cursor="#dc6060"
- select="#f49c1c30"
- >
- <space>
- <ThemeSpaceGeneric
- back="#64707c"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#181818"
- marker="#7f7f00"
- active_marker="#cccccc"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#c69345"
- time_scrub_background="#292929e6"
- time_marker_line="#18181860"
- time_marker_line_selected="#ffffff60"
- strips="#181818"
- strips_selected="#ff8c00"
- metadatabg="#181818"
- metadatatext="#ffffff"
- handle_free="#181818"
- handle_auto="#909000"
- handle_align="#803060"
- handle_sel_free="#181818"
- handle_sel_auto="#f0ff40"
- handle_sel_align="#f090a0"
- handle_auto_clamped="#181818"
- handle_sel_auto_clamped="#181818"
- handle_vertex="#181818"
- handle_vertex_select="#ffff00"
- handle_vertex_size="4"
- >
- <space>
- <ThemeSpaceGeneric
- back="#2d3236"
- title="#cccccc"
- text="#a6a6a6"
- text_hi="#cccccc"
- header="#525252ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#484848ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#484848"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#484848"
- tab_inactive="#414141"
- tab_back="#383838ff"
- tab_outline="#484848"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#666666"
- list_title="#181818"
- list_text="#000000"
- list_text_hi="#cccccc"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#484848"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#303030ff"
- header_text="#cccccc"
- header_text_hi="#cccccc"
- button="#383838ff"
- button_title="#cccccc"
- button_text="#cccccc"
- button_text_hi="#cccccc"
- navigation_bar="#38383800"
- execution_buts="#18181800"
- tab_active="#383838"
- tab_inactive="#383838"
- tab_back="#383838ff"
- tab_outline="#383838"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#484848"
- title="#cccccc"
- text="#cccccc"
- text_hi="#cccccc"
- header="#383838ff"
- header_text="#a7a7a7"
- header_text_hi="#cccccc"
- button="#ccccccff"
- button_title="#cccccc"
- button_text="#181818"
- button_text_hi="#cccccc"
- navigation_bar="#38383800"
- execution_buts="#00000000"
- tab_active="#383838"
- tab_inactive="#383838"
- tab_back="#383838ff"
- tab_outline="#383838"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242ff"
- back="#484848ff"
- sub_back="#484848ff"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#ffa98b"
- select="#ffb6a8"
- active="#ffb6a8"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f7daa4"
- select="#f7c2b1"
- active="#f7c2b1"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#94ff7e"
- select="#b8efa8"
- active="#b8efa8"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#c2c6ff"
- select="#8fdbff"
- active="#8fdbff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#ff9dd7"
- select="#ff9edc"
- active="#ff9edc"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#cc95ff"
- select="#d9a9ff"
- active="#d9a9ff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#93f2c6"
- select="#85dace"
- active="#85dace"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#7bb3c9"
- select="#a4cfdb"
- active="#a4cfdb"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#ffd10c"
- select="#becb00"
- active="#becb00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#585858"
- select="#afafaf"
- active="#afafaf"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#df9aff"
- select="#dd9aff"
- active="#dd9aff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#afe735"
- select="#aad851"
- active="#aad851"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#d6d6d6"
- select="#e0e0e0"
- active="#e0e0e0"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#ffaa88"
- select="#ffac8e"
- active="#ffac8e"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#35df4a"
- select="#35d846"
- active="#35d846"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#787878"
- select="#787878"
- active="#aeaeae"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="1"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.15"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.05"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="10"
- font_kerning_style="FITTED"
- shadow="1"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.05"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/print_friendly.xml b/release/scripts/presets/interface_theme/print_friendly.xml
deleted file mode 100644
index b607e29bbe4..00000000000
--- a/release/scripts/presets/interface_theme/print_friendly.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.3"
- menu_shadow_width="4"
- icon_alpha="1"
- icon_saturation="0.5"
- widget_emboss="#000000ff"
- editor_outline="#000000"
- widget_text_cursor="#3399e6"
- axis_x="#ff3352"
- axis_y="#8bdc00"
- axis_z="#2890ff"
- gizmo_hi="#ffffff"
- gizmo_primary="#f5f14d"
- gizmo_secondary="#63ffff"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#000000ff"
- icon_collection="#000000ff"
- icon_object="#c7854eff"
- icon_object_data="#008667ff"
- icon_modifier="#4d7097ff"
- icon_shading="#b65d65ff"
- icon_folder="#e3c16eff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#668cccff"
- item="#191919ff"
- text="#1a1a1a"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2ff"
- item="#191919ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5094ffff"
- item="#000000ff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2e6"
- item="#ffffffff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#d8d8d8ff"
- item="#5680c2ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="-8"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2e6"
- item="#ffffffff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-15"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2ff"
- item="#000000ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2ff"
- item="#80b1ffff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-10"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#d8d8d8ff"
- item="#5680c2ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-4"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5680c2ff"
- item="#000000ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#d8d8d8ff"
- item="#000000ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffcc"
- inner_sel="#5680c2e6"
- item="#d8d8d8ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#000000"
- inner="#d8d8d8ff"
- inner_sel="#585858ff"
- item="#d8d8d8ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffef"
- inner_sel="#5680c2e6"
- item="#d8d8d8ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#19191a"
- inner="#19191aef"
- inner_sel="#19191aef"
- item="#19191aef"
- text="#e6e6e6"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#000000"
- inner="#00000000"
- inner_sel="#5680c2e6"
- item="#ffffff8f"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="38"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#a4a4a4ff"
- item="#d8d8d8ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#646464b4"
- item="#5094ffff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#000000"
- inner="#00000000"
- inner_sel="#5680c2ff"
- item="#5094ffff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#73be4c"
- inner_anim_sel="#5aa633"
- inner_key="#f0eb64"
- inner_key_sel="#d7d34b"
- inner_driven="#b400ff"
- inner_driven_sel="#9900e6"
- inner_overridden="#6bf3cc"
- inner_overridden_sel="#5fd9b6"
- inner_changed="#cc7529"
- inner_changed_sel="#e6852d"
- blend="0.5"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#5094ffff"
- item="#28292dff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#000000ff"
- clipping_border_3d="#313131ff"
- wire="#000000"
- wire_edit="#000000"
- gp_vertex="#000000"
- gp_vertex_select="#00cc9e"
- gp_vertex_size="3"
- text_grease_pencil="#00e6b2"
- object_selected="#cc5d00"
- object_active="#ffaf29"
- text_keyframe="#ddd700"
- camera="#000000"
- empty="#000000"
- light="#00000028"
- speaker="#000000"
- vertex="#000000"
- vertex_select="#00b38a"
- vertex_size="3"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- edge_select="#00cc9e"
- edge_seam="#db2512"
- edge_sharp="#00ffff"
- edge_crease="#cc0099"
- edge_bevel="#00a5ff"
- edge_facesel="#4b4b4b"
- freestyle_edge_mark="#ffcc7f"
- face="#00000012"
- face_select="#29cca766"
- face_dot="#a1e6d6"
- facedot_size="3"
- freestyle_face_mark="#ffcc7f4d"
- face_back="#ff0000b3"
- face_front="#0000ffb3"
- nurb_uline="#909000"
- nurb_vline="#803060"
- nurb_sel_uline="#f0ff40"
- nurb_sel_vline="#f090a0"
- act_spline="#89e689"
- 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"
- extra_face_angle="#b3b3ff"
- extra_face_area="#00cc00"
- editmesh_active="#00ff0081"
- normal="#22dddd"
- vertex_normal="#2361dd"
- split_normal="#dd23dd"
- bone_pose="#50c8ff"
- bone_pose_active="#8cffff"
- bone_solid="#e6e6e6"
- bone_locked_weight="#ff000080"
- bundle_solid="#c8c8c8"
- camera_path="#000000"
- skin_root="#b44d4d"
- view_overlay="#000000"
- transform="#000000"
- frame_current="#60c040"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#000000"
- text="#000000"
- text_hi="#000000"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffff00"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <gradients>
- <ThemeGradientColors
- background_type="SINGLE_COLOR"
- high_gradient="#ffffff"
- gradient="#e6e6e6"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#5b5b5b"
- frame_current="#5680c2"
- time_scrub_background="#d8d8d8ff"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- window_sliders="#969696"
- channels_region="#999999"
- dopesheet_channel="#2e6399"
- dopesheet_subchannel="#7aa4cc"
- channel_group="#278c0e"
- active_channels_group="#4db135"
- preview_range="#a14d0066"
- vertex="#000000"
- vertex_select="#ff8500"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#d8d8d8"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#76afff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#a4a4a4"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#d8d8d8ff"
- button_title="#1a1a1a"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#858585"
- view_sliders="#969696"
- dopesheet_channel="#5a85b2"
- nla_track="#424242"
- active_action="#cc701a66"
- active_action_unset="#9987614d"
- preview_range="#a14d0066"
- strips="#0c0a0a"
- strips_selected="#ff8c00"
- transition_strips="#1c2630"
- transition_strips_selected="#2e75db"
- meta_strips="#332642"
- meta_strips_selected="#692196"
- sound_strips="#2b3d3d"
- sound_strips_selected="#1f7a7a"
- tweak="#4df31a"
- tweak_duplicate="#d90000"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- frame_current="#5680c2"
- time_scrub_background="#d8d8d8ff"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#d8d8d8"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#818181"
- frame_current="#5680c2"
- time_scrub_background="#d8d8d8ff"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- value_sliders="#000000"
- view_sliders="#969696"
- dopesheet_channel="#2e639924"
- dopesheet_subchannel="#7aa4cc24"
- channels="#b1b1b1ff"
- channels_selected="#60c04044"
- channel_group="#278c0e37"
- active_channels_group="#4eb33555"
- long_key="#1a151580"
- long_key_selected="#ff8c00cc"
- keyframe="#e8e8e8"
- keyframe_selected="#ffbe33"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#94e575"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#5c5656"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- keyframe_scale_factor="1"
- summary="#d3660066"
- preview_range="#a14d0066"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#d8d8d8"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000000"
- vertex_select="#00b38a"
- vertex_size="3"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- face="#ffffff0a"
- face_select="#29cca766"
- face_dot="#a1e6d6"
- facedot_size="3"
- freestyle_face_mark="#7fff7f33"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#ffffff80"
- wire_edit="#c0c0c0"
- edge_select="#00cc9e"
- scope_back="#d8d8d8ff"
- preview_stitch_face="#7f7f0033"
- preview_stitch_edge="#ff00ff33"
- preview_stitch_vert="#0000ff33"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#5680c2"
- 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"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#d8d8d8"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffff00"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#000000"
- window_sliders="#a0a0a0"
- movie_strip="#516987"
- movieclip_strip="#20208f"
- image_strip="#6d5881"
- scene_strip="#4e983e"
- audio_strip="#2e8f8f"
- effect_strip="#a9547c"
- transition_strip="#a25f6f"
- meta_strip="#6d9183"
- text_strip="#a29700"
- frame_current="#5680c2"
- time_scrub_background="#d8d8d8ff"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- keyframe="#ff8500"
- draw_action="#50c8ff"
- preview_back="#a4a4a4"
- metadatabg="#000000"
- metadatatext="#ffffff"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#d8d8d8ff"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#d0d0d0"
- line_numbers_background="#d8d8d8"
- selected_text="#f7f7ff"
- cursor="#ff0000"
- syntax_builtin="#ff1961"
- syntax_symbols="#ff734d"
- syntax_special="#5f8800"
- syntax_preprocessor="#ad80ff"
- syntax_reserved="#c4753b"
- syntax_comment="#939393"
- syntax_string="#b5a549"
- syntax_numbers="#50dbff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#f15800"
- node_active="#f15800"
- wire="#a7a7a7"
- wire_inner="#999999"
- wire_select="#ffa733"
- selected_text="#7f7070"
- node_backdrop="#e6e6e6ff"
- converter_node="#66c4ff"
- color_node="#ffcb4d"
- group_node="#59b36ab9"
- group_socket_node="#dfc300"
- frame_node="#9b9b9ba0"
- matte_node="#977474"
- distor_node="#749797"
- noodle_curving="0"
- grid_levels="2"
- input_node="#ff6675"
- output_node="#ff6675"
- filter_node="#6c696f"
- vector_node="#9999ff"
- texture_node="#ffc399"
- shader_node="#a7ff99"
- script_node="#6c696f"
- pattern_node="#6c696f"
- layout_node="#6c696f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#a5a5a5"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#337f33"
- selected_highlight="#76afff"
- active="#3b5689"
- selected_object="#7d5454"
- active_object="#ad3535"
- edited_object="#0080624d"
- row_alternate="#ffffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#d8d8d8"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#76afff"
- info_selected_text="#ffffff"
- info_error="#990000ff"
- info_error_text="#ffffff"
- info_warning="#b36a00ff"
- info_warning_text="#ffffff"
- info_info="#5e8bcbff"
- info_info_text="#ffffff"
- info_debug="#d3d3d3ff"
- info_debug_text="#000000"
- info_property="#3ace87ff"
- info_property_text="#ffffff"
- info_operator="#3ace87ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#d8d8d8ff"
- execution_buts="#d8d8d8ff"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#6080ff"
- line_input="#ffffff"
- line_info="#00aa00"
- line_error="#dc6060"
- cursor="#dc6060"
- select="#ffffff30"
- >
- <space>
- <ThemeSpaceGeneric
- back="#000000"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#272727"
- header_text_hi="#ffffff"
- button="#7272727f"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#7f7f00"
- active_marker="#ffffff"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#5680c2"
- time_scrub_background="#d8d8d8ff"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- strips="#0c0a0a"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#d8d8d8"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#d8d8d8"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#2f303599"
- button_title="#ffffff"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#d8d8d8ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#ffffffff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#76afff"
- tab_inactive="#ffffff"
- tab_back="#d8d8d8ff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#d8d8d8ff"
- back="#ffffffcc"
- sub_back="#a4a4a424"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#5ec1ef"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#ffffff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="12"
- font_kerning_style="FITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.3"
- shadow_value="0.7"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.3"
- shadow_value="0.7"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="1"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.3"
- shadow_value="0.7"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/white.xml b/release/scripts/presets/interface_theme/white.xml
deleted file mode 100644
index 26ddf374c22..00000000000
--- a/release/scripts/presets/interface_theme/white.xml
+++ /dev/null
@@ -1,1470 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.215574"
- menu_shadow_width="13"
- icon_alpha="1"
- icon_saturation="1"
- widget_emboss="#9e9e9e12"
- editor_outline="#a5a5a5"
- widget_text_cursor="#ffac0d"
- axis_x="#ff0900"
- axis_y="#93e700"
- axis_z="#007bff"
- gizmo_hi="#000000"
- gizmo_primary="#fab100"
- gizmo_secondary="#00e9e2"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#505050ff"
- icon_collection="#696969ff"
- icon_object="#d66a00ff"
- icon_object_data="#005302ff"
- icon_modifier="#0023adff"
- icon_shading="#fc0000ff"
- icon_folder="#ffab00ff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#dbdbdb"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#bbbbbbff"
- text="#3d3d3d"
- text_sel="#e2e2e2"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.53471"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#dbdbdb"
- inner="#e7e7e7ff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-5"
- roundness="0.517903"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#cfcfcf"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#080808ff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.610632"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#f8f8f8"
- inner="#f1f1f1ff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="0.450676"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#acacac"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-3"
- shadedown="0"
- roundness="0.475886"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#9e9e9e"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#ffffffff"
- text="#3f3f3f"
- text_sel="#313131"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-15"
- roundness="0.571429"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#acacac"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.501096"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#cecece"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.501096"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#cecece"
- inner="#ffffffff"
- inner_sel="#bfe4ffff"
- item="#2ba5ffff"
- text="#313131"
- text_sel="#313131"
- show_shaded="FALSE"
- shadetop="-4"
- shadedown="0"
- roundness="0.522543"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#d8d8d8"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#4c4c4cff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.53471"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#d6d6d6"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#000000ff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.521008"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#ffffff"
- inner="#ffffffff"
- inner_sel="#2492ffff"
- item="#ffffffff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#dddddd"
- inner="#ffffffff"
- inner_sel="#59b9ffff"
- item="#ffffffff"
- text="#313131"
- text_sel="#313131"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.302521"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#cecece"
- inner="#ffffffff"
- inner_sel="#2ba5ffff"
- item="#2ba5ffff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.546219"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#000000"
- inner="#000000ff"
- inner_sel="#59b9ffff"
- item="#19191aef"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.1"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#000000"
- inner="#ffffffff"
- inner_sel="#59b9ffff"
- item="#ffffff8f"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="38"
- shadedown="0"
- roundness="0.282609"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#757575"
- inner="#9b9b9bff"
- inner_sel="#59b9ffff"
- item="#ffffffff"
- text="#313131"
- text_sel="#8b8b8b"
- show_shaded="FALSE"
- shadetop="5"
- shadedown="-5"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#bebebe"
- inner="#ffffffff"
- inner_sel="#59b9ffff"
- item="#59b9ffff"
- text="#313131"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.282609"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#2d2d2d"
- inner="#ffffffff"
- inner_sel="#59b9ffff"
- item="#b3b3b3ff"
- text="#4e4e4e"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.282609"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#86e270"
- inner_anim_sel="#97ff80"
- inner_key="#ffbd11"
- inner_key_sel="#ffe73a"
- inner_driven="#cd7cf3"
- inner_driven_sel="#d193e6"
- inner_overridden="#5ef5f5"
- inner_overridden_sel="#8cffff"
- inner_changed="#ffa25d"
- inner_changed_sel="#ffc193"
- blend="1"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#e9e9e9"
- inner="#f5f5f5ff"
- inner_sel="#59b9ffff"
- item="#2d2d2dff"
- text="#313131"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="-19"
- roundness="0.282609"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#b2b2b253"
- clipping_border_3d="#fafafaff"
- wire="#313131"
- wire_edit="#575757"
- gp_vertex="#000000"
- gp_vertex_select="#ff8500"
- gp_vertex_size="3"
- text_grease_pencil="#ffa028"
- object_selected="#ed5700"
- object_active="#ffa028"
- text_keyframe="#ddd700"
- camera="#4c4c4c"
- empty="#282926"
- light="#722f0037"
- speaker="#334635"
- vertex="#000000"
- vertex_select="#ff7f00"
- vertex_size="3"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- edge_select="#ffa000"
- edge_seam="#9f09db"
- edge_sharp="#356cff"
- edge_crease="#ff3a3a"
- edge_bevel="#1c864c"
- edge_facesel="#4b4b4b"
- freestyle_edge_mark="#7fff7f"
- face="#00000010"
- face_select="#ff850024"
- face_dot="#ff8500"
- facedot_size="3"
- freestyle_face_mark="#7fff7f2b"
- face_back="#ff000080"
- face_front="#ffffff00"
- nurb_uline="#909000"
- nurb_vline="#803060"
- nurb_sel_uline="#a6b12c"
- nurb_sel_vline="#d4808e"
- 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="#ffaf00"
- extra_edge_len="#150806"
- extra_edge_angle="#4d4d00"
- extra_face_angle="#0000cc"
- extra_face_area="#004d00"
- editmesh_active="#ffaf006c"
- normal="#22dddd"
- vertex_normal="#2361dd"
- split_normal="#dd23dd"
- bone_pose="#50c8ff"
- bone_pose_active="#8cffff"
- bone_solid="#c8c8c8"
- bone_locked_weight="#ff000080"
- bundle_solid="#c8c8c8"
- camera_path="#000000"
- skin_root="#b44d4d"
- view_overlay="#000000"
- transform="#000000"
- frame_current="#60c040"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#eeeeee"
- text="#313131"
- text_hi="#ffffff"
- header="#ffffff00"
- header_text="#000000"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#0e0e0e"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#59b9ff"
- tab_inactive="#e4e4e4"
- tab_back="#ddddddff"
- tab_outline="#cecece"
- >
- <gradients>
- <ThemeGradientColors
- background_type="SINGLE_COLOR"
- high_gradient="#ffffff"
- gradient="#ffffff"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#b9d2ef"
- frame_current="#0074e8"
- time_scrub_background="#bae2ffca"
- window_sliders="#a7a7a7"
- channels_region="#ffffff"
- dopesheet_channel="#0074e8"
- dopesheet_subchannel="#72ade8"
- channel_group="#94d49d"
- active_channels_group="#5ea86f"
- preview_range="#a14d0066"
- vertex="#000000"
- vertex_select="#ff8500"
- 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="#000000"
- handle_vertex="#000000"
- handle_vertex_select="#ff8500"
- handle_vertex_size="5"
- >
- <space>
- <ThemeSpaceGeneric
- back="#e2f2ff"
- title="#313131"
- text="#313131"
- text_hi="#202020"
- header="#ffffffff"
- header_text="#202020"
- header_text_hi="#313131"
- button="#ffffff00"
- button_title="#000000"
- button_text="#141414"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#ffffff"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#050505"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#0082ff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#252525"
- text_hi="#000000"
- header="#ffffffff"
- header_text="#eeeeee"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#ffffffff"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#cacaca"
- view_sliders="#cfcfcf"
- dopesheet_channel="#5a85b2"
- nla_track="#424242"
- active_action="#cc701a66"
- active_action_unset="#9987614d"
- preview_range="#a14d0066"
- strips="#ffb243"
- strips_selected="#ff8c00"
- transition_strips="#8cb2db"
- transition_strips_selected="#2e75db"
- meta_strips="#bd8ff6"
- meta_strips_selected="#b37fdd"
- sound_strips="#83b9b9"
- sound_strips_selected="#1f7a7a"
- tweak="#4df31a"
- tweak_duplicate="#d90000"
- keyframe_border="#292929ff"
- keyframe_border_selected="#1f1f1fff"
- frame_current="#0074e8"
- time_scrub_background="#bae2ffca"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#313131"
- text="#313131"
- text_hi="#313131"
- header="#ffffffff"
- header_text="#313131"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#313131"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#e7e7e7"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#bbbbbb"
- frame_current="#0074e8"
- time_scrub_background="#bae2ffca"
- value_sliders="#3b3b3b"
- view_sliders="#c0c0c0"
- dopesheet_channel="#76bbff24"
- dopesheet_subchannel="#b0f2ff24"
- channels="#c0c0c031"
- channels_selected="#8a8a8a31"
- channel_group="#94d49d37"
- active_channels_group="#5ea86f28"
- long_key="#00000049"
- long_key_selected="#ff8c00cc"
- keyframe="#ffffff"
- keyframe_selected="#ffbe33"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#94e575"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#ccc1c1"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#5f5f5fff"
- keyframe_border_selected="#242424ff"
- keyframe_scale_factor="1"
- summary="#288fe859"
- preview_range="#a14d0037"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#313131"
- text="#313131"
- text_hi="#313131"
- header="#ffffffff"
- header_text="#1f1f1f"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#e5e5e5"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#d6d6d6"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000000"
- vertex_select="#ff8500"
- vertex_size="3"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- face="#bbbbbb0a"
- face_select="#ff85003c"
- face_dot="#ff8500"
- facedot_size="3"
- freestyle_face_mark="#7fff7f33"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#ffffff80"
- wire_edit="#dadada"
- edge_select="#ff8500"
- scope_back="#727272ff"
- preview_stitch_face="#7f7f0033"
- preview_stitch_edge="#ff00ff33"
- preview_stitch_vert="#0000ff33"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#606060ff"
- frame_current="#60c040"
- metadatabg="#000000"
- metadatatext="#000000"
- handle_free="#771c0d"
- handle_auto="#909000"
- handle_align="#803060"
- handle_sel_free="#b2574b"
- 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"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#e9e9e9"
- title="#313131"
- text="#313131"
- text_hi="#ffffff"
- header="#ffffffff"
- header_text="#eeeeee"
- header_text_hi="#000000"
- button="#ffffffd0"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#404040"
- window_sliders="#a0a0a0"
- movie_strip="#8bb5e9"
- movieclip_strip="#6a76da"
- image_strip="#c9a4f1"
- scene_strip="#67ca56"
- audio_strip="#3ebebe"
- effect_strip="#dd6ea2"
- transition_strip="#d37c8f"
- meta_strip="#6d9183"
- text_strip="#dbda79"
- frame_current="#0074e8"
- time_scrub_background="#bae2ffca"
- keyframe="#ff8500"
- draw_action="#50c8ff"
- preview_back="#b4b4b4"
- metadatabg="#e2e2e2"
- metadatatext="#747474"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#313131"
- text="#313131"
- text_hi="#313131"
- header="#ffffffff"
- header_text="#3a3a3a"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#000000"
- navigation_bar="#ffffff00"
- execution_buts="#00000000"
- tab_active="#59b9ff"
- tab_inactive="#fafafa"
- tab_back="#e0e0e0ff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#000000"
- header="#ffffffff"
- header_text="#383838"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#dadadaff"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#c0c0c0"
- line_numbers_background="#f6f6fd"
- selected_text="#b6c4ce"
- cursor="#ff9100"
- syntax_builtin="#ff1961"
- syntax_symbols="#ee6d49"
- syntax_special="#7fb800"
- syntax_preprocessor="#ad80ff"
- syntax_reserved="#c4753b"
- syntax_comment="#4e4e4e"
- syntax_string="#c9941d"
- syntax_numbers="#0d9bc2"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#313131"
- text="#313131"
- text_hi="#313131"
- header="#ffffff00"
- header_text="#eeeeee"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff43"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#003bc9"
- node_active="#0030ff"
- wire="#999999"
- wire_inner="#f1efff"
- wire_select="#0099ff"
- selected_text="#7f7070"
- node_backdrop="#d3edffff"
- converter_node="#66c4ff"
- color_node="#ffe74d"
- group_node="#8fdb58b9"
- group_socket_node="#1a1a1a"
- frame_node="#009eff12"
- matte_node="#975b5b"
- distor_node="#c5ffff"
- noodle_curving="3"
- input_node="#ff4e5d"
- output_node="#0081ff"
- filter_node="#b09bff"
- vector_node="#9b80ff"
- texture_node="#ff964b"
- shader_node="#4fff8b"
- script_node="#14c2c2"
- pattern_node="#bbb8c0"
- layout_node="#c6bfc9"
- >
- <space>
- <ThemeSpaceGeneric
- back="#edf7ff"
- title="#ffffff"
- text="#272727"
- text_hi="#686868"
- header="#ffffffff"
- header_text="#353535"
- header_text_hi="#000000"
- button="#ffffff00"
- button_title="#000000"
- button_text="#252525"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#59b9ff"
- tab_inactive="#f8f8f8"
- tab_back="#ddddddff"
- tab_outline="#e9e9e9"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#2e2e2e"
- list_title="#000000"
- list_text="#cccccc"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#0088ff"
- selected_highlight="#b0deff"
- active="#59b9ff"
- selected_object="#e95900"
- active_object="#ffffff"
- edited_object="#85fcffff"
- row_alternate="#00000007"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#ffffffff"
- header_text="#000000"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#ffffff00"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#2ba5ff"
- info_selected_text="#ffffff"
- info_error="#e90000ff"
- info_error_text="#ffffff"
- info_warning="#eb8b00ff"
- info_warning_text="#ffffff"
- info_info="#53bb00ff"
- info_info_text="#ffffff"
- info_debug="#7a7a7aff"
- info_debug_text="#ffffff"
- info_property="#0bdb65ff"
- info_property_text="#ffffff"
- info_operator="#00cea3ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#eeeeee"
- text="#000000"
- text_hi="#000000"
- header="#ffffffff"
- header_text="#3a3a3a"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#3a3a3a"
- text="#363636"
- text_hi="#4c4c4c"
- header="#ffffffff"
- header_text="#363636"
- header_text_hi="#ffffff"
- button="#424242ff"
- button_title="#ffffff"
- button_text="#e5e5e5"
- button_text_hi="#ffffff"
- navigation_bar="#ffffffff"
- execution_buts="#ffffffff"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#2f69c5"
- line_input="#3f3f3f"
- line_info="#6d9900"
- line_error="#cc005f"
- cursor="#ff9100"
- select="#00000030"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#ffffff"
- text="#000000"
- text_hi="#000000"
- header="#ffffffff"
- header_text="#3a3a3a"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#7f7f00"
- active_marker="#000000"
- selected_marker="#ffff00"
- disabled_marker="#7f0000"
- locked_marker="#7f7f7f"
- path_before="#ff0000"
- path_after="#0000ff"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#5680c2"
- time_scrub_background="#292929e6"
- strips="#0c0a0a"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#eeeeee"
- text="#000000"
- text_hi="#000000"
- header="#ffffffff"
- header_text="#eeeeee"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#666666"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#ffffff"
- title="#000000"
- text="#000000"
- text_hi="#000000"
- header="#ffce67ff"
- header_text="#3a3a3a"
- header_text_hi="#000000"
- button="#ffffffff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#ffffff"
- tab_back="#ffffffff"
- tab_outline="#000000"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#2e2e2e"
- title="#000000"
- text="#838383"
- text_hi="#000000"
- header="#ebebebff"
- header_text="#363636"
- header_text_hi="#000000"
- button="#353535ff"
- button_title="#000000"
- button_text="#3a3a3a"
- button_text_hi="#000000"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#ffffff"
- tab_inactive="#e4e4e4"
- tab_back="#cececeff"
- tab_outline="#cecece"
- >
- <panelcolors>
- <ThemePanelColors
- header="#ffffff12"
- back="#f8f8f8ff"
- sub_back="#00000007"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#5ec1ef"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="12"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.5"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.5"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="11"
- font_kerning_style="FITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0.1"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/presets/interface_theme/xsi.xml b/release/scripts/presets/interface_theme/xsi.xml
deleted file mode 100644
index 4ed66a2a2c6..00000000000
--- a/release/scripts/presets/interface_theme/xsi.xml
+++ /dev/null
@@ -1,1481 +0,0 @@
-<bpy>
- <Theme>
- <user_interface>
- <ThemeUserInterface
- menu_shadow_fac="0.536367"
- menu_shadow_width="0"
- icon_alpha="0.8"
- icon_saturation="0.803436"
- widget_emboss="#66666605"
- editor_outline="#bebebe"
- widget_text_cursor="#3399e6"
- axis_x="#e70003"
- axis_y="#00c81c"
- axis_z="#220094"
- gizmo_hi="#ffffff"
- gizmo_primary="#f5f14d"
- gizmo_secondary="#63ffff"
- gizmo_a="#4da84d"
- gizmo_b="#a33535"
- icon_scene="#000000ff"
- icon_collection="#000000ff"
- icon_object="#003368ff"
- icon_object_data="#313131ff"
- icon_modifier="#383838ff"
- icon_shading="#ac3a00ff"
- icon_folder="#e3c16eff"
- icon_border_intensity="0"
- >
- <wcol_regular>
- <ThemeWidgetColors
- outline="#000000"
- inner="#afadadff"
- inner_sel="#dbd9d9ff"
- item="#999999ff"
- text="#080808"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="-6"
- shadedown="2"
- roundness="0.692096"
- >
- </ThemeWidgetColors>
- </wcol_regular>
- <wcol_tool>
- <ThemeWidgetColors
- outline="#0c0c0c"
- inner="#8f8f8fff"
- inner_sel="#f0ffe7ff"
- item="#999999ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="TRUE"
- shadetop="27"
- shadedown="16"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tool>
- <wcol_toolbar_item>
- <ThemeWidgetColors
- outline="#757575"
- inner="#b3b0b0ff"
- inner_sel="#dddadaff"
- item="#686868ff"
- text="#ffffff"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="-18"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toolbar_item>
- <wcol_radio>
- <ThemeWidgetColors
- outline="#000000"
- inner="#b3b1b0ff"
- inner_sel="#dcd9d9ff"
- item="#9c9c9cff"
- text="#3c3c3c"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="-2"
- shadedown="1"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_radio>
- <wcol_text>
- <ThemeWidgetColors
- outline="#989594"
- inner="#414141ff"
- inner_sel="#414141ff"
- item="#3399ffff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="TRUE"
- shadetop="-2"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_text>
- <wcol_option>
- <ThemeWidgetColors
- outline="#383530"
- inner="#7d957fff"
- inner_sel="#b4d8b1ff"
- item="#000000ff"
- text="#4a3b36"
- text_sel="#000000"
- show_shaded="TRUE"
- shadetop="-2"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_option>
- <wcol_toggle>
- <ThemeWidgetColors
- outline="#888888"
- inner="#aca6a6ff"
- inner_sel="#ffffffff"
- item="#aca8a7ff"
- text="#1c1c1c"
- text_sel="#1a1a1a"
- show_shaded="TRUE"
- shadetop="-3"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_toggle>
- <wcol_num>
- <ThemeWidgetColors
- outline="#4b4b4b"
- inner="#363333ff"
- inner_sel="#363333ff"
- item="#3399ffff"
- text="#ffffff"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-5"
- shadedown="5"
- roundness="0.8"
- >
- </ThemeWidgetColors>
- </wcol_num>
- <wcol_numslider>
- <ThemeWidgetColors
- outline="#474747"
- inner="#898989ff"
- inner_sel="#3399ffff"
- item="#c8c8c8ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="-5"
- shadedown="5"
- roundness="0.8"
- >
- </ThemeWidgetColors>
- </wcol_numslider>
- <wcol_box>
- <ThemeWidgetColors
- outline="#8b8b8b"
- inner="#969594ff"
- inner_sel="#7780aaff"
- item="#bbbbbbff"
- text="#2a2a2a"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="23"
- shadedown="6"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_box>
- <wcol_menu>
- <ThemeWidgetColors
- outline="#514f52"
- inner="#889399ff"
- inner_sel="#5786acff"
- item="#000000ff"
- text="#000000"
- text_sel="#000000"
- show_shaded="TRUE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu>
- <wcol_pulldown>
- <ThemeWidgetColors
- outline="#474747"
- inner="#aeaeaeff"
- inner_sel="#aaa8a6ff"
- item="#ccccccff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pulldown>
- <wcol_menu_back>
- <ThemeWidgetColors
- outline="#474747"
- inner="#e3e4e2ff"
- inner_sel="#a8a8a8ff"
- item="#ccccccff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_back>
- <wcol_pie_menu>
- <ThemeWidgetColors
- outline="#0a0a0a"
- inner="#aca8a7ff"
- inner_sel="#b1d1d8ff"
- item="#1f8aaaff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="10"
- shadedown="-10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_pie_menu>
- <wcol_tooltip>
- <ThemeWidgetColors
- outline="#a29b7f"
- inner="#fff0cce6"
- inner_sel="#2d2d2de6"
- item="#000000ff"
- text="#000000"
- text_sel="#8d612c"
- show_shaded="FALSE"
- shadetop="25"
- shadedown="-20"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tooltip>
- <wcol_menu_item>
- <ThemeWidgetColors
- outline="#474747"
- inner="#00000000"
- inner_sel="#0e2b75ff"
- item="#000000ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="-10"
- shadedown="10"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_menu_item>
- <wcol_scroll>
- <ThemeWidgetColors
- outline="#82807f"
- inner="#928c8bff"
- inner_sel="#aaa8a6ff"
- item="#9a9794ff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="TRUE"
- shadetop="4"
- shadedown="-5"
- roundness="1"
- >
- </ThemeWidgetColors>
- </wcol_scroll>
- <wcol_progress>
- <ThemeWidgetColors
- outline="#474747"
- inner="#aaa8a6ff"
- inner_sel="#aaa8a6ff"
- item="#96c78eff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="TRUE"
- shadetop="3"
- shadedown="-3"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_progress>
- <wcol_list_item>
- <ThemeWidgetColors
- outline="#adadad"
- inner="#7f7f7f00"
- inner_sel="#4286ff9a"
- item="#4849ceff"
- text="#000000"
- text_sel="#ffffff"
- show_shaded="FALSE"
- shadetop="0"
- shadedown="0"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_list_item>
- <wcol_state>
- <ThemeWidgetStateColors
- inner_anim="#c9b200"
- inner_anim_sel="#92af79"
- inner_key="#9e575a"
- inner_key_sel="#aa3323"
- inner_driven="#c69cb1"
- inner_driven_sel="#ecaacd"
- inner_overridden="#19c3c3"
- inner_overridden_sel="#118f8f"
- inner_changed="#cc7529"
- inner_changed_sel="#e6852d"
- blend="0.919679"
- >
- </ThemeWidgetStateColors>
- </wcol_state>
- <wcol_tab>
- <ThemeWidgetColors
- outline="#a6a6a6"
- inner="#39586800"
- inner_sel="#bebebeff"
- item="#ffffffff"
- text="#000000"
- text_sel="#000000"
- show_shaded="FALSE"
- shadetop="36"
- shadedown="19"
- roundness="0.4"
- >
- </ThemeWidgetColors>
- </wcol_tab>
- </ThemeUserInterface>
- </user_interface>
- <view_3d>
- <ThemeView3D
- grid="#0000005f"
- clipping_border_3d="#313131ff"
- wire="#ff7a00"
- wire_edit="#f7ca00"
- gp_vertex="#4e98be"
- gp_vertex_select="#ff8500"
- gp_vertex_size="3"
- text_grease_pencil="#b5e61d"
- object_selected="#e59b27"
- object_active="#ffffff"
- text_keyframe="#ddd700"
- camera="#3600c3"
- empty="#000000"
- light="#00000028"
- speaker="#c2e787"
- vertex="#0001a6"
- vertex_select="#ff2100"
- vertex_size="3"
- vertex_bevel="#00a5ff"
- vertex_unreferenced="#000000"
- edge_select="#ff001c"
- edge_seam="#f0703b"
- edge_sharp="#49a1ec"
- edge_crease="#eb3bdd"
- edge_bevel="#00a5ff"
- edge_facesel="#272727"
- freestyle_edge_mark="#7fff7f"
- face="#90909099"
- face_select="#a11f137c"
- face_dot="#52f27e"
- facedot_size="1"
- freestyle_face_mark="#7fff7f33"
- face_back="#ff0000b3"
- face_front="#0000ffb3"
- nurb_uline="#a5a5a5"
- nurb_vline="#d77ab1"
- nurb_sel_uline="#ffffff"
- nurb_sel_vline="#f090a0"
- act_spline="#95daa0"
- handle_free="#c6c6c6"
- handle_auto="#30b6e5"
- handle_vect="#adafaf"
- handle_sel_vect="#ffffff"
- handle_align="#e277b1"
- handle_sel_free="#f7fffc"
- handle_sel_auto="#ffffff"
- handle_sel_align="#ffffff"
- lastsel_point="#ffffff"
- extra_edge_len="#200000"
- extra_edge_angle="#000000"
- extra_face_angle="#cccccc"
- extra_face_area="#cccccc"
- editmesh_active="#ff2e00ff"
- normal="#9cfcc8"
- vertex_normal="#68a1db"
- split_normal="#dd23dd"
- bone_pose="#00a199"
- bone_pose_active="#8cffff"
- bone_solid="#006200"
- bone_locked_weight="#ff000080"
- bundle_solid="#c9c9c9"
- camera_path="#000000"
- skin_root="#000000"
- view_overlay="#afafaf"
- transform="#ffff00"
- frame_current="#53c03b"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- outline_width="1"
- object_origin_size="6"
- >
- <space>
- <ThemeSpaceGradient
- title="#ffffff"
- text="#ffffff"
- text_hi="#ffffff"
- header="#78787800"
- header_text="#121212"
- header_text_hi="#ffffff"
- button="#aca8a700"
- button_title="#000000"
- button_text="#222222"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#8b8484"
- tab_back="#51725aff"
- tab_outline="#0e0c0e"
- >
- <gradients>
- <ThemeGradientColors
- background_type="SINGLE_COLOR"
- high_gradient="#6c6c6c"
- gradient="#a3a3a3"
- >
- </ThemeGradientColors>
- </gradients>
- <panelcolors>
- <ThemePanelColors
- header="#8b6985ff"
- back="#f5ecec99"
- sub_back="#cde2f59a"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGradient>
- </space>
- </ThemeView3D>
- </view_3d>
- <graph_editor>
- <ThemeGraphEditor
- grid="#918d8c"
- frame_current="#ff1600"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- window_sliders="#4d4d4d"
- channels_region="#4d4d4d"
- dopesheet_channel="#aaa8a6"
- dopesheet_subchannel="#aaa8a6"
- channel_group="#8a9dac"
- active_channels_group="#95adc1"
- preview_range="#a14d0066"
- vertex="#575757"
- vertex_select="#ffffff"
- vertex_size="6"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- handle_free="#252525"
- handle_auto="#696969"
- handle_vect="#191919"
- handle_sel_vect="#ffffff"
- handle_align="#1d1d1d"
- handle_sel_free="#ececec"
- handle_sel_auto="#d4d4d4"
- handle_sel_align="#f3f3f3"
- handle_auto_clamped="#000000"
- handle_sel_auto_clamped="#000000"
- lastsel_point="#000000"
- handle_vertex="#525252"
- handle_vertex_select="#f1f1f1"
- handle_vertex_size="5"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca9a8ff"
- button_title="#0e0e0e"
- button_text="#222222"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#aaa8a6"
- list_title="#676767"
- list_text="#222222"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeGraphEditor>
- </graph_editor>
- <file_browser>
- <ThemeFileBrowser
- selected_file="#4e88bd"
- >
- <space>
- <ThemeSpaceGeneric
- back="#a5a3a3"
- title="#1300aa"
- text="#222222"
- text_hi="#ebebeb"
- header="#6c7285ff"
- header_text="#a7a7a7"
- header_text_hi="#b8b8b8"
- button="#a7a2a4ff"
- button_title="#1b1b1b"
- button_text="#144b00"
- button_text_hi="#898c92"
- navigation_bar="#00000023"
- execution_buts="#444444ff"
- tab_active="#928a8a"
- tab_inactive="#a5a5a5"
- tab_back="#86898dff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#0000000c"
- back="#9090907e"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeFileBrowser>
- </file_browser>
- <nla_editor>
- <ThemeNLAEditor
- grid="#918d8c"
- view_sliders="#b5b5b5"
- dopesheet_channel="#b0b1b1"
- nla_track="#7cac80"
- active_action="#ffefb400"
- active_action_unset="#8d898f45"
- preview_range="#b1520066"
- strips="#5a8a59"
- strips_selected="#61ae7d"
- transition_strips="#b67aff"
- transition_strips_selected="#bd2cff"
- meta_strips="#00880e"
- meta_strips_selected="#78b463"
- sound_strips="#a59c61"
- sound_strips_selected="#b2aa8f"
- tweak="#31c5ec"
- tweak_duplicate="#6258ba"
- keyframe_border="#e7eaa7ff"
- keyframe_border_selected="#ffffffff"
- frame_current="#a71100"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#a3a3a3"
- header_text_hi="#cccccc"
- button="#aca8a7ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#ded8d7"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000000"
- back="#72727200"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#aca8a7"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#000000"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNLAEditor>
- </nla_editor>
- <dopesheet_editor>
- <ThemeDopeSheet
- grid="#7f7f7f"
- frame_current="#902119"
- time_scrub_background="#7f837fe6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- value_sliders="#141414"
- view_sliders="#4c4c4c"
- dopesheet_channel="#9baeb924"
- dopesheet_subchannel="#aaa8a624"
- channels="#9baeb9ff"
- channels_selected="#a0e7d944"
- channel_group="#8a9dac37"
- active_channels_group="#95adc155"
- long_key="#00000080"
- long_key_selected="#fffd00cc"
- keyframe="#bfd39d"
- keyframe_selected="#800000"
- keyframe_extreme="#e8b3cc"
- keyframe_extreme_selected="#f28080"
- keyframe_breakdown="#b3dbe8"
- keyframe_breakdown_selected="#54bfed"
- keyframe_jitter="#ace493"
- keyframe_jitter_selected="#61c042"
- keyframe_movehold="#5c5656"
- keyframe_movehold_selected="#ffaf23"
- keyframe_border="#000000ff"
- keyframe_border_selected="#000000ff"
- keyframe_scale_factor="1"
- summary="#afa99ab8"
- preview_range="#a14d0066"
- interpolation_line="#94e575cc"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#ffffff"
- text="#252525"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#000000"
- button_text="#111111"
- button_text_hi="#a3a3a3"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#aaa8a6"
- list_title="#cccccc"
- list_text="#131313"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeDopeSheet>
- </dopesheet_editor>
- <image_editor>
- <ThemeImageEditor
- vertex="#000afa"
- vertex_select="#a00200"
- vertex_size="3"
- vertex_bevel="#000000"
- vertex_unreferenced="#000000"
- face="#00000032"
- face_select="#ff00004b"
- face_dot="#ffffff"
- facedot_size="2"
- freestyle_face_mark="#00000000"
- face_back="#00000000"
- face_front="#00000000"
- editmesh_active="#00ff7580"
- wire_edit="#d3d600"
- edge_select="#ffe800"
- scope_back="#aca8a7ff"
- preview_stitch_face="#3639ae26"
- preview_stitch_edge="#ff8500b2"
- preview_stitch_vert="#ff85007f"
- preview_stitch_stitchable="#00ff00ff"
- preview_stitch_unstitchable="#ff0000ff"
- preview_stitch_active="#e1d2c323"
- uv_shadow="#707070ff"
- uv_others="#ffe8a4ff"
- frame_current="#60c040"
- 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"
- paint_curve_handle="#7fff7f7f"
- paint_curve_pivot="#ff7f7f7f"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#ffffff"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#383838"
- button_text="#222222"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeImageEditor>
- </image_editor>
- <sequence_editor>
- <ThemeSequenceEditor
- grid="#525252"
- window_sliders="#777777"
- movie_strip="#87a4c3"
- movieclip_strip="#95add0"
- image_strip="#c99ac0"
- scene_strip="#91b1a0"
- audio_strip="#a5a490"
- effect_strip="#be8c76"
- transition_strip="#d9777a"
- meta_strip="#91918d"
- text_strip="#a29700"
- frame_current="#0183b8"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- keyframe="#ffeb89"
- draw_action="#50c8ff"
- preview_back="#000000"
- metadatabg="#000000"
- metadatatext="#ffffff"
- preview_range="#a14d0066"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#a3a3a3"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#111111"
- button_text="#111111"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeSequenceEditor>
- </sequence_editor>
- <properties>
- <ThemeProperties>
- <space>
- <ThemeSpaceGeneric
- back="#b4b2b0"
- title="#222222"
- text="#222222"
- text_hi="#ffffff"
- header="#b4b2b0ff"
- header_text="#272727"
- header_text_hi="#000000"
- button="#79767aff"
- button_title="#4c4c4c"
- button_text="#222222"
- button_text_hi="#ffffff"
- navigation_bar="#9f9f9fff"
- execution_buts="#00000000"
- tab_active="#acacac"
- tab_inactive="#888888"
- tab_back="#929292ff"
- tab_outline="#918f8e"
- >
- <panelcolors>
- <ThemePanelColors
- header="#9f9f9fff"
- back="#cccccc00"
- sub_back="#00000000"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeProperties>
- </properties>
- <text_editor>
- <ThemeTextEditor
- line_numbers="#d0d0d0"
- line_numbers_background="#a3a3a3"
- selected_text="#f1e593"
- cursor="#54da70"
- syntax_builtin="#3162b2"
- syntax_symbols="#4c4c4c"
- syntax_special="#ca0c97"
- syntax_preprocessor="#32008c"
- syntax_reserved="#8c3c00"
- syntax_comment="#535353"
- syntax_string="#c31736"
- syntax_numbers="#b62440"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#222222"
- text_hi="#ffffff"
- header="#aca8a700"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#222222"
- button_text="#333333"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTextEditor>
- </text_editor>
- <node_editor>
- <ThemeNodeEditor
- node_selected="#ffffff"
- node_active="#63ff00"
- wire="#222222"
- wire_inner="#727371"
- wire_select="#ffffff"
- selected_text="#ffffff"
- node_backdrop="#d4d4d4ff"
- converter_node="#56b68b"
- color_node="#94b6a7"
- group_node="#aca8a7ff"
- group_socket_node="#79bef2"
- frame_node="#d3cecdff"
- matte_node="#79f2a0"
- distor_node="#eef279"
- noodle_curving="0"
- grid_levels="2"
- input_node="#ee8513"
- output_node="#ff8b00"
- filter_node="#ff0000"
- vector_node="#94b6a7"
- texture_node="#ee7402"
- shader_node="#94b6a7"
- script_node="#f2b077"
- pattern_node="#a67c49"
- layout_node="#000000"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#a3a3a3"
- text="#222222"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#333333"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#222222"
- button_text="#222222"
- button_text_hi="#c5c5c5"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#4d4d4d"
- list_title="#383838"
- list_text="#676767"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeNodeEditor>
- </node_editor>
- <outliner>
- <ThemeOutliner
- match="#aff193"
- selected_highlight="#e9e9e9"
- active="#ffffff"
- selected_object="#000000"
- active_object="#000000"
- edited_object="#00806266"
- row_alternate="#ffffff00"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#ffffff"
- text="#000000"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#0f0f0f"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeOutliner>
- </outliner>
- <info>
- <ThemeInfo
- info_selected="#6080ff"
- info_selected_text="#ffffff"
- info_error="#dc0000ff"
- info_error_text="#000000"
- info_warning="#dc8060ff"
- info_warning_text="#000000"
- info_info="#1d4383ff"
- info_info_text="#000000"
- info_debug="#c4c4c4ff"
- info_debug_text="#000000"
- info_property="#3ace87ff"
- info_property_text="#ffffff"
- info_operator="#3ace87ff"
- info_operator_text="#ffffff"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeInfo>
- </info>
- <preferences>
- <ThemePreferences>
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#222222"
- text="#222222"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#4b4b4bff"
- execution_buts="#4b4b4bff"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#96969eff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemePreferences>
- </preferences>
- <console>
- <ThemeConsole
- line_output="#6080ff"
- line_input="#ffffff"
- line_info="#00aa00"
- line_error="#dc3a77"
- cursor="#9cfcc8"
- select="#ffffff30"
- >
- <space>
- <ThemeSpaceGeneric
- back="#0c0c0c"
- title="#000000"
- text="#000000"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#4d4d4dff"
- button_title="#131313"
- button_text="#131313"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeConsole>
- </console>
- <clip_editor>
- <ThemeClipEditor
- marker_outline="#000000"
- marker="#71cd7f"
- active_marker="#ffffff"
- selected_marker="#ff2f7a"
- disabled_marker="#b54636"
- locked_marker="#7f7f7f"
- path_before="#22d8d1"
- path_after="#5a7575"
- path_keyframe_before="#ffc4c4"
- path_keyframe_after="#c4c4ff"
- frame_current="#f06868"
- time_scrub_background="#292929e6"
- time_marker_line="#00000060"
- time_marker_line_selected="#ffffff60"
- strips="#0c0a0a"
- 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"
- >
- <space>
- <ThemeSpaceGeneric
- back="#aca8a7"
- title="#1a1a1a"
- text="#a6a6a6"
- text_hi="#ffffff"
- header="#aca8a7ff"
- header_text="#000000"
- header_text_hi="#ffffff"
- button="#aca8a7ff"
- button_title="#222222"
- button_text="#222222"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#aca8a7"
- tab_inactive="#bfbfbf"
- tab_back="#bfbfbfff"
- tab_outline="#d1cccb"
- >
- <panelcolors>
- <ThemePanelColors
- header="#00000004"
- back="#72727280"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- <space_list>
- <ThemeSpaceListGeneric
- list="#666666"
- list_title="#000000"
- list_text="#000000"
- list_text_hi="#ffffff"
- >
- </ThemeSpaceListGeneric>
- </space_list>
- </ThemeClipEditor>
- </clip_editor>
- <topbar>
- <ThemeTopBar>
- <space>
- <ThemeSpaceGeneric
- back="#bfbfbe"
- title="#ffffff"
- text="#6e6e6e"
- text_hi="#ffffff"
- header="#aaa7a4ff"
- header_text="#ffffff"
- header_text_hi="#fafafa"
- button="#213142ff"
- button_title="#ffffff"
- button_text="#c5c5c5"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#c2bfbf"
- tab_inactive="#aba8a6"
- tab_back="#888888ff"
- tab_outline="#313131"
- >
- <panelcolors>
- <ThemePanelColors
- header="#3d3d3dcc"
- back="#383838b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeTopBar>
- </topbar>
- <statusbar>
- <ThemeStatusBar>
- <space>
- <ThemeSpaceGeneric
- back="#2e2e2e"
- title="#ffffff"
- text="#363636"
- text_hi="#ffffff"
- header="#aba8a7ff"
- header_text="#1e1e1e"
- header_text_hi="#ffffff"
- button="#353535ff"
- button_title="#000000"
- button_text="#000000"
- button_text_hi="#ffffff"
- navigation_bar="#00000000"
- execution_buts="#00000000"
- tab_active="#4b4b4b"
- tab_inactive="#2b2b2b"
- tab_back="#232323ff"
- tab_outline="#232323"
- >
- <panelcolors>
- <ThemePanelColors
- header="#424242cc"
- back="#333333b3"
- sub_back="#0000003e"
- >
- </ThemePanelColors>
- </panelcolors>
- </ThemeSpaceGeneric>
- </space>
- </ThemeStatusBar>
- </statusbar>
- <bone_color_sets>
- <ThemeBoneColorSet
- normal="#9a0000"
- select="#bd1111"
- active="#f70a0a"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f74018"
- select="#f66913"
- active="#fa9900"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e9109"
- select="#59b70b"
- active="#83ef1d"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#0a3694"
- select="#3667df"
- active="#5ec1ef"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#a9294e"
- select="#c1416a"
- active="#f05d91"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#430c78"
- select="#543aa3"
- active="#8764d5"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#24785a"
- select="#3c9579"
- active="#6fb6ab"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#4b707c"
- select="#6a8691"
- active="#9bc2cd"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#f4c90c"
- select="#eec236"
- active="#f3ff00"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#1e2024"
- select="#484c56"
- active="#ffffff"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6f2f6a"
- select="#9845be"
- active="#d330d6"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#6c8e22"
- select="#7fb022"
- active="#bbef5b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#8d8d8d"
- select="#b0b0b0"
- active="#dedede"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#834326"
- select="#8b5811"
- active="#bd6a11"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#08310e"
- select="#1c430b"
- active="#34622b"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- <ThemeBoneColorSet
- normal="#000000"
- select="#000000"
- active="#000000"
- show_colored_constraints="FALSE"
- >
- </ThemeBoneColorSet>
- </bone_color_sets>
- </Theme>
- <ThemeStyle>
- <panel_title>
- <ThemeFontStyle
- points="12"
- font_kerning_style="FITTED"
- shadow="2"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </panel_title>
- <widget_label>
- <ThemeFontStyle
- points="11"
- font_kerning_style="UNFITTED"
- shadow="3"
- shadow_offset_x="0"
- shadow_offset_y="-1"
- shadow_alpha="0"
- shadow_value="1"
- >
- </ThemeFontStyle>
- </widget_label>
- <widget>
- <ThemeFontStyle
- points="11"
- font_kerning_style="UNFITTED"
- shadow="0"
- shadow_offset_x="0"
- shadow_offset_y="0"
- shadow_alpha="0.0696518"
- shadow_value="0"
- >
- </ThemeFontStyle>
- </widget>
- </ThemeStyle>
-</bpy>
diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
index 95997b48680..64d4b6e2d4a 100644
--- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
+++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py
@@ -605,7 +605,7 @@ class GreasePencilMaterialsPanel:
col.separator()
- col.menu("GPENCIL_MT_color_context_menu", icon='DOWNARROW_HLT', text="")
+ col.menu("GPENCIL_MT_material_context_menu", icon='DOWNARROW_HLT', text="")
if is_sortable:
col.separator()
@@ -616,8 +616,8 @@ class GreasePencilMaterialsPanel:
col.separator()
sub = col.column(align=True)
- sub.operator("gpencil.color_isolate", icon='RESTRICT_VIEW_ON', text="").affect_visibility = True
- sub.operator("gpencil.color_isolate", icon='LOCKED', text="").affect_visibility = False
+ sub.operator("gpencil.material_isolate", icon='RESTRICT_VIEW_ON', text="").affect_visibility = True
+ sub.operator("gpencil.material_isolate", icon='LOCKED', text="").affect_visibility = False
if show_full_ui:
row = layout.row()
diff --git a/release/scripts/startup/bl_ui/properties_material_gpencil.py b/release/scripts/startup/bl_ui/properties_material_gpencil.py
index 56201b29e7f..6dff706e839 100644
--- a/release/scripts/startup/bl_ui/properties_material_gpencil.py
+++ b/release/scripts/startup/bl_ui/properties_material_gpencil.py
@@ -27,21 +27,21 @@ from bl_ui.properties_grease_pencil_common import (
)
-class GPENCIL_MT_color_context_menu(Menu):
+class GPENCIL_MT_material_context_menu(Menu):
bl_label = "Material Specials"
def draw(self, _context):
layout = self.layout
- layout.operator("gpencil.color_reveal", icon='RESTRICT_VIEW_OFF', text="Show All")
- layout.operator("gpencil.color_hide", icon='RESTRICT_VIEW_ON', text="Hide Others").unselected = True
+ layout.operator("gpencil.material_reveal", icon='RESTRICT_VIEW_OFF', text="Show All")
+ layout.operator("gpencil.material_hide", icon='RESTRICT_VIEW_ON', text="Hide Others").unselected = True
layout.separator()
- layout.operator("gpencil.color_lock_all", icon='LOCKED', text="Lock All")
- layout.operator("gpencil.color_unlock_all", icon='UNLOCKED', text="UnLock All")
+ layout.operator("gpencil.material_lock_all", icon='LOCKED', text="Lock All")
+ layout.operator("gpencil.material_unlock_all", icon='UNLOCKED', text="UnLock All")
- layout.operator("gpencil.stroke_lock_color", text="Lock Unselected")
+ layout.operator("gpencil.material_lock_unused", text="Lock Unselected")
layout.operator("gpencil.lock_layer", text="Lock Unused")
layout.separator()
@@ -261,7 +261,7 @@ class MATERIAL_PT_gpencil_material_presets(PresetPanel, Panel):
classes = (
GPENCIL_UL_matslots,
- GPENCIL_MT_color_context_menu,
+ GPENCIL_MT_material_context_menu,
MATERIAL_PT_gpencil_slots,
MATERIAL_PT_gpencil_preview,
MATERIAL_PT_gpencil_material_presets,
diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py
index ba21fe47519..65992a4e4e9 100644
--- a/release/scripts/startup/bl_ui/properties_physics_fluid.py
+++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py
@@ -192,8 +192,7 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel):
sub.prop(domain, "gravity", text="Using Scene Gravity", icon='SCENE_DATA')
else:
col.prop(domain, "gravity", text="Gravity")
- # TODO (sebbas): Clipping var useful for manta openvdb caching?
- # col.prop(domain, "clipping", text="Empty Space")
+ col.prop(domain, "clipping", text="Empty Space")
if domain.cache_type == 'MODULAR':
col.separator()
diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py
index 6aa0f51c55c..2ca0e73bd74 100644
--- a/release/scripts/startup/bl_ui/space_userpref.py
+++ b/release/scripts/startup/bl_ui/space_userpref.py
@@ -2133,6 +2133,25 @@ class USERPREF_PT_experimental_virtual_reality(ExperimentalPanel, Panel):
"""
+class USERPREF_PT_experimental_system(ExperimentalPanel, Panel):
+ bl_label = "System"
+
+ def draw(self, context):
+ prefs = context.preferences
+ experimental = prefs.experimental
+
+ layout = self.layout
+ layout.use_property_split = True
+ layout.use_property_decorate = False
+
+ task = "T60695"
+ split = layout.split(factor=0.66)
+ col = split.split()
+ col.prop(experimental, "use_undo_speedup")
+ col = split.split()
+ col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task
+
+
# -----------------------------------------------------------------------------
# Class Registration
@@ -2222,6 +2241,8 @@ classes = (
# Popovers.
USERPREF_PT_ndof_settings,
+ USERPREF_PT_experimental_system,
+
# Add dynamically generated editor theme panels last,
# so they show up last in the theme section.
*ThemeGenericClassGenerator.generate_panel_classes_from_theme_areas(),
diff --git a/source/blender/blenkernel/BKE_blender_undo.h b/source/blender/blenkernel/BKE_blender_undo.h
index 7392d3947a2..4ecedbbfc1e 100644
--- a/source/blender/blenkernel/BKE_blender_undo.h
+++ b/source/blender/blenkernel/BKE_blender_undo.h
@@ -32,7 +32,10 @@ struct bContext;
struct MemFileUndoData *BKE_memfile_undo_encode(struct Main *bmain,
struct MemFileUndoData *mfu_prev);
-bool BKE_memfile_undo_decode(struct MemFileUndoData *mfu, struct bContext *C);
+bool BKE_memfile_undo_decode(struct MemFileUndoData *mfu,
+ const int undo_direction,
+ const bool use_old_bmain_data,
+ struct bContext *C);
void BKE_memfile_undo_free(struct MemFileUndoData *mfu);
#ifdef __cplusplus
diff --git a/source/blender/blenkernel/BKE_lib_id.h b/source/blender/blenkernel/BKE_lib_id.h
index 27dd1e637f3..25ccc5bd5b6 100644
--- a/source/blender/blenkernel/BKE_lib_id.h
+++ b/source/blender/blenkernel/BKE_lib_id.h
@@ -217,7 +217,10 @@ bool id_single_user(struct bContext *C,
bool BKE_id_copy_is_allowed(const struct ID *id);
bool BKE_id_copy(struct Main *bmain, const struct ID *id, struct ID **newid);
bool BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, const int flag);
-void BKE_id_swap(struct Main *bmain, struct ID *id_a, struct ID *id_b);
+
+void BKE_lib_id_swap(struct Main *bmain, struct ID *id_a, struct ID *id_b);
+void BKE_lib_id_swap_full(struct Main *bmain, struct ID *id_a, struct ID *id_b);
+
void id_sort_by_name(struct ListBase *lb, struct ID *id, struct ID *id_sorting_hint);
void BKE_lib_id_expand_local(struct Main *bmain, struct ID *id);
diff --git a/source/blender/blenkernel/BKE_main.h b/source/blender/blenkernel/BKE_main.h
index a263162e013..8aac09d8738 100644
--- a/source/blender/blenkernel/BKE_main.h
+++ b/source/blender/blenkernel/BKE_main.h
@@ -99,6 +99,11 @@ typedef struct Main {
* use "needs_flush_to_id" in edit data to flag data which needs updating.
*/
char is_memfile_undo_flush_needed;
+ /**
+ * Indicates that next memfile undo step should not allow to re-use old bmain when re-read, but
+ * instead do a complete full re-read/update from stored memfile.
+ */
+ char use_memfile_full_barrier;
BlendThumbnail *blen_thumb;
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index ae2f5231e25..f14b9a30d99 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -87,7 +87,7 @@ struct Mesh *BKE_mesh_from_bmesh_for_eval_nomain(struct BMesh *bm,
struct Mesh *BKE_mesh_from_editmesh_with_coords_thin_wrap(
struct BMEditMesh *em,
- const struct CustomData_MeshMasks *data_mask,
+ const struct CustomData_MeshMasks *cd_mask_extra,
float (*vertexCos)[3],
const struct Mesh *me_settings);
diff --git a/source/blender/blenkernel/BKE_multires.h b/source/blender/blenkernel/BKE_multires.h
index 4ee255d4e61..a7a5e7b8bd5 100644
--- a/source/blender/blenkernel/BKE_multires.h
+++ b/source/blender/blenkernel/BKE_multires.h
@@ -90,10 +90,19 @@ int multires_get_level(const struct Scene *scene,
const struct MultiresModifierData *mmd,
bool render,
bool ignore_simplify);
+
+/* Creates mesh with multires modifier applied on current object's deform mesh. */
struct Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
- struct Scene *scene,
- struct MultiresModifierData *mmd,
- struct Object *ob);
+ struct Object *object,
+ struct MultiresModifierData *mmd);
+
+/* Get coordinates of a deformed base mesh which is an ionput to the given multires modifier.
+ * NOTE: The modifiers will be re-evaluated. */
+float (*BKE_multires_create_deformed_base_mesh_vert_coords(struct Depsgraph *depsgraph,
+ struct Object *object,
+ struct MultiresModifierData *mmd,
+ int *r_num_deformed_verts))[3];
+
void multiresModifier_del_levels(struct MultiresModifierData *mmd,
struct Scene *scene,
struct Object *object,
diff --git a/source/blender/blenkernel/BKE_ocean.h b/source/blender/blenkernel/BKE_ocean.h
index d3ac825039d..6ce2e13cf18 100644
--- a/source/blender/blenkernel/BKE_ocean.h
+++ b/source/blender/blenkernel/BKE_ocean.h
@@ -17,6 +17,8 @@
#ifndef __BKE_OCEAN_H__
#define __BKE_OCEAN_H__
+#include <stdbool.h>
+
/** \file
* \ingroup bli
*/
diff --git a/source/blender/blenkernel/BKE_scene.h b/source/blender/blenkernel/BKE_scene.h
index f78c7b66bb4..c10f8d39bb2 100644
--- a/source/blender/blenkernel/BKE_scene.h
+++ b/source/blender/blenkernel/BKE_scene.h
@@ -30,6 +30,7 @@ extern "C" {
struct AviCodecData;
struct Collection;
struct Depsgraph;
+struct GHash;
struct Main;
struct Object;
struct RenderData;
@@ -222,6 +223,9 @@ struct Depsgraph *BKE_scene_get_depsgraph(struct Main *bmain,
struct ViewLayer *view_layer,
bool allocate);
+struct GHash *BKE_scene_undo_depsgraphs_extract(struct Main *bmain);
+void BKE_scene_undo_depsgraphs_restore(struct Main *bmain, struct GHash *depsgraph_extract);
+
void BKE_scene_transform_orientation_remove(struct Scene *scene,
struct TransformOrientation *orientation);
struct TransformOrientation *BKE_scene_transform_orientation_find(const struct Scene *scene,
diff --git a/source/blender/blenkernel/BKE_undo_system.h b/source/blender/blenkernel/BKE_undo_system.h
index c503215be1f..4870b19fe1d 100644
--- a/source/blender/blenkernel/BKE_undo_system.h
+++ b/source/blender/blenkernel/BKE_undo_system.h
@@ -83,6 +83,9 @@ typedef struct UndoStep {
bool skip;
/** Some situations require the global state to be stored, edge cases when exiting modes. */
bool use_memfile_step;
+ /** When this is true, undo/memfile read code is allowed to re-use old data-blocks for unchanged
+ * IDs, and existing depsgraphes. This has to be forbidden in some cases (like renamed IDs). */
+ bool use_old_bmain_data;
/** For use by undo systems that accumulate changes (text editor, painting). */
bool is_applied;
/* Over alloc 'type->struct_size'. */
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 5feb51534e9..f51c792f474 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -981,6 +981,7 @@ static void mesh_calc_modifiers(struct Depsgraph *depsgraph,
/* grab modifiers until index i */
if ((index != -1) && (BLI_findindex(&ob->modifiers, md) >= index)) {
+ md = NULL;
break;
}
}
diff --git a/source/blender/blenkernel/intern/blender_undo.c b/source/blender/blenkernel/intern/blender_undo.c
index 9ccc53b6318..bb705e2295c 100644
--- a/source/blender/blenkernel/intern/blender_undo.c
+++ b/source/blender/blenkernel/intern/blender_undo.c
@@ -61,7 +61,10 @@
#define UNDO_DISK 0
-bool BKE_memfile_undo_decode(MemFileUndoData *mfu, bContext *C)
+bool BKE_memfile_undo_decode(MemFileUndoData *mfu,
+ const int undo_direction,
+ const bool use_old_bmain_data,
+ bContext *C)
{
Main *bmain = CTX_data_main(C);
char mainstr[sizeof(bmain->name)];
@@ -76,8 +79,12 @@ bool BKE_memfile_undo_decode(MemFileUndoData *mfu, bContext *C)
success = BKE_blendfile_read(C, mfu->filename, &(const struct BlendFileReadParams){0}, NULL);
}
else {
- success = BKE_blendfile_read_from_memfile(
- C, &mfu->memfile, &(const struct BlendFileReadParams){0}, NULL);
+ struct BlendFileReadParams params = {0};
+ params.undo_direction = undo_direction > 0 ? 1 : -1;
+ if (!use_old_bmain_data) {
+ params.skip_flags |= BLO_READ_SKIP_UNDO_OLD_MAIN;
+ }
+ success = BKE_blendfile_read_from_memfile(C, &mfu->memfile, &params, NULL);
}
/* Restore, bmain has been re-allocated. */
diff --git a/source/blender/blenkernel/intern/blendfile.c b/source/blender/blenkernel/intern/blendfile.c
index efab2039dc3..3890bf4e7f8 100644
--- a/source/blender/blenkernel/intern/blendfile.c
+++ b/source/blender/blenkernel/intern/blendfile.c
@@ -134,26 +134,29 @@ static void setup_app_userdef(BlendFileData *bfd)
static void setup_app_data(bContext *C,
BlendFileData *bfd,
const char *filepath,
- const bool is_startup,
+ const struct BlendFileReadParams *params,
ReportList *reports)
{
Main *bmain = G_MAIN;
Scene *curscene = NULL;
const bool recover = (G.fileflags & G_FILE_RECOVER) != 0;
+ const bool is_startup = params->is_startup;
enum {
LOAD_UI = 1,
LOAD_UI_OFF,
LOAD_UNDO,
} mode;
- /* may happen with library files - UNDO file should never have NULL cursccene... */
- if (ELEM(NULL, bfd->curscreen, bfd->curscene)) {
+ if (params->undo_direction != 0) {
+ BLI_assert(bfd->curscene != NULL);
+ mode = LOAD_UNDO;
+ }
+ /* may happen with library files - UNDO file should never have NULL curscene (but may have a
+ * NULL curscreen)... */
+ else if (ELEM(NULL, bfd->curscreen, bfd->curscene)) {
BKE_report(reports, RPT_WARNING, "Library file, loading empty scene");
mode = LOAD_UI_OFF;
}
- else if (BLI_listbase_is_empty(&bfd->main->screens)) {
- mode = LOAD_UNDO;
- }
else if (G.fileflags & G_FILE_NO_UI) {
mode = LOAD_UI_OFF;
}
@@ -371,7 +374,9 @@ static void setup_app_data(bContext *C,
* means that we do not reset their user count, however we do increase that one when doing
* lib_link on local IDs using linked ones.
* There is no real way to predict amount of changes here, so we have to fully redo
- * refcounting . */
+ * refcounting.
+ * Now that we re-use (and do not liblink in readfile.c) most local datablocks as well, we have
+ * to recompute refcount for all local IDs too. */
BKE_main_id_refcount_recompute(bmain, false);
}
}
@@ -386,7 +391,7 @@ static void setup_app_blend_file_data(bContext *C,
setup_app_userdef(bfd);
}
if ((params->skip_flags & BLO_READ_SKIP_DATA) == 0) {
- setup_app_data(C, bfd, filepath, params->is_startup, reports);
+ setup_app_data(C, bfd, filepath, params, reports);
}
}
@@ -473,16 +478,15 @@ bool BKE_blendfile_read_from_memfile(bContext *C,
Main *bmain = CTX_data_main(C);
BlendFileData *bfd;
- bfd = BLO_read_from_memfile(
- bmain, BKE_main_blendfile_path(bmain), memfile, params->skip_flags, reports);
+ bfd = BLO_read_from_memfile(bmain, BKE_main_blendfile_path(bmain), memfile, params, reports);
if (bfd) {
- /* remove the unused screens and wm */
- while (bfd->main->wm.first) {
- BKE_id_free(bfd->main, bfd->main->wm.first);
- }
- while (bfd->main->screens.first) {
- BKE_id_free(bfd->main, bfd->main->screens.first);
- }
+ /* Removing the unused workspaces, screens and wm is useless here, setup_app_data will switch
+ * those lists with the ones from old bmain, which freeing is much more efficient than
+ * individual calls to `BKE_id_free()`.
+ * Further more, those are expected to be empty anyway with new memfile reading code. */
+ BLI_assert(BLI_listbase_is_empty(&bfd->main->wm));
+ BLI_assert(BLI_listbase_is_empty(&bfd->main->workspaces));
+ BLI_assert(BLI_listbase_is_empty(&bfd->main->screens));
setup_app_blend_file_data(C, bfd, "<memory1>", params, reports);
BLO_blendfiledata_free(bfd);
diff --git a/source/blender/blenkernel/intern/crazyspace.c b/source/blender/blenkernel/intern/crazyspace.c
index bdca888efcc..ac62bd52011 100644
--- a/source/blender/blenkernel/intern/crazyspace.c
+++ b/source/blender/blenkernel/intern/crazyspace.c
@@ -287,13 +287,13 @@ int BKE_crazyspace_get_first_deform_matrices_editbmesh(struct Depsgraph *depsgra
if (mti->type == eModifierTypeType_OnlyDeform && mti->deformMatricesEM) {
if (!defmats) {
const int required_mode = eModifierMode_Realtime | eModifierMode_Editmode;
- CustomData_MeshMasks data_mask = CD_MASK_BAREMESH;
+ CustomData_MeshMasks cd_mask_extra = CD_MASK_BAREMESH;
CDMaskLink *datamasks = modifiers_calcDataMasks(
- scene, ob, md, &data_mask, required_mode, NULL, NULL);
- data_mask = datamasks->mask;
+ scene, ob, md, &cd_mask_extra, required_mode, NULL, NULL);
+ cd_mask_extra = datamasks->mask;
BLI_linklist_free((LinkNode *)datamasks, NULL);
- me = BKE_mesh_from_editmesh_with_coords_thin_wrap(em, &data_mask, NULL, me_input);
+ me = BKE_mesh_from_editmesh_with_coords_thin_wrap(em, &cd_mask_extra, NULL, me_input);
deformedVerts = editbmesh_vert_coords_alloc(em, &numVerts);
defmats = MEM_mallocN(sizeof(*defmats) * numVerts, "defmats");
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index 366137b5fa6..dc872b933eb 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -39,6 +39,7 @@
#include "BKE_effect.h"
#include "BKE_fluid.h"
+#include "BKE_global.h"
#include "BKE_lib_id.h"
#include "BKE_modifier.h"
#include "BKE_pointcache.h"
@@ -1893,40 +1894,6 @@ static void sample_mesh(FluidFlowSettings *mfs,
v3 = mloop[mlooptri[f_index].tri[2]].v;
interp_weights_tri_v3(weights, mvert[v1].co, mvert[v2].co, mvert[v3].co, nearest.co);
- /* Initial velocity of flow object. */
- if (mfs->flags & FLUID_FLOW_INITVELOCITY && velocity_map) {
- /* Apply normal directional velocity. */
- if (mfs->vel_normal) {
- /* Interpolate vertex normal vectors to get nearest point normal. */
- normal_short_to_float_v3(n1, mvert[v1].no);
- normal_short_to_float_v3(n2, mvert[v2].no);
- normal_short_to_float_v3(n3, mvert[v3].no);
- interp_v3_v3v3v3(hit_normal, n1, n2, n3, weights);
- normalize_v3(hit_normal);
-
- /* Apply normal directional velocity. */
- velocity_map[index * 3] += hit_normal[0] * mfs->vel_normal * 0.25f;
- velocity_map[index * 3 + 1] += hit_normal[1] * mfs->vel_normal * 0.25f;
- velocity_map[index * 3 + 2] += hit_normal[2] * mfs->vel_normal * 0.25f;
- }
- /* Apply object velocity. */
- if (has_velocity && mfs->vel_multi) {
- float hit_vel[3];
- interp_v3_v3v3v3(
- hit_vel, &vert_vel[v1 * 3], &vert_vel[v2 * 3], &vert_vel[v3 * 3], weights);
- velocity_map[index * 3] += hit_vel[0] * mfs->vel_multi;
- velocity_map[index * 3 + 1] += hit_vel[1] * mfs->vel_multi;
- velocity_map[index * 3 + 2] += hit_vel[2] * mfs->vel_multi;
-# ifdef DEBUG_PRINT
- /* Debugging: Print flow object velocities. */
- printf("adding flow object vel: [%f, %f, %f]\n", hit_vel[0], hit_vel[1], hit_vel[2]);
-# endif
- }
- velocity_map[index * 3] += mfs->vel_coord[0];
- velocity_map[index * 3 + 1] += mfs->vel_coord[1];
- velocity_map[index * 3 + 2] += mfs->vel_coord[2];
- }
-
/* Compute emission strength for smoke flow. */
if (is_gas_flow) {
/* Emission from surface is based on UI configurable distance value. */
@@ -1976,6 +1943,40 @@ static void sample_mesh(FluidFlowSettings *mfs,
emission_strength *= texres.tin;
}
}
+
+ /* Initial velocity of flow object. Only compute velocity if emission is present. */
+ if (mfs->flags & FLUID_FLOW_INITVELOCITY && velocity_map && emission_strength != 0.0) {
+ /* Apply normal directional velocity. */
+ if (mfs->vel_normal) {
+ /* Interpolate vertex normal vectors to get nearest point normal. */
+ normal_short_to_float_v3(n1, mvert[v1].no);
+ normal_short_to_float_v3(n2, mvert[v2].no);
+ normal_short_to_float_v3(n3, mvert[v3].no);
+ interp_v3_v3v3v3(hit_normal, n1, n2, n3, weights);
+ normalize_v3(hit_normal);
+
+ /* Apply normal directional velocity. */
+ velocity_map[index * 3] += hit_normal[0] * mfs->vel_normal * 0.25f;
+ velocity_map[index * 3 + 1] += hit_normal[1] * mfs->vel_normal * 0.25f;
+ velocity_map[index * 3 + 2] += hit_normal[2] * mfs->vel_normal * 0.25f;
+ }
+ /* Apply object velocity. */
+ if (has_velocity && mfs->vel_multi) {
+ float hit_vel[3];
+ interp_v3_v3v3v3(
+ hit_vel, &vert_vel[v1 * 3], &vert_vel[v2 * 3], &vert_vel[v3 * 3], weights);
+ velocity_map[index * 3] += hit_vel[0] * mfs->vel_multi;
+ velocity_map[index * 3 + 1] += hit_vel[1] * mfs->vel_multi;
+ velocity_map[index * 3 + 2] += hit_vel[2] * mfs->vel_multi;
+# ifdef DEBUG_PRINT
+ /* Debugging: Print flow object velocities. */
+ printf("adding flow object vel: [%f, %f, %f]\n", hit_vel[0], hit_vel[1], hit_vel[2]);
+# endif
+ }
+ velocity_map[index * 3] += mfs->vel_coord[0];
+ velocity_map[index * 3 + 1] += mfs->vel_coord[1];
+ velocity_map[index * 3 + 2] += mfs->vel_coord[2];
+ }
}
/* Apply final influence value but also consider volume initialization factor. */
@@ -3524,7 +3525,7 @@ static Mesh *create_smoke_geometry(FluidDomainSettings *mds, Mesh *orgmesh, Obje
return result;
}
-static void manta_step(
+static int manta_step(
Depsgraph *depsgraph, Scene *scene, Object *ob, Mesh *me, FluidModifierData *mmd, int frame)
{
FluidDomainSettings *mds = mmd->domain;
@@ -3532,17 +3533,22 @@ static void manta_step(
float time_per_frame;
bool init_resolution = true;
- /* update object state */
+ /* Store baking success - bake might be aborted anytime by user. */
+ int result = 1;
+ int mode = mds->cache_type;
+ bool mode_replay = (mode == FLUID_DOMAIN_CACHE_REPLAY);
+
+ /* Update object state. */
invert_m4_m4(mds->imat, ob->obmat);
copy_m4_m4(mds->obmat, ob->obmat);
- /* gas domain might use adaptive domain */
+ /* Gas domain might use adaptive domain. */
if (mds->type == FLUID_DOMAIN_TYPE_GAS) {
init_resolution = (mds->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN) != 0;
}
manta_set_domain_from_mesh(mds, ob, me, init_resolution);
- /* use local variables for adaptive loop, dt can change */
+ /* Use local variables for adaptive loop, dt can change. */
frame_length = mds->frame_length;
dt = mds->dt;
time_per_frame = 0;
@@ -3550,27 +3556,39 @@ static void manta_step(
BLI_mutex_lock(&object_update_lock);
- /* loop as long as time_per_frame (sum of sub dt's) does not exceed actual framelength */
+ /* Loop as long as time_per_frame (sum of sub dt's) does not exceed actual framelength. */
while (time_per_frame < frame_length) {
manta_adapt_timestep(mds->fluid);
dt = manta_get_timestep(mds->fluid);
- /* save adapted dt so that MANTA object can access it (important when adaptive domain creates
- * new MANTA object) */
+ /* Save adapted dt so that MANTA object can access it (important when adaptive domain creates
+ * new MANTA object). */
mds->dt = dt;
- /* count for how long this while loop is running */
+ /* Count for how long this while loop is running. */
time_per_frame += dt;
time_total += dt;
- /* Calculate inflow geometry */
+ /* Calculate inflow geometry. */
update_flowsfluids(depsgraph, scene, ob, mds, time_per_frame, frame_length, frame, dt);
+ /* If user requested stop, quit baking */
+ if (G.is_break && !mode_replay) {
+ result = 0;
+ break;
+ }
+
manta_update_variables(mds->fluid, mmd);
- /* Calculate obstacle geometry */
+ /* Calculate obstacle geometry. */
update_obstacles(depsgraph, scene, ob, mds, time_per_frame, frame_length, frame, dt);
+ /* If user requested stop, quit baking */
+ if (G.is_break && !mode_replay) {
+ result = 0;
+ break;
+ }
+
if (mds->total_cells > 1) {
update_effectors(depsgraph, scene, ob, mds, dt);
manta_bake_data(mds->fluid, mmd, frame);
@@ -3578,12 +3596,20 @@ static void manta_step(
mds->time_per_frame = time_per_frame;
mds->time_total = time_total;
}
+
+ /* If user requested stop, quit baking */
+ if (G.is_break && !mode_replay) {
+ result = 0;
+ break;
+ }
}
if (mds->type == FLUID_DOMAIN_TYPE_GAS) {
manta_smoke_calc_transparency(mds, DEG_get_evaluated_view_layer(depsgraph));
}
BLI_mutex_unlock(&object_update_lock);
+
+ return result;
}
static void manta_guiding(
@@ -3952,9 +3978,11 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
manta_guiding(depsgraph, scene, ob, mmd, scene_framenr);
}
if (baking_data) {
- manta_step(depsgraph, scene, ob, me, mmd, scene_framenr);
- manta_write_config(mds->fluid, mmd, scene_framenr);
- manta_write_data(mds->fluid, mmd, scene_framenr);
+ /* Only save baked data if all of it completed successfully. */
+ if (manta_step(depsgraph, scene, ob, me, mmd, scene_framenr)) {
+ manta_write_config(mds->fluid, mmd, scene_framenr);
+ manta_write_data(mds->fluid, mmd, scene_framenr);
+ }
}
if (has_data || baking_data) {
if (baking_noise && with_smoke && with_noise) {
@@ -4851,7 +4879,7 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
#else
mmd->domain->openvdb_comp = VDB_COMPRESSION_ZIP;
#endif
- mmd->domain->clipping = 1e-3f;
+ mmd->domain->clipping = 1e-6f;
mmd->domain->data_depth = 0;
}
else if (mmd->type & MOD_FLUID_TYPE_FLOW) {
diff --git a/source/blender/blenkernel/intern/gpencil.c b/source/blender/blenkernel/intern/gpencil.c
index c0b40721ccc..0be92b7533d 100644
--- a/source/blender/blenkernel/intern/gpencil.c
+++ b/source/blender/blenkernel/intern/gpencil.c
@@ -4034,42 +4034,35 @@ void BKE_gpencil_update_layer_parent(const Depsgraph *depsgraph, Object *ob)
}
bGPdata *gpd = (bGPdata *)ob->data;
- bGPDspoint *pt;
- int i;
- float diff_mat[4][4];
float cur_mat[4][4];
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
if ((gpl->parent != NULL) && (gpl->actframe != NULL)) {
- Object *ob_eval = DEG_get_evaluated_object(depsgraph, gpl->parent);
-
+ Object *ob_parent = DEG_get_evaluated_object(depsgraph, gpl->parent);
/* calculate new matrix */
if ((gpl->partype == PAROBJECT) || (gpl->partype == PARSKEL)) {
- invert_m4_m4(cur_mat, ob_eval->obmat);
+ copy_m4_m4(cur_mat, ob_parent->obmat);
}
else if (gpl->partype == PARBONE) {
- bPoseChannel *pchan = BKE_pose_channel_find_name(ob_eval->pose, gpl->parsubstr);
- if (pchan) {
- float tmp_mat[4][4];
- mul_m4_m4m4(tmp_mat, ob_eval->obmat, pchan->pose_mat);
- invert_m4_m4(cur_mat, tmp_mat);
+ bPoseChannel *pchan = BKE_pose_channel_find_name(ob_parent->pose, gpl->parsubstr);
+ if (pchan != NULL) {
+ copy_m4_m4(cur_mat, ob->imat);
+ mul_m4_m4m4(cur_mat, ob_parent->obmat, pchan->pose_mat);
+ }
+ else {
+ unit_m4(cur_mat);
}
}
/* only redo if any change */
if (!equals_m4m4(gpl->inverse, cur_mat)) {
-
- /* first apply current transformation to all strokes */
- BKE_gpencil_parent_matrix_get(depsgraph, ob, gpl, diff_mat);
- /* undo local object */
- sub_v3_v3(diff_mat[3], ob->obmat[3]);
-
LISTBASE_FOREACH (bGPDstroke *, gps, &gpl->actframe->strokes) {
+ bGPDspoint *pt;
+ int i;
for (i = 0, pt = gps->points; i < gps->totpoints; i++, pt++) {
- mul_m4_v3(diff_mat, &pt->x);
+ mul_m4_v3(gpl->inverse, &pt->x);
+ mul_m4_v3(cur_mat, &pt->x);
}
}
- /* set new parent matrix */
- copy_m4_m4(gpl->inverse, cur_mat);
}
}
}
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c
index 27d4b8dd047..1ae53f5a85d 100644
--- a/source/blender/blenkernel/intern/lib_id.c
+++ b/source/blender/blenkernel/intern/lib_id.c
@@ -597,7 +597,7 @@ bool BKE_id_copy(Main *bmain, const ID *id, ID **newid)
* Does a mere memory swap over the whole IDs data (including type-specific memory).
* \note Most internal ID data itself is not swapped (only IDProperties are).
*/
-void BKE_id_swap(Main *bmain, ID *id_a, ID *id_b)
+static void id_swap(Main *bmain, ID *id_a, ID *id_b, const bool do_full_id)
{
BLI_assert(GS(id_a->name) == GS(id_b->name));
@@ -651,17 +651,45 @@ void BKE_id_swap(Main *bmain, ID *id_a, ID *id_b)
#undef CASE_SWAP
- /* Restore original ID's internal data. */
- *id_a = id_a_back;
- *id_b = id_b_back;
+ if (!do_full_id) {
+ /* Restore original ID's internal data. */
+ *id_a = id_a_back;
+ *id_b = id_b_back;
- /* Exception: IDProperties. */
- id_a->properties = id_b_back.properties;
- id_b->properties = id_a_back.properties;
+ /* Exception: IDProperties. */
+ id_a->properties = id_b_back.properties;
+ id_b->properties = id_a_back.properties;
+ }
- /* Swap will have broken internal references to itself, restore them. */
- BKE_libblock_relink_ex(bmain, id_a, id_b, id_a, ID_REMAP_SKIP_NEVER_NULL_USAGE);
- BKE_libblock_relink_ex(bmain, id_b, id_a, id_b, ID_REMAP_SKIP_NEVER_NULL_USAGE);
+ if (bmain != NULL) {
+ /* Swap will have broken internal references to itself, restore them. */
+ BKE_libblock_relink_ex(bmain, id_a, id_b, id_a, ID_REMAP_SKIP_NEVER_NULL_USAGE);
+ BKE_libblock_relink_ex(bmain, id_b, id_a, id_b, ID_REMAP_SKIP_NEVER_NULL_USAGE);
+ }
+}
+
+/**
+ * Does a mere memory swap over the whole IDs data (including type-specific memory).
+ * \note Most internal ID data itself is not swapped (only IDProperties are).
+ *
+ * \param bmain May be NULL, in which case there will be no remapping of internal pointers to
+ * itself.
+ */
+void BKE_lib_id_swap(Main *bmain, ID *id_a, ID *id_b)
+{
+ id_swap(bmain, id_a, id_b, false);
+}
+
+/**
+ * Does a mere memory swap over the whole IDs data (including type-specific memory).
+ * \note All internal ID data itself is also swapped.
+ *
+ * \param bmain May be NULL, in which case there will be no remapping of internal pointers to
+ * itself.
+ */
+void BKE_lib_id_swap_full(Main *bmain, ID *id_a, ID *id_b)
+{
+ id_swap(bmain, id_a, id_b, true);
}
/** Does *not* set ID->newid pointer. */
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index af861b5b0e9..81f7e158b40 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -813,7 +813,7 @@ void BKE_lib_override_library_update(Main *bmain, ID *local)
/* This also transfers all pointers (memory) owned by local to tmp_id, and vice-versa.
* So when we'll free tmp_id, we'll actually free old, outdated data from local. */
- BKE_id_swap(bmain, local, tmp_id);
+ BKE_lib_id_swap(bmain, local, tmp_id);
/* Again, horribly inn-efficient in our case, we need something off-Main
* (aka more generic nolib copy/free stuff)! */
diff --git a/source/blender/blenkernel/intern/lib_query.c b/source/blender/blenkernel/intern/lib_query.c
index 41d938e897d..c204c272de1 100644
--- a/source/blender/blenkernel/intern/lib_query.c
+++ b/source/blender/blenkernel/intern/lib_query.c
@@ -401,7 +401,7 @@ static void library_foreach_screen_area(LibraryForeachIDData *data, ScrArea *are
View3D *v3d = (View3D *)sl;
FOREACH_CALLBACK_INVOKE(data, v3d->camera, IDWALK_CB_NOP);
- FOREACH_CALLBACK_INVOKE(data, v3d->ob_centre, IDWALK_CB_NOP);
+ FOREACH_CALLBACK_INVOKE(data, v3d->ob_center, IDWALK_CB_NOP);
if (v3d->localvd) {
FOREACH_CALLBACK_INVOKE(data, v3d->localvd->camera, IDWALK_CB_NOP);
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 127acf0e464..3a9a38288a7 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -857,11 +857,11 @@ Mesh *BKE_mesh_from_bmesh_for_eval_nomain(BMesh *bm,
* TODO(campbell): support mesh with only an edit-mesh which is lazy initialized.
*/
Mesh *BKE_mesh_from_editmesh_with_coords_thin_wrap(BMEditMesh *em,
- const CustomData_MeshMasks *data_mask,
+ const CustomData_MeshMasks *cd_mask_extra,
float (*vertexCos)[3],
const Mesh *me_settings)
{
- Mesh *me = BKE_mesh_from_bmesh_for_eval_nomain(em->bm, data_mask, me_settings);
+ Mesh *me = BKE_mesh_from_bmesh_for_eval_nomain(em->bm, cd_mask_extra, me_settings);
/* Use editmesh directly where possible. */
me->runtime.is_original = true;
if (vertexCos) {
diff --git a/source/blender/blenkernel/intern/multires.c b/source/blender/blenkernel/intern/multires.c
index 4e97d0fc05c..234273b5158 100644
--- a/source/blender/blenkernel/intern/multires.c
+++ b/source/blender/blenkernel/intern/multires.c
@@ -271,15 +271,16 @@ static MDisps *multires_mdisps_initialize_hidden(Mesh *me, int level)
}
Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
- Scene *scene,
- MultiresModifierData *mmd,
- Object *ob)
+ Object *object,
+ MultiresModifierData *mmd)
{
- Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob);
- Mesh *deformed_mesh = mesh_get_eval_deform(depsgraph, scene, ob_eval, &CD_MASK_BAREMESH);
+ Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
+ Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
+ Mesh *deformed_mesh = mesh_get_eval_deform(
+ depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
ModifierEvalContext modifier_ctx = {
.depsgraph = depsgraph,
- .object = ob_eval,
+ .object = object_eval,
.flag = MOD_APPLY_USECACHE | MOD_APPLY_IGNORE_SIMPLIFY,
};
@@ -292,6 +293,57 @@ Mesh *BKE_multires_create_mesh(struct Depsgraph *depsgraph,
return result;
}
+float (*BKE_multires_create_deformed_base_mesh_vert_coords(struct Depsgraph *depsgraph,
+ struct Object *object,
+ struct MultiresModifierData *mmd,
+ int *r_num_deformed_verts))[3]
+{
+ Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
+ Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
+
+ Object object_for_eval = *object_eval;
+ object_for_eval.data = object->data;
+
+ const bool use_render = (DEG_get_mode(depsgraph) == DAG_EVAL_RENDER);
+ ModifierEvalContext mesh_eval_context = {depsgraph, &object_for_eval, 0};
+ if (use_render) {
+ mesh_eval_context.flag |= MOD_APPLY_RENDER;
+ }
+ const int required_mode = use_render ? eModifierMode_Render : eModifierMode_Realtime;
+
+ VirtualModifierData virtual_modifier_data;
+ ModifierData *first_md = modifiers_getVirtualModifierList(&object_for_eval,
+ &virtual_modifier_data);
+
+ Mesh *base_mesh = object->data;
+
+ int num_deformed_verts;
+ float(*deformed_verts)[3] = BKE_mesh_vert_coords_alloc(base_mesh, &num_deformed_verts);
+
+ for (ModifierData *md = first_md; md != NULL; md = md->next) {
+ const ModifierTypeInfo *mti = modifierType_getInfo(md->type);
+
+ if (md == &mmd->modifier) {
+ break;
+ }
+
+ if (!modifier_isEnabled(scene_eval, md, required_mode)) {
+ continue;
+ }
+
+ if (mti->type != eModifierTypeType_OnlyDeform) {
+ break;
+ }
+
+ modwrap_deformVerts(md, &mesh_eval_context, base_mesh, deformed_verts, num_deformed_verts);
+ }
+
+ if (r_num_deformed_verts != NULL) {
+ *r_num_deformed_verts = num_deformed_verts;
+ }
+ return deformed_verts;
+}
+
MultiresModifierData *find_multires_modifier_before(Scene *scene, ModifierData *lastmd)
{
ModifierData *md;
diff --git a/source/blender/blenkernel/intern/multires_reshape.c b/source/blender/blenkernel/intern/multires_reshape.c
index a29398b24a0..53e1af15192 100644
--- a/source/blender/blenkernel/intern/multires_reshape.c
+++ b/source/blender/blenkernel/intern/multires_reshape.c
@@ -107,11 +107,9 @@ bool multiresModifier_reshapeFromDeformModifier(struct Depsgraph *depsgraph,
highest_mmd.lvl = highest_mmd.totlvl;
highest_mmd.renderlvl = highest_mmd.totlvl;
- Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
-
/* Create mesh for the multires, ignoring any further modifiers (leading
* deformation modifiers will be applied though). */
- Mesh *multires_mesh = BKE_multires_create_mesh(depsgraph, scene_eval, &highest_mmd, object);
+ Mesh *multires_mesh = BKE_multires_create_mesh(depsgraph, object, &highest_mmd);
int num_deformed_verts;
float(*deformed_verts)[3] = BKE_mesh_vert_coords_alloc(multires_mesh, &num_deformed_verts);
@@ -226,10 +224,35 @@ void multiresModifier_base_apply(struct Depsgraph *depsgraph,
return;
}
+ multires_reshape_store_original_grids(&reshape_context);
+
+ /* At this point base_mesh is object's mesh, the subdiv is initialized to the deformed state of
+ * the base mesh.
+ * Store coordinates of top level grids in object space which will define true shape we would
+ * want to reshape to after modifying the base mesh. */
multires_reshape_assign_final_coords_from_mdisps(&reshape_context);
+
+ /* For modifying base mesh we only want to consider deformation caused by multires displacement
+ * and ignore all deformation which might be caused by deformation modifiers leading the multires
+ * one.
+ * So refine the subdiv to the original mesh verticies positions, which will also need to make
+ * it so object space displacement is re-evaluated for them (as in, can not re-use any knowledge
+ * from the final coordinates in the object space ). */
+ multires_reshape_apply_base_refine_from_base(&reshape_context);
+
+ /* Modify original mesh coordinates. This happens in two steps:
+ * - Coordinates are set to their final location, where they are intended to be in the final
+ * result.
+ * - Heuristic moves them a bit, kind of canceling out the effect of subsurf (so then when
+ * multires modifier applies subsurf vertices are placed at the desired location). */
multires_reshape_apply_base_update_mesh_coords(&reshape_context);
multires_reshape_apply_base_refit_base_mesh(&reshape_context);
- multires_reshape_apply_base_refine_subdiv(&reshape_context);
+
+ /* Reshape to the stored final state.
+ * Not that the base changed, so the subdiv is to be refined to the new positions. Unfortunately,
+ * this can not be done foe entirely cheap: if there were deformation modifiers prior to the
+ * multires they need to be re-evaluated for the new base mesh. */
+ multires_reshape_apply_base_refine_from_deform(&reshape_context);
multires_reshape_object_grids_to_tangent_displacement(&reshape_context);
multires_reshape_context_free(&reshape_context);
diff --git a/source/blender/blenkernel/intern/multires_reshape.h b/source/blender/blenkernel/intern/multires_reshape.h
index 9029d19ae88..deeb885e15a 100644
--- a/source/blender/blenkernel/intern/multires_reshape.h
+++ b/source/blender/blenkernel/intern/multires_reshape.h
@@ -36,6 +36,11 @@ struct Subdiv;
struct SubdivCCG;
typedef struct MultiresReshapeContext {
+ /* NOTE: Only available when context is initialized from object. */
+ struct Depsgraph *depsgraph;
+ struct Object *object;
+ struct MultiresModifierData *mmd;
+
/* Base mesh from original object.
* NOTE: Does NOT include any leading modifiers in it. */
struct Mesh *base_mesh;
@@ -132,9 +137,9 @@ typedef struct ReshapeConstGridElement {
float mask;
} ReshapeConstGridElement;
-/* -------------------------------------------------------------------- */
-/** \name Construct/destruct reshape context.
- * \{ */
+/* ================================================================================================
+ * Construct/destruct reshape context.
+ */
/* Create subdivision surface descriptor which is configured for surface evaluation at a given
* multires modifier. */
@@ -142,6 +147,9 @@ struct Subdiv *multires_reshape_create_subdiv(struct Depsgraph *depsgraph,
struct Object *object,
const struct MultiresModifierData *mmd);
+/* NOTE: Initialized base mesh to object's mesh, the Subdiv is created from the deformed
+ * mesh prior to the multires modifier if depsgraph is not NULL. If the depsgraph is NULL
+ * then Subdiv is created from base mesh (without any deformation applied). */
bool multires_reshape_context_create_from_object(MultiresReshapeContext *reshape_context,
struct Depsgraph *depsgraph,
struct Object *object,
@@ -159,11 +167,9 @@ bool multires_reshape_context_create_from_subdivide(MultiresReshapeContext *resh
void multires_reshape_context_free(MultiresReshapeContext *reshape_context);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Helper accessors.
- * \{ */
+/* ================================================================================================
+ * Helper accessors.
+ */
/* For the given grid index get index of face it was created for. */
int multires_reshape_grid_to_face_index(const MultiresReshapeContext *reshape_context,
@@ -206,11 +212,9 @@ ReshapeGridElement multires_reshape_grid_element_for_ptex_coord(
ReshapeConstGridElement multires_reshape_orig_grid_element_for_grid_coord(
const MultiresReshapeContext *reshape_context, const GridCoord *grid_coord);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Sample limit surface of the base mesh.
- * \{ */
+/* ================================================================================================
+ * Sample limit surface of the base mesh.
+ */
/* Evaluate limit surface created from base mesh.
* This is the limit surface which defines tangent space for MDisps. */
@@ -219,20 +223,16 @@ void multires_reshape_evaluate_limit_at_grid(const MultiresReshapeContext *resha
float r_P[3],
float r_tangent_matrix[3][3]);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Custom data preparation.
- * \{ */
+/* ================================================================================================
+ * Custom data preparation.
+ */
/* Make sure custom data is allocated for the given level. */
void multires_reshape_ensure_grids(struct Mesh *mesh, const int level);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Functions specific to reshaping from a set of vertices in a object position.
- * \{ */
+/* ================================================================================================
+ * Functions specific to reshaping from a set of vertices in a object position.
+ */
/* Returns truth if all coordinates were assigned.
*
@@ -243,11 +243,9 @@ bool multires_reshape_assign_final_coords_from_vertcos(
const float (*vert_coords)[3],
const int num_vert_coords);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Functions specific to reshaping from CCG.
- * \{ */
+/* ================================================================================================
+ * Functions specific to reshaping from CCG.
+ */
/* NOTE: Displacement grids to be at least at a reshape level.
*
@@ -255,11 +253,9 @@ bool multires_reshape_assign_final_coords_from_vertcos(
bool multires_reshape_assign_final_coords_from_ccg(const MultiresReshapeContext *reshape_context,
struct SubdivCCG *subdiv_ccg);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Functions specific to reshaping from MDISPS.
- * \{ */
+/* ================================================================================================
+ * Functions specific to reshaping from MDISPS.
+ */
/* Reads and writes to the current mesh CD_MDISPS. */
void multires_reshape_assign_final_coords_from_mdisps(
@@ -269,11 +265,9 @@ void multires_reshape_assign_final_coords_from_mdisps(
void multires_reshape_assign_final_coords_from_orig_mdisps(
const MultiresReshapeContext *reshape_context);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Displacement smooth.
- * \{ */
+/* ================================================================================================
+ * Displacement smooth.
+ */
/* Operates on a displacement grids (CD_MDISPS) which contains object space coordinates stored for
* the reshape level.
@@ -290,11 +284,9 @@ void multires_reshape_smooth_object_grids_with_details(
*/
void multires_reshape_smooth_object_grids(const MultiresReshapeContext *reshape_context);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Displacement, space conversion.
- * \{ */
+/* ================================================================================================
+ * Displacement, space conversion.
+ */
/* Store original grid data, so then it's possible to calculate delta from it and add
* high-frequency content on top of reshaped grids. */
@@ -303,11 +295,9 @@ void multires_reshape_store_original_grids(MultiresReshapeContext *reshape_conte
void multires_reshape_object_grids_to_tangent_displacement(
const MultiresReshapeContext *reshape_context);
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Apply base.
- * \{ */
+/* ================================================================================================
+ * Apply base.
+ */
/* Update mesh coordinates to the final positions of displacement in object space.
* This is effectively desired position of base mesh vertices after canceling out displacement.
@@ -320,8 +310,12 @@ void multires_reshape_apply_base_update_mesh_coords(MultiresReshapeContext *resh
void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape_context);
/* Refine subdivision surface to the new positions of the base mesh. */
-void multires_reshape_apply_base_refine_subdiv(MultiresReshapeContext *reshape_context);
+void multires_reshape_apply_base_refine_from_base(MultiresReshapeContext *reshape_context);
-/** \} */
+/* Refine subdivision surface to the new positions of the deformed mesh (base mesh with all
+ * modifiers leading the multires applied).
+ *
+ * NOTE: Will re-evaluate all leading modifiers, so it's not cheap. */
+void multires_reshape_apply_base_refine_from_deform(MultiresReshapeContext *reshape_context);
#endif /* __BKE_INTERN_MULTIRES_RESHAPE_H__ */
diff --git a/source/blender/blenkernel/intern/multires_reshape_apply_base.c b/source/blender/blenkernel/intern/multires_reshape_apply_base.c
index e05b5bb3179..62418150ff1 100644
--- a/source/blender/blenkernel/intern/multires_reshape_apply_base.c
+++ b/source/blender/blenkernel/intern/multires_reshape_apply_base.c
@@ -27,23 +27,46 @@
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
+#include "DNA_modifier_types.h"
+#include "DNA_object_types.h"
#include "BLI_math_vector.h"
+#include "BLI_listbase.h"
+#include "BKE_customdata.h"
+#include "BKE_lib_id.h"
#include "BKE_mesh.h"
+#include "BKE_mesh_runtime.h"
#include "BKE_mesh_mapping.h"
+#include "BKE_multires.h"
#include "BKE_subdiv_eval.h"
+#include "DEG_depsgraph_query.h"
+
void multires_reshape_apply_base_update_mesh_coords(MultiresReshapeContext *reshape_context)
{
Mesh *base_mesh = reshape_context->base_mesh;
- const int grid_size = reshape_context->top.grid_size;
- const int grid_index = grid_size * grid_size - 1;
- for (int i = 0; i < base_mesh->totloop; ++i) {
- MDisps *displacement_grid = &reshape_context->mdisps[i];
- const MLoop *loop = &base_mesh->mloop[i];
- MVert *vert = &base_mesh->mvert[loop->v];
- copy_v3_v3(vert->co, displacement_grid->disps[grid_index]);
+ const MLoop *mloop = base_mesh->mloop;
+ MVert *mvert = base_mesh->mvert;
+ for (int loop_index = 0; loop_index < base_mesh->totloop; ++loop_index) {
+ const MLoop *loop = &mloop[loop_index];
+ MVert *vert = &mvert[loop->v];
+
+ GridCoord grid_coord;
+ grid_coord.grid_index = loop_index;
+ grid_coord.u = 1.0f;
+ grid_coord.v = 1.0f;
+
+ float P[3];
+ float tangent_matrix[3][3];
+ multires_reshape_evaluate_limit_at_grid(reshape_context, &grid_coord, P, tangent_matrix);
+
+ ReshapeConstGridElement grid_element = multires_reshape_orig_grid_element_for_grid_coord(
+ reshape_context, &grid_coord);
+ float D[3];
+ mul_v3_m3v3(D, tangent_matrix, grid_element.displacement);
+
+ add_v3_v3v3(vert->co, P, D);
}
}
@@ -152,7 +175,25 @@ void multires_reshape_apply_base_refit_base_mesh(MultiresReshapeContext *reshape
BKE_mesh_calc_normals(base_mesh);
}
-void multires_reshape_apply_base_refine_subdiv(MultiresReshapeContext *reshape_context)
+void multires_reshape_apply_base_refine_from_base(MultiresReshapeContext *reshape_context)
{
BKE_subdiv_eval_update_from_mesh(reshape_context->subdiv, reshape_context->base_mesh, NULL);
}
+
+void multires_reshape_apply_base_refine_from_deform(MultiresReshapeContext *reshape_context)
+{
+ struct Depsgraph *depsgraph = reshape_context->depsgraph;
+ Object *object = reshape_context->object;
+ MultiresModifierData *mmd = reshape_context->mmd;
+ BLI_assert(depsgraph != NULL);
+ BLI_assert(object != NULL);
+ BLI_assert(mmd != NULL);
+
+ float(*deformed_verts)[3] = BKE_multires_create_deformed_base_mesh_vert_coords(
+ depsgraph, object, mmd, NULL);
+
+ BKE_subdiv_eval_update_from_mesh(
+ reshape_context->subdiv, reshape_context->base_mesh, deformed_verts);
+
+ MEM_freeN(deformed_verts);
+}
diff --git a/source/blender/blenkernel/intern/multires_reshape_util.c b/source/blender/blenkernel/intern/multires_reshape_util.c
index f9271e37672..5401fe2dcda 100644
--- a/source/blender/blenkernel/intern/multires_reshape_util.c
+++ b/source/blender/blenkernel/intern/multires_reshape_util.c
@@ -43,9 +43,9 @@
#include "DEG_depsgraph_query.h"
-/* -------------------------------------------------------------------- */
-/** \name Construct/destruct reshape context.
- * \{ */
+/* ================================================================================================
+ * Construct/destruct reshape context.
+ */
/* Create subdivision surface descriptor which is configured for surface evaluation at a given
* multires modifier. */
@@ -53,21 +53,21 @@ Subdiv *multires_reshape_create_subdiv(Depsgraph *depsgraph,
/*const*/ Object *object,
const MultiresModifierData *mmd)
{
- Mesh *coarse_mesh;
+ Mesh *base_mesh;
if (depsgraph != NULL) {
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
Object *object_eval = DEG_get_evaluated_object(depsgraph, object);
- coarse_mesh = mesh_get_eval_deform(depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
+ base_mesh = mesh_get_eval_deform(depsgraph, scene_eval, object_eval, &CD_MASK_BAREMESH);
}
else {
- coarse_mesh = (Mesh *)object->data;
+ base_mesh = (Mesh *)object->data;
}
SubdivSettings subdiv_settings;
BKE_multires_subdiv_settings_init(&subdiv_settings, mmd);
- Subdiv *subdiv = BKE_subdiv_new_from_mesh(&subdiv_settings, coarse_mesh);
- if (!BKE_subdiv_eval_update_from_mesh(subdiv, coarse_mesh, NULL)) {
+ Subdiv *subdiv = BKE_subdiv_new_from_mesh(&subdiv_settings, base_mesh);
+ if (!BKE_subdiv_eval_update_from_mesh(subdiv, base_mesh, NULL)) {
BKE_subdiv_free(subdiv);
return NULL;
}
@@ -163,6 +163,10 @@ bool multires_reshape_context_create_from_object(MultiresReshapeContext *reshape
Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
Mesh *base_mesh = (Mesh *)object->data;
+ reshape_context->depsgraph = depsgraph;
+ reshape_context->object = object;
+ reshape_context->mmd = mmd;
+
reshape_context->base_mesh = base_mesh;
reshape_context->subdiv = multires_reshape_create_subdiv(depsgraph, object, mmd);
@@ -269,11 +273,9 @@ void multires_reshape_context_free(MultiresReshapeContext *reshape_context)
MEM_freeN(reshape_context->grid_to_face_index);
}
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Helper accessors.
- * \{ */
+/* ================================================================================================
+ * Helper accessors.
+ */
/* For the given grid index get index of face it was created for. */
int multires_reshape_grid_to_face_index(const MultiresReshapeContext *reshape_context,
@@ -303,8 +305,8 @@ int multires_reshape_grid_to_corner(const MultiresReshapeContext *reshape_contex
bool multires_reshape_is_quad_face(const MultiresReshapeContext *reshape_context, int face_index)
{
- const MPoly *coarse_poly = &reshape_context->base_mesh->mpoly[face_index];
- return (coarse_poly->totloop == 4);
+ const MPoly *base_poly = &reshape_context->base_mesh->mpoly[face_index];
+ return (base_poly->totloop == 4);
}
/* For the given grid index get index of corresponding ptex face. */
@@ -447,11 +449,9 @@ ReshapeConstGridElement multires_reshape_orig_grid_element_for_grid_coord(
return grid_element;
}
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Sample limit surface of the base mesh.
- * \{ */
+/* ================================================================================================
+ * Sample limit surface of the base mesh.
+ */
void multires_reshape_evaluate_limit_at_grid(const MultiresReshapeContext *reshape_context,
const GridCoord *grid_coord,
@@ -471,11 +471,9 @@ void multires_reshape_evaluate_limit_at_grid(const MultiresReshapeContext *resha
reshape_context, face_index, corner, dPdu, dPdv, r_tangent_matrix);
}
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Custom data preparation.
- * \{ */
+/* ================================================================================================
+ * Custom data preparation.
+ */
static void allocate_displacement_grid(MDisps *displacement_grid, const int level)
{
@@ -537,11 +535,9 @@ void multires_reshape_ensure_grids(Mesh *mesh, const int level)
ensure_mask_grids(mesh, level);
}
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name Displacement, space conversion.
- * \{ */
+/* ================================================================================================
+ * Displacement, space conversion.
+ */
void multires_reshape_store_original_grids(MultiresReshapeContext *reshape_context)
{
@@ -678,13 +674,10 @@ void multires_reshape_object_grids_to_tangent_displacement(
NULL);
}
-/** \} */
-
-/* -------------------------------------------------------------------- */
-/** \name MDISPS.
- * \{ */
-
-/* TODO(sergey): Make foreach_grid_coordinate more accessible and move this functionality to
+/* ================================================================================================
+ * MDISPS
+ *
+ * TODO(sergey): Make foreach_grid_coordinate more accessible and move this functionality to
* own file. */
static void assign_final_coords_from_mdisps(const MultiresReshapeContext *reshape_context,
@@ -735,5 +728,3 @@ void multires_reshape_assign_final_coords_from_orig_mdisps(
foreach_grid_coordinate(
reshape_context, reshape_context->top.level, assign_final_coords_from_orig_mdisps, NULL);
}
-
-/** \} */
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 98638b6c865..ff0232ed9aa 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -2067,12 +2067,16 @@ void BKE_scene_free_view_layer_depsgraph(Scene *scene, ViewLayer *view_layer)
/* Query depsgraph for a specific contexts. */
-Depsgraph *BKE_scene_get_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, bool allocate)
+static Depsgraph **scene_get_depsgraph_p(Main *bmain,
+ Scene *scene,
+ ViewLayer *view_layer,
+ const bool allocate_ghash_entry,
+ const bool allocate_depsgraph)
{
BLI_assert(scene != NULL);
BLI_assert(view_layer != NULL);
/* Make sure hash itself exists. */
- if (allocate) {
+ if (allocate_ghash_entry) {
BKE_scene_ensure_depsgraph_hash(scene);
}
if (scene->depsgraph_hash == NULL) {
@@ -2083,29 +2087,121 @@ Depsgraph *BKE_scene_get_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_la
*/
DepsgraphKey key;
key.view_layer = view_layer;
- Depsgraph *depsgraph;
- if (allocate) {
+ Depsgraph **depsgraph_ptr;
+ if (allocate_ghash_entry) {
DepsgraphKey **key_ptr;
- Depsgraph **depsgraph_ptr;
if (!BLI_ghash_ensure_p_ex(
scene->depsgraph_hash, &key, (void ***)&key_ptr, (void ***)&depsgraph_ptr)) {
*key_ptr = MEM_mallocN(sizeof(DepsgraphKey), __func__);
**key_ptr = key;
- *depsgraph_ptr = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_VIEWPORT);
- /* TODO(sergey): Would be cool to avoid string format print,
- * but is a bit tricky because we can't know in advance whether
- * we will ever enable debug messages for this depsgraph.
- */
- char name[1024];
- BLI_snprintf(name, sizeof(name), "%s :: %s", scene->id.name, view_layer->name);
- DEG_debug_name_set(*depsgraph_ptr, name);
+ if (allocate_depsgraph) {
+ *depsgraph_ptr = DEG_graph_new(bmain, scene, view_layer, DAG_EVAL_VIEWPORT);
+ /* TODO(sergey): Would be cool to avoid string format print,
+ * but is a bit tricky because we can't know in advance whether
+ * we will ever enable debug messages for this depsgraph.
+ */
+ char name[1024];
+ BLI_snprintf(name, sizeof(name), "%s :: %s", scene->id.name, view_layer->name);
+ DEG_debug_name_set(*depsgraph_ptr, name);
+ }
+ else {
+ *depsgraph_ptr = NULL;
+ }
}
- depsgraph = *depsgraph_ptr;
}
else {
- depsgraph = BLI_ghash_lookup(scene->depsgraph_hash, &key);
+ depsgraph_ptr = (Depsgraph **)BLI_ghash_lookup_p(scene->depsgraph_hash, &key);
+ }
+ return depsgraph_ptr;
+}
+
+Depsgraph *BKE_scene_get_depsgraph(Main *bmain, Scene *scene, ViewLayer *view_layer, bool allocate)
+{
+ Depsgraph **depsgraph_ptr = scene_get_depsgraph_p(bmain, scene, view_layer, allocate, allocate);
+ return (depsgraph_ptr != NULL) ? *depsgraph_ptr : NULL;
+}
+
+static char *scene_undo_depsgraph_gen_key(Scene *scene, ViewLayer *view_layer, char *key_full)
+{
+ if (key_full == NULL) {
+ key_full = MEM_callocN(MAX_ID_NAME + FILE_MAX + MAX_NAME, __func__);
+ }
+
+ size_t key_full_offset = BLI_strncpy_rlen(key_full, scene->id.name, MAX_ID_NAME);
+ if (scene->id.lib != NULL) {
+ key_full_offset += BLI_strncpy_rlen(key_full + key_full_offset, scene->id.lib->name, FILE_MAX);
+ }
+ key_full_offset += BLI_strncpy_rlen(key_full + key_full_offset, view_layer->name, MAX_NAME);
+ BLI_assert(key_full_offset < MAX_ID_NAME + FILE_MAX + MAX_NAME);
+
+ return key_full;
+}
+
+GHash *BKE_scene_undo_depsgraphs_extract(Main *bmain)
+{
+ GHash *depsgraph_extract = BLI_ghash_new(
+ BLI_ghashutil_strhash_p, BLI_ghashutil_strcmp, __func__);
+
+ for (Scene *scene = bmain->scenes.first; scene != NULL; scene = scene->id.next) {
+ if (scene->depsgraph_hash == NULL) {
+ /* In some cases, e.g. when undo has to perform multiple steps at once, no depsgraph will be
+ * built so this pointer may be NULL. */
+ continue;
+ }
+ for (ViewLayer *view_layer = scene->view_layers.first; view_layer != NULL;
+ view_layer = view_layer->next) {
+ DepsgraphKey key;
+ key.view_layer = view_layer;
+ Depsgraph **depsgraph = (Depsgraph **)BLI_ghash_lookup_p(scene->depsgraph_hash, &key);
+
+ if (depsgraph != NULL && *depsgraph != NULL) {
+ char *key_full = scene_undo_depsgraph_gen_key(scene, view_layer, NULL);
+
+ /* We steal the depsgraph from the scene. */
+ BLI_ghash_insert(depsgraph_extract, key_full, *depsgraph);
+ *depsgraph = NULL;
+ }
+ }
+ }
+
+ return depsgraph_extract;
+}
+
+void BKE_scene_undo_depsgraphs_restore(Main *bmain, GHash *depsgraph_extract)
+{
+ for (Scene *scene = bmain->scenes.first; scene != NULL; scene = scene->id.next) {
+ BLI_assert(scene->depsgraph_hash == NULL);
+
+ for (ViewLayer *view_layer = scene->view_layers.first; view_layer != NULL;
+ view_layer = view_layer->next) {
+ char key_full[MAX_ID_NAME + FILE_MAX + MAX_NAME] = {0};
+ scene_undo_depsgraph_gen_key(scene, view_layer, key_full);
+
+ Depsgraph **depsgraph_extract_ptr = (Depsgraph **)BLI_ghash_lookup_p(depsgraph_extract,
+ key_full);
+ if (depsgraph_extract_ptr == NULL) {
+ continue;
+ }
+ BLI_assert(*depsgraph_extract_ptr != NULL);
+
+ Depsgraph **depsgraph_scene_ptr = scene_get_depsgraph_p(
+ bmain, scene, view_layer, true, false);
+ BLI_assert(depsgraph_scene_ptr != NULL);
+ BLI_assert(*depsgraph_scene_ptr == NULL);
+
+ /* We steal the depsgraph back from our 'extract' storage to the scene. */
+ Depsgraph *depsgraph = *depsgraph_extract_ptr;
+
+ DEG_graph_replace_owners(depsgraph, bmain, scene, view_layer);
+
+ DEG_graph_tag_relations_update(depsgraph);
+
+ *depsgraph_scene_ptr = depsgraph;
+ *depsgraph_extract_ptr = NULL;
+ }
}
- return depsgraph;
+
+ BLI_ghash_free(depsgraph_extract, MEM_freeN, depsgraph_key_value_free);
}
/* -------------------------------------------------------------------- */
diff --git a/source/blender/blenkernel/intern/undo_system.c b/source/blender/blenkernel/intern/undo_system.c
index 74b322aeab7..30867cc15e9 100644
--- a/source/blender/blenkernel/intern/undo_system.c
+++ b/source/blender/blenkernel/intern/undo_system.c
@@ -163,6 +163,7 @@ static bool undosys_step_encode(bContext *C, Main *bmain, UndoStack *ustack, Und
* not all members are filled in. */
us->type->step_foreach_ID_ref(us, undosys_id_ref_store, bmain);
}
+
#ifdef WITH_GLOBAL_UNDO_CORRECT_ORDER
if (us->type == BKE_UNDOSYS_TYPE_MEMFILE) {
ustack->step_active_memfile = us;
@@ -193,7 +194,7 @@ static void undosys_step_decode(
* undo step will be correctly resolved, see: T56163. */
undosys_step_decode(C, bmain, ustack, us_iter, dir, false);
/* May have been freed on memfile read. */
- bmain = G.main;
+ bmain = G_MAIN;
}
break;
}
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index 00dbe334356..8495caa91b5 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -76,8 +76,11 @@ typedef struct WorkspaceConfigFileData {
} WorkspaceConfigFileData;
struct BlendFileReadParams {
- uint skip_flags : 2; /* eBLOReadSkip */
+ uint skip_flags : 3; /* eBLOReadSkip */
uint is_startup : 1;
+
+ /** Whether we are reading the memfile for an undo (< 0) or a redo (> 0). */
+ int undo_direction : 2;
};
/* skip reading some data-block types (may want to skip screen data too). */
@@ -85,6 +88,8 @@ typedef enum eBLOReadSkip {
BLO_READ_SKIP_NONE = 0,
BLO_READ_SKIP_USERDEF = (1 << 0),
BLO_READ_SKIP_DATA = (1 << 1),
+ /** Do not attempt to re-use IDs from old bmain for unchanged ones in case of undo. */
+ BLO_READ_SKIP_UNDO_OLD_MAIN = (1 << 2),
} eBLOReadSkip;
#define BLO_READ_SKIP_ALL (BLO_READ_SKIP_USERDEF | BLO_READ_SKIP_DATA)
@@ -98,7 +103,7 @@ BlendFileData *BLO_read_from_memory(const void *mem,
BlendFileData *BLO_read_from_memfile(struct Main *oldmain,
const char *filename,
struct MemFile *memfile,
- eBLOReadSkip skip_flags,
+ const struct BlendFileReadParams *params,
struct ReportList *reports);
void BLO_blendfiledata_free(BlendFileData *bfd);
diff --git a/source/blender/blenloader/BLO_undofile.h b/source/blender/blenloader/BLO_undofile.h
index 0388b3f3520..5f1142cc20e 100644
--- a/source/blender/blenloader/BLO_undofile.h
+++ b/source/blender/blenloader/BLO_undofile.h
@@ -34,6 +34,10 @@ typedef struct {
unsigned int size;
/** When true, this chunk doesn't own the memory, it's shared with a previous #MemFileChunk */
bool is_identical;
+ /** When true, this chunk is also identical to the one in the next step (used by undo code to
+ * detect unchanged IDs).
+ * Defined when writing the next step (i.e. last undo step has those always false). */
+ bool is_identical_future;
} MemFileChunk;
typedef struct MemFile {
diff --git a/source/blender/blenloader/intern/readblenentry.c b/source/blender/blenloader/intern/readblenentry.c
index a4b96c9e59c..085e500f7e5 100644
--- a/source/blender/blenloader/intern/readblenentry.c
+++ b/source/blender/blenloader/intern/readblenentry.c
@@ -363,17 +363,17 @@ BlendFileData *BLO_read_from_memory(const void *mem,
BlendFileData *BLO_read_from_memfile(Main *oldmain,
const char *filename,
MemFile *memfile,
- eBLOReadSkip skip_flags,
+ const struct BlendFileReadParams *params,
ReportList *reports)
{
BlendFileData *bfd = NULL;
FileData *fd;
ListBase old_mainlist;
- fd = blo_filedata_from_memfile(memfile, reports);
+ fd = blo_filedata_from_memfile(memfile, params, reports);
if (fd) {
fd->reports = reports;
- fd->skip_flags = skip_flags;
+ fd->skip_flags = params->skip_flags;
BLI_strncpy(fd->relabase, filename, sizeof(fd->relabase));
/* clear ob->proxy_from pointers in old main */
@@ -384,6 +384,12 @@ BlendFileData *BLO_read_from_memfile(Main *oldmain,
/* add the library pointers in oldmap lookup */
blo_add_library_pointer_map(&old_mainlist, fd);
+ if ((params->skip_flags & BLO_READ_SKIP_UNDO_OLD_MAIN) == 0) {
+ /* Build idmap of old main (we only care about local data here, so we can do that after
+ * split_main() call. */
+ blo_make_old_idmap_from_main(fd, old_mainlist.first);
+ }
+
/* makes lookup of existing images in old main */
blo_make_image_pointer_map(fd, oldmain);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 0fbc9c661f3..cf708ef4f13 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -97,6 +97,7 @@
#include "BLI_endian_switch.h"
#include "BLI_blenlib.h"
+#include "BLI_linklist.h"
#include "BLI_math.h"
#include "BLI_threads.h"
#include "BLI_mempool.h"
@@ -261,6 +262,7 @@ typedef struct BHeadN {
/** When set, the remainder of this allocation is the data, otherwise it needs to be read. */
bool has_data;
#endif
+ bool is_memchunk_identical;
struct BHead bhead;
} BHeadN;
@@ -794,7 +796,7 @@ static BHeadN *get_bhead(FileData *fd)
*/
if (fd->flags & FD_FLAGS_FILE_POINTSIZE_IS_4) {
bhead4.code = DATA;
- readsize = fd->read(fd, &bhead4, sizeof(bhead4));
+ readsize = fd->read(fd, &bhead4, sizeof(bhead4), NULL);
if (readsize == sizeof(bhead4) || bhead4.code == ENDB) {
if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
@@ -817,7 +819,7 @@ static BHeadN *get_bhead(FileData *fd)
}
else {
bhead8.code = DATA;
- readsize = fd->read(fd, &bhead8, sizeof(bhead8));
+ readsize = fd->read(fd, &bhead8, sizeof(bhead8), NULL);
if (readsize == sizeof(bhead8) || bhead8.code == ENDB) {
if (fd->flags & FD_FLAGS_SWITCH_ENDIAN) {
@@ -858,6 +860,7 @@ static BHeadN *get_bhead(FileData *fd)
new_bhead->next = new_bhead->prev = NULL;
new_bhead->file_offset = fd->file_offset;
new_bhead->has_data = false;
+ new_bhead->is_memchunk_identical = false;
new_bhead->bhead = bhead;
off64_t seek_new = fd->seek(fd, bhead.len, SEEK_CUR);
if (seek_new == -1) {
@@ -880,9 +883,10 @@ static BHeadN *get_bhead(FileData *fd)
new_bhead->file_offset = 0; /* don't seek. */
new_bhead->has_data = true;
#endif
+ new_bhead->is_memchunk_identical = false;
new_bhead->bhead = bhead;
- readsize = fd->read(fd, new_bhead + 1, bhead.len);
+ readsize = fd->read(fd, new_bhead + 1, bhead.len, &new_bhead->is_memchunk_identical);
if (readsize != bhead.len) {
fd->is_eof = true;
@@ -972,7 +976,8 @@ static bool blo_bhead_read_data(FileData *fd, BHead *thisblock, void *buf)
success = false;
}
else {
- if (fd->read(fd, buf, new_bhead->bhead.len) != new_bhead->bhead.len) {
+ if (fd->read(fd, buf, new_bhead->bhead.len, &new_bhead->is_memchunk_identical) !=
+ new_bhead->bhead.len) {
success = false;
}
}
@@ -989,6 +994,7 @@ static BHead *blo_bhead_read_full(FileData *fd, BHead *thisblock)
new_bhead_data->bhead = new_bhead->bhead;
new_bhead_data->file_offset = new_bhead->file_offset;
new_bhead_data->has_data = true;
+ new_bhead_data->is_memchunk_identical = false;
if (!blo_bhead_read_data(fd, thisblock, new_bhead_data + 1)) {
MEM_freeN(new_bhead_data);
return NULL;
@@ -1009,7 +1015,7 @@ static void decode_blender_header(FileData *fd)
int readsize;
/* read in the header data */
- readsize = fd->read(fd, header, sizeof(header));
+ readsize = fd->read(fd, header, sizeof(header), NULL);
if (readsize == sizeof(header) && STREQLEN(header, "BLENDER", 7) && ELEM(header[7], '_', '-') &&
ELEM(header[8], 'v', 'V') &&
@@ -1141,7 +1147,10 @@ static int *read_file_thumbnail(FileData *fd)
/* Regular file reading. */
-static int fd_read_data_from_file(FileData *filedata, void *buffer, uint size)
+static int fd_read_data_from_file(FileData *filedata,
+ void *buffer,
+ uint size,
+ bool *UNUSED(r_is_memchunck_identical))
{
int readsize = read(filedata->filedes, buffer, size);
@@ -1163,7 +1172,10 @@ static off64_t fd_seek_data_from_file(FileData *filedata, off64_t offset, int wh
/* GZip file reading. */
-static int fd_read_gzip_from_file(FileData *filedata, void *buffer, uint size)
+static int fd_read_gzip_from_file(FileData *filedata,
+ void *buffer,
+ uint size,
+ bool *UNUSED(r_is_memchunck_identical))
{
int readsize = gzread(filedata->gzfiledes, buffer, size);
@@ -1179,7 +1191,10 @@ static int fd_read_gzip_from_file(FileData *filedata, void *buffer, uint size)
/* Memory reading. */
-static int fd_read_from_memory(FileData *filedata, void *buffer, uint size)
+static int fd_read_from_memory(FileData *filedata,
+ void *buffer,
+ uint size,
+ bool *UNUSED(r_is_memchunck_identical))
{
/* don't read more bytes then there are available in the buffer */
int readsize = (int)MIN2(size, (uint)(filedata->buffersize - filedata->file_offset));
@@ -1192,7 +1207,10 @@ static int fd_read_from_memory(FileData *filedata, void *buffer, uint size)
/* MemFile reading. */
-static int fd_read_from_memfile(FileData *filedata, void *buffer, uint size)
+static int fd_read_from_memfile(FileData *filedata,
+ void *buffer,
+ uint size,
+ bool *r_is_memchunck_identical)
{
static size_t seek = SIZE_MAX; /* the current position */
static size_t offset = 0; /* size of previous chunks */
@@ -1248,6 +1266,15 @@ static int fd_read_from_memfile(FileData *filedata, void *buffer, uint size)
totread += readsize;
filedata->file_offset += readsize;
seek += readsize;
+ if (r_is_memchunck_identical != NULL) {
+ /* `is_identical` of current chunk represent whether it changed compared to previous undo
+ * step. this is fine in redo case (filedata->undo_direction > 0), but not in undo case,
+ * where we need an extra flag defined when saving the next (future) step after the one we
+ * want to restore, as we are supposed to 'come from' that future undo step, and not the
+ * one before current one. */
+ *r_is_memchunck_identical = filedata->undo_direction > 0 ? chunk->is_identical :
+ chunk->is_identical_future;
+ }
} while (totread < size);
return totread;
@@ -1414,7 +1441,10 @@ static FileData *blo_filedata_from_file_minimal(const char *filepath)
return NULL;
}
-static int fd_read_gzip_from_memory(FileData *filedata, void *buffer, uint size)
+static int fd_read_gzip_from_memory(FileData *filedata,
+ void *buffer,
+ uint size,
+ bool *UNUSED(r_is_memchunck_identical))
{
int err;
@@ -1485,7 +1515,9 @@ FileData *blo_filedata_from_memory(const void *mem, int memsize, ReportList *rep
}
}
-FileData *blo_filedata_from_memfile(MemFile *memfile, ReportList *reports)
+FileData *blo_filedata_from_memfile(MemFile *memfile,
+ const struct BlendFileReadParams *params,
+ ReportList *reports)
{
if (!memfile) {
BKE_report(reports, RPT_WARNING, "Unable to open blend <memory>");
@@ -1494,6 +1526,7 @@ FileData *blo_filedata_from_memfile(MemFile *memfile, ReportList *reports)
else {
FileData *fd = filedata_new();
fd->memfile = memfile;
+ fd->undo_direction = params->undo_direction;
fd->read = fd_read_from_memfile;
fd->flags |= FD_FLAGS_NOT_MY_BUFFER;
@@ -1568,6 +1601,9 @@ void blo_filedata_free(FileData *fd)
if (fd->libmap && !(fd->flags & FD_FLAGS_NOT_MY_LIBMAP)) {
oldnewmap_free(fd->libmap);
}
+ if (fd->old_idmap != NULL) {
+ BKE_main_idmap_destroy(fd->old_idmap);
+ }
if (fd->bheadmap) {
MEM_freeN(fd->bheadmap);
}
@@ -2187,6 +2223,16 @@ void blo_add_library_pointer_map(ListBase *old_mainlist, FileData *fd)
fd->old_mainlist = old_mainlist;
}
+/* Build a GSet of old main (we only care about local data here, so we can do that after
+ * split_main() call. */
+void blo_make_old_idmap_from_main(FileData *fd, Main *bmain)
+{
+ if (fd->old_idmap != NULL) {
+ BKE_main_idmap_destroy(fd->old_idmap);
+ }
+ fd->old_idmap = BKE_main_idmap_create(bmain, false, NULL, MAIN_IDMAP_TYPE_UUID);
+}
+
/** \} */
/* -------------------------------------------------------------------- */
@@ -2267,6 +2313,10 @@ static void *read_struct(FileData *fd, BHead *bh, const char *blockname)
#endif
}
}
+
+ if (!BHEADN_FROM_BHEAD(bh)->is_memchunk_identical) {
+ fd->are_memchunks_identical = false;
+ }
#ifdef USE_BHEAD_READ_ON_DEMAND
if (bh_orig != bh) {
MEM_freeN(BHEADN_FROM_BHEAD(bh));
@@ -2656,17 +2706,17 @@ static void direct_link_id_override_property_cb(FileData *fd, void *data)
link_list_ex(fd, &op->operations, direct_link_id_override_property_operation_cb);
}
-static void direct_link_id(FileData *fd, ID *id);
+static void direct_link_id(FileData *fd, ID *id, ID *id_old);
static void direct_link_nodetree(FileData *fd, bNodeTree *ntree);
static void direct_link_collection(FileData *fd, Collection *collection);
-static void direct_link_id_private_id(FileData *fd, ID *id)
+static void direct_link_id_private_id(FileData *fd, ID *id, ID *id_old)
{
/* Handle 'private IDs'. */
bNodeTree **nodetree = BKE_ntree_ptr_from_id(id);
if (nodetree != NULL && *nodetree != NULL) {
*nodetree = newdataadr(fd, *nodetree);
- direct_link_id(fd, (ID *)*nodetree);
+ direct_link_id(fd, (ID *)*nodetree, id_old != NULL ? (ID *)ntreeFromID(id_old) : NULL);
direct_link_nodetree(fd, *nodetree);
}
@@ -2674,13 +2724,15 @@ static void direct_link_id_private_id(FileData *fd, ID *id)
Scene *scene = (Scene *)id;
if (scene->master_collection != NULL) {
scene->master_collection = newdataadr(fd, scene->master_collection);
- direct_link_id(fd, &scene->master_collection->id);
+ direct_link_id(fd,
+ &scene->master_collection->id,
+ id_old != NULL ? &((Scene *)id_old)->master_collection->id : NULL);
direct_link_collection(fd, scene->master_collection);
}
}
}
-static void direct_link_id(FileData *fd, ID *id)
+static void direct_link_id(FileData *fd, ID *id, ID *id_old)
{
/*link direct data of ID properties*/
if (id->properties) {
@@ -2704,8 +2756,34 @@ static void direct_link_id(FileData *fd, ID *id)
*
* But for regular file load we clear the flag, since the flags might have been changed since
* the version the file has been saved with. */
- if (!fd->memfile) {
+ if (fd->memfile == NULL) {
id->recalc = 0;
+ id->recalc_undo_accumulated = 0;
+ }
+ else if ((fd->skip_flags & BLO_READ_SKIP_UNDO_OLD_MAIN) == 0) {
+ if (fd->undo_direction < 0) {
+ /* We are coming from the future (i.e. do an actual undo, and not a redo), and we found an
+ * old (aka existing) ID: we use its 'accumulated recalc flags since last memfile undo step
+ * saving' as recalc flags of our newly read ID. */
+ if (id_old != NULL) {
+ id->recalc = id_old->recalc_undo_accumulated;
+ }
+ }
+ else {
+ /* We are coming from the past (i.e. do a redo), we use saved 'accumulated
+ * recalc flags since last memfile undo step saving' as recalc flags of our newly read ID. */
+ id->recalc = id->recalc_undo_accumulated;
+ }
+ /* In any case, we need to flush the depsgraph's CoWs, as even if the ID address itself did not
+ * change, internal data most likely have. */
+ id->recalc |= ID_RECALC_COPY_ON_WRITE;
+
+ /* We need to 'accumulate' the accumulated recalc flags of all undo steps until we actually
+ * perform a depsgraph update, otherwise we'd only ever use the flags from one of the steps,
+ * and never get proper flags matching all others. */
+ if (id_old != NULL) {
+ id->recalc_undo_accumulated |= id_old->recalc_undo_accumulated;
+ }
}
/* Link direct data of overrides. */
@@ -2721,7 +2799,7 @@ static void direct_link_id(FileData *fd, ID *id)
}
/* Handle 'private IDs'. */
- direct_link_id_private_id(fd, id);
+ direct_link_id_private_id(fd, id, id_old);
}
/** \} */
@@ -7386,7 +7464,7 @@ static void lib_link_area(FileData *fd, ID *parent_id, ScrArea *area)
View3D *v3d = (View3D *)sl;
v3d->camera = newlibadr(fd, parent_id->lib, v3d->camera);
- v3d->ob_centre = newlibadr(fd, parent_id->lib, v3d->ob_centre);
+ v3d->ob_center = newlibadr(fd, parent_id->lib, v3d->ob_center);
if (v3d->localvd) {
v3d->localvd->camera = newlibadr(fd, parent_id->lib, v3d->localvd->camera);
@@ -7898,7 +7976,7 @@ static void lib_link_workspace_layout_restore(struct IDNameLib_Map *id_map,
ARegion *region;
v3d->camera = restore_pointer_by_name(id_map, (ID *)v3d->camera, USER_REAL);
- v3d->ob_centre = restore_pointer_by_name(id_map, (ID *)v3d->ob_centre, USER_REAL);
+ v3d->ob_center = restore_pointer_by_name(id_map, (ID *)v3d->ob_center, USER_REAL);
/* Free render engines for now. */
ListBase *regionbase = (sl == sa->spacedata.first) ? &sa->regionbase : &sl->regionbase;
@@ -9072,15 +9150,155 @@ static BHead *read_libblock(FileData *fd,
}
/* read libblock */
+ fd->are_memchunks_identical = true;
id = read_struct(fd, bhead, "lib block");
+ const short idcode = id != NULL ? GS(id->name) : 0;
+
+ BHead *id_bhead = bhead;
+ /* Used when undoing from memfile, we swap changed IDs into their old addresses when found. */
+ ID *id_old = NULL;
+ bool do_id_swap = false;
+
+ if (id != NULL) {
+ const bool do_partial_undo = (fd->skip_flags & BLO_READ_SKIP_UNDO_OLD_MAIN) == 0;
+
+ if (id_bhead->code != ID_LINK_PLACEHOLDER) {
+ /* need a name for the mallocN, just for debugging and sane prints on leaks */
+ allocname = dataname(idcode);
+
+ /* read all data into fd->datamap */
+ /* TODO: instead of building oldnewmap here we could just quickly check the bheads... could
+ * save some more ticks. Probably not worth it though, bottleneck is full depsgraph rebuild
+ * and eval, not actual file reading. */
+ bhead = read_data_into_oldnewmap(fd, id_bhead, allocname);
+
+ DEBUG_PRINTF(
+ "%s: ID %s is unchanged: %d\n", __func__, id->name, fd->are_memchunks_identical);
+
+ if (fd->memfile != NULL) {
+ BLI_assert(fd->old_idmap != NULL || !do_partial_undo);
+ /* This code should only ever be reached for local data-blocks. */
+ BLI_assert(main->curlib == NULL);
+
+ /* Find the 'current' existing ID we want to reuse instead of the one we would read from
+ * the undo memfile. */
+ DEBUG_PRINTF("\t Looking for ID %s with uuid %u instead of newly read one\n",
+ id->name,
+ id->session_uuid);
+ id_old = do_partial_undo ? BKE_main_idmap_lookup_uuid(fd->old_idmap, id->session_uuid) :
+ NULL;
+ bool can_finalize_and_return = false;
+
+ if (ELEM(idcode, ID_WM, ID_SCR, ID_WS)) {
+ /* Read WindowManager, Screen and WorkSpace IDs are never actually used during undo (see
+ * `setup_app_data()` in `blendfile.c`).
+ * So we can just abort here, just ensuring libmapping is set accordingly. */
+ can_finalize_and_return = true;
+ }
+ else if (id_old != NULL && fd->are_memchunks_identical) {
+ /* Do not add LIB_TAG_NEW here, this should not be needed/used in undo case anyway (as
+ * this is only for do_version-like code), but for sake of consistency, and also because
+ * it will tell us which ID is re-used from old Main, and which one is actually new. */
+ id_old->tag = tag | LIB_TAG_NEED_LINK | LIB_TAG_UNDO_OLD_ID_REUSED;
+ id_old->lib = main->curlib;
+ id_old->us = ID_FAKE_USERS(id_old);
+ /* Do not reset id->icon_id here, memory allocated for it remains valid. */
+ /* Needed because .blend may have been saved with crap value here... */
+ id_old->newid = NULL;
+ id_old->orig_id = NULL;
+
+ /* About recalc: since that ID did not change at all, we know that its recalc fields also
+ * remained unchanged, so no need to handle neither recalc nor recalc_undo_future here.
+ */
+
+ Main *old_bmain = fd->old_mainlist->first;
+ ListBase *old_lb = which_libbase(old_bmain, idcode);
+ ListBase *new_lb = which_libbase(main, idcode);
+ BLI_remlink(old_lb, id_old);
+ BLI_addtail(new_lb, id_old);
+
+ can_finalize_and_return = true;
+ }
+
+ if (can_finalize_and_return) {
+ DEBUG_PRINTF("Re-using existing ID %s instead of newly read one\n", id_old->name);
+ oldnewmap_insert(fd->libmap, id_bhead->old, id_old, id_bhead->code);
+ oldnewmap_insert(fd->libmap, id_old, id_old, id_bhead->code);
+
+ if (r_id) {
+ *r_id = id_old;
+ }
+
+ if (do_partial_undo) {
+ /* Even though we re-use the old ID as-is, it does not mean that we are 100% safe from
+ * needing some depsgraph updates for it (it could depend on another ID which address
+ * did
+ * not change, but which actual content might have been re-read from the memfile). */
+ if (fd->undo_direction < 0) {
+ /* We are coming from the future (i.e. do an actual undo, and not a redo), we use our
+ * old reused ID's 'accumulated recalc flags since last memfile undo step saving' as
+ * recalc flags. */
+ id_old->recalc = id_old->recalc_undo_accumulated;
+ }
+ else {
+ /* We are coming from the past (i.e. do a redo), we use the saved 'accumulated recalc
+ * flags since last memfile undo step saving' from the newly read ID as recalc flags.
+ */
+ id_old->recalc = id->recalc_undo_accumulated;
+ }
+ /* There is no need to flush the depsgraph's CoWs here, since that ID's data itself did
+ * not change. */
+
+ /* We need to 'accumulate' the accumulated recalc flags of all undo steps until we
+ * actually perform a depsgraph update, otherwise we'd only ever use the flags from one
+ * of the steps, and never get proper flags matching all others. */
+ id_old->recalc_undo_accumulated |= id->recalc_undo_accumulated;
+ }
+
+ MEM_freeN(id);
+ oldnewmap_free_unused(fd->datamap);
+ oldnewmap_clear(fd->datamap);
+
+ return bhead;
+ }
+ }
+ }
- if (id) {
- const short idcode = GS(id->name);
/* do after read_struct, for dna reconstruct */
lb = which_libbase(main, idcode);
if (lb) {
+ /* Some re-used old IDs might also use newly read ones, so we have to check for old memory
+ * addresses for those as well. */
+ if (fd->memfile != NULL && do_partial_undo && id->lib == NULL) {
+ BLI_assert(fd->old_idmap != NULL);
+ DEBUG_PRINTF("\t Looking for ID %s with uuid %u instead of newly read one\n",
+ id->name,
+ id->session_uuid);
+ id_old = BKE_main_idmap_lookup_uuid(fd->old_idmap, id->session_uuid);
+ if (id_old != NULL) {
+ BLI_assert(MEM_allocN_len(id) == MEM_allocN_len(id_old));
+ /* UI IDs are always re-used from old bmain at higher-level calling code, so never swap
+ * those. Besides maybe custom properties, no other ID should have pointers to those
+ * anyway...
+ * And linked IDs are handled separately as well. */
+ do_id_swap = !ELEM(idcode, ID_WM, ID_SCR, ID_WS) &&
+ !(id_bhead->code == ID_LINK_PLACEHOLDER);
+ }
+ }
+
+ /* At this point, we know we are going to keep that newly read & allocated ID, so we need to
+ * reallocate it to ensure we actually get a unique memory address for it. */
+ if (!do_id_swap) {
+ DEBUG_PRINTF("using newly-read ID %s to a new mem address\n", id->name);
+ }
+ else {
+ DEBUG_PRINTF("using newly-read ID %s to its old, already existing address\n", id->name);
+ }
+
/* for ID_LINK_PLACEHOLDER check */
- oldnewmap_insert(fd->libmap, bhead->old, id, bhead->code);
+ ID *id_target = do_id_swap ? id_old : id;
+ oldnewmap_insert(fd->libmap, id_bhead->old, id_target, id_bhead->code);
+ oldnewmap_insert(fd->libmap, id_old, id_target, id_bhead->code);
BLI_addtail(lb, id);
@@ -9101,10 +9319,10 @@ static BHead *read_libblock(FileData *fd,
}
if (r_id) {
- *r_id = id;
+ *r_id = do_id_swap ? id_old : id;
}
if (!id) {
- return blo_bhead_next(fd, bhead);
+ return blo_bhead_next(fd, id_bhead);
}
id->lib = main->curlib;
@@ -9114,7 +9332,7 @@ static BHead *read_libblock(FileData *fd,
id->orig_id = NULL;
/* this case cannot be direct_linked: it's just the ID part */
- if (bhead->code == ID_LINK_PLACEHOLDER) {
+ if (id_bhead->code == ID_LINK_PLACEHOLDER) {
/* That way, we know which data-lock needs do_versions (required currently for linking). */
id->tag = tag | LIB_TAG_ID_LINK_PLACEHOLDER | LIB_TAG_NEED_LINK | LIB_TAG_NEW;
@@ -9127,23 +9345,17 @@ static BHead *read_libblock(FileData *fd,
}
}
- return blo_bhead_next(fd, bhead);
+ return blo_bhead_next(fd, id_bhead);
}
- /* need a name for the mallocN, just for debugging and sane prints on leaks */
- allocname = dataname(GS(id->name));
-
- /* read all data into fd->datamap */
- bhead = read_data_into_oldnewmap(fd, bhead, allocname);
-
/* init pointers direct data */
- direct_link_id(fd, id);
+ direct_link_id(fd, id, id_old);
/* That way, we know which data-lock needs do_versions (required currently for linking). */
- /* Note: doing this after driect_link_id(), which resets that field. */
+ /* Note: doing this after direct_link_id(), which resets that field. */
id->tag = tag | LIB_TAG_NEED_LINK | LIB_TAG_NEW;
- switch (GS(id->name)) {
+ switch (idcode) {
case ID_WM:
direct_link_windowmanager(fd, (wmWindowManager *)id);
break;
@@ -9267,6 +9479,37 @@ static BHead *read_libblock(FileData *fd,
*r_id = NULL;
}
}
+ else if (do_id_swap) {
+ /* During memfile undo, if an ID changed and we cannot directly re-use existing one from old
+ * bmain, we do a full read of the new id from the memfile, and then fully swap its content
+ * with the old id. This allows us to keep the same pointer even for modified data, which helps
+ * reducing further detected changes by the depsgraph (since unchanged IDs remain fully
+ * unchanged, even if they are using/pointing to a changed one). */
+
+ BLI_assert((fd->skip_flags & BLO_READ_SKIP_UNDO_OLD_MAIN) == 0);
+
+ Main *old_bmain = fd->old_mainlist->first;
+ BLI_assert(id_old != NULL);
+
+ ListBase *old_lb = which_libbase(old_bmain, idcode);
+ ListBase *new_lb = which_libbase(main, idcode);
+ BLI_remlink(old_lb, id_old);
+ BLI_remlink(new_lb, id);
+
+ /* We do not need any remapping from this call here, since no ID pointer is valid in the data
+ * currently (they are all pointing to old addresses, and need to go through `lib_link`
+ * process). So we can pass NULL for the Main pointer parameter. */
+ BKE_lib_id_swap_full(NULL, id, id_old);
+
+ BLI_addtail(new_lb, id_old);
+ BLI_addtail(old_lb, id);
+ }
+ else if (fd->memfile != NULL) {
+ DEBUG_PRINTF("We had to fully re-recreate ID %s (old addr: %p, new addr: %p)...\n",
+ id->name,
+ id_old,
+ id);
+ }
return (bhead);
}
@@ -9438,6 +9681,8 @@ static void do_versions_after_linking(Main *main, ReportList *reports)
static void lib_link_all(FileData *fd, Main *bmain)
{
+ const bool do_partial_undo = (fd->skip_flags & BLO_READ_SKIP_UNDO_OLD_MAIN) == 0;
+
ID *id;
FOREACH_MAIN_ID_BEGIN (bmain, id) {
if ((id->tag & LIB_TAG_NEED_LINK) == 0) {
@@ -9451,6 +9696,13 @@ static void lib_link_all(FileData *fd, Main *bmain)
continue;
}
+ if (fd->memfile != NULL && do_partial_undo && (id->tag & LIB_TAG_UNDO_OLD_ID_REUSED) != 0) {
+ /* This ID has been re-used from 'old' bmain. Since it was therfore unchanged accross current
+ * undo step, and old IDs re-use their old memory address, we do not need to liblink it at
+ * all. */
+ continue;
+ }
+
lib_link_id(fd, bmain, id);
/* Note: ID types are processed in reverse order as defined by INDEX_ID_XXX enums in DNA_ID.h.
diff --git a/source/blender/blenloader/intern/readfile.h b/source/blender/blenloader/intern/readfile.h
index fb307f6bde3..4965845d167 100644
--- a/source/blender/blenloader/intern/readfile.h
+++ b/source/blender/blenloader/intern/readfile.h
@@ -30,6 +30,8 @@
#include "DNA_space_types.h"
#include "DNA_windowmanager_types.h" /* for ReportType */
+struct IDNameLib_Map;
+struct GSet;
struct Key;
struct MemFile;
struct Object;
@@ -38,6 +40,8 @@ struct PartEff;
struct ReportList;
struct View3D;
+typedef struct IDNameLib_Map IDNameLib_Map;
+
enum eFileDataFlag {
FD_FLAGS_SWITCH_ENDIAN = 1 << 0,
FD_FLAGS_FILE_POINTSIZE_IS_4 = 1 << 1,
@@ -57,7 +61,10 @@ enum eFileDataFlag {
typedef int64_t off64_t;
#endif
-typedef int(FileDataReadFn)(struct FileData *filedata, void *buffer, unsigned int size);
+typedef int(FileDataReadFn)(struct FileData *filedata,
+ void *buffer,
+ unsigned int size,
+ bool *r_is_memchunk_identical);
typedef off64_t(FileDataSeekFn)(struct FileData *filedata, off64_t offset, int whence);
typedef struct FileData {
@@ -78,6 +85,14 @@ typedef struct FileData {
const char *buffer;
/** Variables needed for reading from memfile (undo). */
struct MemFile *memfile;
+ /** Whether all data read from memfile so far was identical
+ * (i.e. shared with some previous undo step).
+ * Updated by `fd_read_from_memfile()`, user is responsible to reset it to true when needed.
+ * Used to detect unchanged IDs. */
+ bool are_memchunks_identical;
+ /** Whether we are undoing (< 0) or redoing (> 0), used to choose which 'unchanged' flag to use
+ * to detect unchanged data from memfile. */
+ short undo_direction;
/** Variables needed for reading from file. */
gzFile gzfiledes;
@@ -120,6 +135,7 @@ typedef struct FileData {
ListBase *mainlist;
/** Used for undo. */
ListBase *old_mainlist;
+ struct IDNameLib_Map *old_idmap;
struct ReportList *reports;
} FileData;
@@ -135,7 +151,9 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath);
FileData *blo_filedata_from_file(const char *filepath, struct ReportList *reports);
FileData *blo_filedata_from_memory(const void *buffer, int buffersize, struct ReportList *reports);
-FileData *blo_filedata_from_memfile(struct MemFile *memfile, struct ReportList *reports);
+FileData *blo_filedata_from_memfile(struct MemFile *memfile,
+ const struct BlendFileReadParams *params,
+ struct ReportList *reports);
void blo_clear_proxy_pointers_from_lib(struct Main *oldmain);
void blo_make_image_pointer_map(FileData *fd, struct Main *oldmain);
@@ -149,6 +167,7 @@ void blo_end_sound_pointer_map(FileData *fd, struct Main *oldmain);
void blo_make_packed_pointer_map(FileData *fd, struct Main *oldmain);
void blo_end_packed_pointer_map(FileData *fd, struct Main *oldmain);
void blo_add_library_pointer_map(ListBase *old_mainlist, FileData *fd);
+void blo_make_old_idmap_from_main(FileData *fd, struct Main *bmain);
void blo_filedata_free(FileData *fd);
diff --git a/source/blender/blenloader/intern/undofile.c b/source/blender/blenloader/intern/undofile.c
index 95a4771b313..0bbd8c26fa1 100644
--- a/source/blender/blenloader/intern/undofile.c
+++ b/source/blender/blenloader/intern/undofile.c
@@ -98,6 +98,7 @@ void memfile_chunk_add(MemFile *memfile, const char *buf, uint size, MemFileChun
curchunk->size = size;
curchunk->buf = NULL;
curchunk->is_identical = false;
+ curchunk->is_identical_future = false;
BLI_addtail(&memfile->chunks, curchunk);
/* we compare compchunk with buf */
@@ -107,6 +108,7 @@ void memfile_chunk_add(MemFile *memfile, const char *buf, uint size, MemFileChun
if (memcmp(compchunk->buf, buf, size) == 0) {
curchunk->buf = compchunk->buf;
curchunk->is_identical = true;
+ compchunk->is_identical_future = true;
}
}
*compchunk_step = compchunk->next;
@@ -126,8 +128,11 @@ struct Main *BLO_memfile_main_get(struct MemFile *memfile,
struct Scene **r_scene)
{
struct Main *bmain_undo = NULL;
- BlendFileData *bfd = BLO_read_from_memfile(
- oldmain, BKE_main_blendfile_path(oldmain), memfile, BLO_READ_SKIP_NONE, NULL);
+ BlendFileData *bfd = BLO_read_from_memfile(oldmain,
+ BKE_main_blendfile_path(oldmain),
+ memfile,
+ &(const struct BlendFileReadParams){0},
+ NULL);
if (bfd) {
bmain_undo = bfd->main;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index a92404b2372..29366e3bae5 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -703,7 +703,7 @@ void IDP_WriteProperty(const IDProperty *prop, void *wd)
IDP_WriteProperty_OnlyData(prop, wd);
}
-static void write_iddata(void *wd, const ID *id)
+static void write_iddata(WriteData *wd, ID *id)
{
/* ID_WM's id->properties are considered runtime only, and never written in .blend file. */
if (id->properties && !ELEM(GS(id->name), ID_WM)) {
@@ -731,6 +731,11 @@ static void write_iddata(void *wd, const ID *id)
}
}
}
+
+ /* Clear the accumulated recalc flags in case of undo step saving. */
+ if (wd->use_memfile) {
+ id->recalc_undo_accumulated = 0;
+ }
}
static void write_previews(WriteData *wd, const PreviewImage *prv_orig)
@@ -1131,6 +1136,11 @@ static void write_nodetree_nolib(WriteData *wd, bNodeTree *ntree)
for (sock = ntree->outputs.first; sock; sock = sock->next) {
write_node_socket_interface(wd, sock);
}
+
+ /* Clear the accumulated recalc flags in case of undo step saving. */
+ if (wd->use_memfile) {
+ ntree->id.recalc_undo_accumulated = 0;
+ }
}
/**
@@ -2425,6 +2435,11 @@ static void write_collection_nolib(WriteData *wd, Collection *collection)
for (CollectionChild *child = collection->children.first; child; child = child->next) {
writestruct(wd, DATA, CollectionChild, 1, child);
}
+
+ /* Clear the accumulated recalc flags in case of undo step saving. */
+ if (wd->use_memfile) {
+ collection->id.recalc_undo_accumulated = 0;
+ }
}
static void write_collection(WriteData *wd, Collection *collection)
@@ -4012,6 +4027,12 @@ static bool write_file_handle(Main *mainvar,
if (do_override) {
BKE_lib_override_library_operations_store_end(override_storage, id);
}
+
+ if (wd->use_memfile) {
+ /* Very important to do it after every ID write now, otherwise we cannot know whether a
+ * specific ID changed or not. */
+ mywrite_flush(wd);
+ }
}
mywrite_flush(wd);
diff --git a/source/blender/depsgraph/DEG_depsgraph.h b/source/blender/depsgraph/DEG_depsgraph.h
index d5a93d21b99..c94a8876ab0 100644
--- a/source/blender/depsgraph/DEG_depsgraph.h
+++ b/source/blender/depsgraph/DEG_depsgraph.h
@@ -92,6 +92,11 @@ Depsgraph *DEG_graph_new(struct Main *bmain,
struct ViewLayer *view_layer,
eEvaluationMode mode);
+void DEG_graph_replace_owners(struct Depsgraph *depsgraph,
+ struct Main *bmain,
+ struct Scene *scene,
+ struct ViewLayer *view_layer);
+
/* Free Depsgraph itself and all its data */
void DEG_graph_free(Depsgraph *graph);
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
index 6791125d1e9..27d6db6a58f 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_relations.cc
@@ -2127,9 +2127,20 @@ void DepsgraphRelationBuilder::build_object_data_geometry_datablock(ID *obdata)
/* Layer parenting need react to the parent object transformation. */
LISTBASE_FOREACH (bGPDlayer *, gpl, &gpd->layers) {
if (gpl->parent != NULL) {
- ComponentKey transform_key(&gpl->parent->id, NodeType::TRANSFORM);
ComponentKey gpd_geom_key(&gpd->id, NodeType::GEOMETRY);
- add_relation(transform_key, gpd_geom_key, "GPencil Parent Layer");
+
+ if (gpl->partype == PARBONE) {
+ ComponentKey bone_key(&gpl->parent->id, NodeType::BONE, gpl->parsubstr);
+ OperationKey armature_key(
+ &gpl->parent->id, NodeType::TRANSFORM, OperationCode::TRANSFORM_FINAL);
+
+ add_relation(bone_key, gpd_geom_key, "Bone Parent");
+ add_relation(armature_key, gpd_geom_key, "Armature Parent");
+ }
+ else {
+ ComponentKey transform_key(&gpl->parent->id, NodeType::TRANSFORM);
+ add_relation(transform_key, gpd_geom_key, "GPencil Parent Layer");
+ }
}
}
break;
diff --git a/source/blender/depsgraph/intern/depsgraph.cc b/source/blender/depsgraph/intern/depsgraph.cc
index ce6797939b5..a19a2958f28 100644
--- a/source/blender/depsgraph/intern/depsgraph.cc
+++ b/source/blender/depsgraph/intern/depsgraph.cc
@@ -285,6 +285,29 @@ Depsgraph *DEG_graph_new(Main *bmain, Scene *scene, ViewLayer *view_layer, eEval
return reinterpret_cast<Depsgraph *>(deg_depsgraph);
}
+/* Replace the "owner" pointers (currently Main/Scene/ViewLayer) of this depsgraph.
+ * Used during undo steps when we do want to re-use the old depsgraph data as much as possible. */
+void DEG_graph_replace_owners(struct Depsgraph *depsgraph,
+ Main *bmain,
+ Scene *scene,
+ ViewLayer *view_layer)
+{
+ DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(depsgraph);
+
+ const bool do_update_register = deg_graph->bmain != bmain;
+ if (do_update_register && deg_graph->bmain != NULL) {
+ DEG::unregister_graph(deg_graph);
+ }
+
+ deg_graph->bmain = bmain;
+ deg_graph->scene = scene;
+ deg_graph->view_layer = view_layer;
+
+ if (do_update_register) {
+ DEG::register_graph(deg_graph);
+ }
+}
+
/* Free graph's contents and graph itself */
void DEG_graph_free(Depsgraph *graph)
{
diff --git a/source/blender/depsgraph/intern/depsgraph_tag.cc b/source/blender/depsgraph/intern/depsgraph_tag.cc
index b019c079dab..8decb9f6b87 100644
--- a/source/blender/depsgraph/intern/depsgraph_tag.cc
+++ b/source/blender/depsgraph/intern/depsgraph_tag.cc
@@ -814,12 +814,16 @@ void DEG_ids_check_recalc(
static void deg_graph_clear_id_recalc_flags(ID *id)
{
+ /* Keep incremental track of used recalc flags, to get proper update when undoing. */
+ id->recalc_undo_accumulated |= id->recalc;
id->recalc &= ~ID_RECALC_ALL;
bNodeTree *ntree = ntreeFromID(id);
/* Clear embedded node trees too. */
if (ntree) {
+ ntree->id.recalc_undo_accumulated |= ntree->id.recalc;
ntree->id.recalc &= ~ID_RECALC_ALL;
}
+ /* XXX And what about scene's master collection here? */
}
void DEG_ids_clear_recalc(Main *UNUSED(bmain), Depsgraph *depsgraph)
diff --git a/source/blender/draw/engines/overlay/overlay_edit_mesh.c b/source/blender/draw/engines/overlay/overlay_edit_mesh.c
index 6c838568260..400947ea819 100644
--- a/source/blender/draw/engines/overlay/overlay_edit_mesh.c
+++ b/source/blender/draw/engines/overlay/overlay_edit_mesh.c
@@ -398,7 +398,7 @@ void OVERLAY_edit_mesh_draw(OVERLAY_Data *vedata)
DRW_draw_pass(psl->edit_mesh_normals_ps);
overlay_edit_mesh_draw_components(psl, pd, false);
- if (v3d->shading.type == OB_SOLID && pd->edit_mesh.ghost_ob == 1 &&
+ if (!DRW_state_is_depth() && v3d->shading.type == OB_SOLID && pd->edit_mesh.ghost_ob == 1 &&
pd->edit_mesh.edit_ob == 1) {
/* In the case of single ghost object edit (common case for retopology):
* we clear the depth buffer so that only the depth of the retopo mesh
diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
index 49f266291da..53550fb115e 100644
--- a/source/blender/draw/engines/overlay/overlay_extra.c
+++ b/source/blender/draw/engines/overlay/overlay_extra.c
@@ -875,11 +875,9 @@ static void camera_view3d_reconstruction(OVERLAY_ExtraCallBuffers *cb,
UI_GetThemeColor4ubv(TH_SELECT, text_color_selected);
UI_GetThemeColor4ubv(TH_TEXT, text_color_unselected);
- float camera_mat[4][4], normal_mat[4][4];
+ float camera_mat[4][4];
BKE_tracking_get_camera_object_matrix(ob, camera_mat);
- normalize_m4_m4(normal_mat, ob->obmat);
-
LISTBASE_FOREACH (MovieTrackingObject *, tracking_object, &tracking->objects) {
float tracking_object_mat[4][4];
@@ -889,12 +887,15 @@ static void camera_view3d_reconstruction(OVERLAY_ExtraCallBuffers *cb,
else {
const int framenr = BKE_movieclip_remap_scene_to_clip_frame(
clip, DEG_get_ctime(draw_ctx->depsgraph));
+
float object_mat[4][4];
BKE_tracking_camera_get_reconstructed_interpolate(
tracking, tracking_object, framenr, object_mat);
- invert_m4(object_mat);
- mul_m4_m4m4(tracking_object_mat, normal_mat, object_mat);
+ float object_imat[4][4];
+ invert_m4_m4(object_imat, object_mat);
+
+ mul_m4_m4m4(tracking_object_mat, ob->obmat, object_imat);
}
ListBase *tracksbase = BKE_tracking_object_get_tracks(tracking, tracking_object);
diff --git a/source/blender/editors/armature/armature_naming.c b/source/blender/editors/armature/armature_naming.c
index 1f421d23b27..bad4edbabaf 100644
--- a/source/blender/editors/armature/armature_naming.c
+++ b/source/blender/editors/armature/armature_naming.c
@@ -359,9 +359,9 @@ void ED_armature_bone_rename(Main *bmain,
for (sl = sa->spacedata.first; sl; sl = sl->next) {
if (sl->spacetype == SPACE_VIEW3D) {
View3D *v3d = (View3D *)sl;
- if (v3d->ob_centre && v3d->ob_centre->data == arm) {
- if (STREQ(v3d->ob_centre_bone, oldname)) {
- BLI_strncpy(v3d->ob_centre_bone, newname, MAXBONENAME);
+ if (v3d->ob_center && v3d->ob_center->data == arm) {
+ if (STREQ(v3d->ob_center_bone, oldname)) {
+ BLI_strncpy(v3d->ob_center_bone, newname, MAXBONENAME);
}
}
}
diff --git a/source/blender/editors/gpencil/gpencil_data.c b/source/blender/editors/gpencil/gpencil_data.c
index e5d332a86de..7ba4637f9d8 100644
--- a/source/blender/editors/gpencil/gpencil_data.c
+++ b/source/blender/editors/gpencil/gpencil_data.c
@@ -1599,7 +1599,7 @@ void GPENCIL_OT_stroke_change_color(wmOperatorType *ot)
/* ******************* Lock color of non selected Strokes colors ************************** */
-static int gp_stroke_lock_color_exec(bContext *C, wmOperator *UNUSED(op))
+static int gp_material_lock_unsused_exec(bContext *C, wmOperator *UNUSED(op))
{
bGPdata *gpd = ED_gpencil_data_get_active(C);
@@ -1655,15 +1655,15 @@ static int gp_stroke_lock_color_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_stroke_lock_color(wmOperatorType *ot)
+void GPENCIL_OT_material_lock_unused(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Lock Unused Colors";
- ot->idname = "GPENCIL_OT_stroke_lock_color";
- ot->description = "Lock any color not used in any selected stroke";
+ ot->name = "Lock Unused Materials";
+ ot->idname = "GPENCIL_OT_material_lock_unused";
+ ot->description = "Lock any material not used in any selected stroke";
/* api callbacks */
- ot->exec = gp_stroke_lock_color_exec;
+ ot->exec = gp_material_lock_unsused_exec;
ot->poll = gp_active_layer_poll;
/* flags */
@@ -2627,8 +2627,11 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator *op)
LISTBASE_FOREACH (bGPDstroke *, gps, &gpf->strokes) {
MDeformVert *dvert;
int i;
+ if (gps->dvert == NULL) {
+ continue;
+ }
for (i = 0, dvert = gps->dvert; i < gps->totpoints; i++, dvert++) {
- if ((dvert->dw) && (dvert->dw->def_nr == old_idx)) {
+ if ((dvert->dw != NULL) && (dvert->dw->def_nr == old_idx)) {
dvert->dw->def_nr = idx;
}
}
@@ -2757,7 +2760,7 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator *op)
}
/* Color Handle operator */
-static bool gpencil_active_color_poll(bContext *C)
+static bool gpencil_active_material_poll(bContext *C)
{
Object *ob = CTX_data_active_object(C);
if (ob && ob->data && (ob->type == OB_GPENCIL)) {
@@ -2847,7 +2850,7 @@ void GPENCIL_OT_lock_layer(wmOperatorType *ot)
/* ********************** Isolate gpencil_ color **************************** */
-static int gpencil_color_isolate_exec(bContext *C, wmOperator *op)
+static int gpencil_material_isolate_exec(bContext *C, wmOperator *op)
{
bGPdata *gpd = ED_gpencil_data_get_active(C);
Object *ob = CTX_data_active_object(C);
@@ -2929,17 +2932,17 @@ static int gpencil_color_isolate_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_color_isolate(wmOperatorType *ot)
+void GPENCIL_OT_material_isolate(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Isolate Color";
- ot->idname = "GPENCIL_OT_color_isolate";
+ ot->name = "Isolate Material";
+ ot->idname = "GPENCIL_OT_material_isolate";
ot->description =
- "Toggle whether the active color is the only one that is editable and/or visible";
+ "Toggle whether the active material is the only one that is editable and/or visible";
/* callbacks */
- ot->exec = gpencil_color_isolate_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->exec = gpencil_material_isolate_exec;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -2955,7 +2958,7 @@ void GPENCIL_OT_color_isolate(wmOperatorType *ot)
/* *********************** Hide colors ******************************** */
-static int gpencil_color_hide_exec(bContext *C, wmOperator *op)
+static int gpencil_material_hide_exec(bContext *C, wmOperator *op)
{
Object *ob = CTX_data_active_object(C);
bGPdata *gpd = (bGPdata *)ob->data;
@@ -3000,16 +3003,16 @@ static int gpencil_color_hide_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_color_hide(wmOperatorType *ot)
+void GPENCIL_OT_material_hide(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Hide Color(s)";
- ot->idname = "GPENCIL_OT_color_hide";
- ot->description = "Hide selected/unselected Grease Pencil colors";
+ ot->name = "Hide Material(s)";
+ ot->idname = "GPENCIL_OT_material_hide";
+ ot->description = "Hide selected/unselected Grease Pencil materials";
/* callbacks */
- ot->exec = gpencil_color_hide_exec;
- ot->poll = gpencil_active_color_poll; /* NOTE: we need an active color to play with */
+ ot->exec = gpencil_material_hide_exec;
+ ot->poll = gpencil_active_material_poll; /* NOTE: we need an active color to play with */
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -3021,7 +3024,7 @@ void GPENCIL_OT_color_hide(wmOperatorType *ot)
/* ********************** Show All Colors ***************************** */
-static int gpencil_color_reveal_exec(bContext *C, wmOperator *UNUSED(op))
+static int gpencil_material_reveal_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *ob = CTX_data_active_object(C);
bGPdata *gpd = (bGPdata *)ob->data;
@@ -3056,16 +3059,16 @@ static int gpencil_color_reveal_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_color_reveal(wmOperatorType *ot)
+void GPENCIL_OT_material_reveal(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Show All Colors";
- ot->idname = "GPENCIL_OT_color_reveal";
- ot->description = "Unhide all hidden Grease Pencil colors";
+ ot->name = "Show All Materials";
+ ot->idname = "GPENCIL_OT_material_reveal";
+ ot->description = "Unhide all hidden Grease Pencil materials";
/* callbacks */
- ot->exec = gpencil_color_reveal_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->exec = gpencil_material_reveal_exec;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -3073,7 +3076,7 @@ void GPENCIL_OT_color_reveal(wmOperatorType *ot)
/* ***************** Lock/Unlock All colors ************************ */
-static int gpencil_color_lock_all_exec(bContext *C, wmOperator *UNUSED(op))
+static int gpencil_material_lock_all_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *ob = CTX_data_active_object(C);
@@ -3109,17 +3112,17 @@ static int gpencil_color_lock_all_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_color_lock_all(wmOperatorType *ot)
+void GPENCIL_OT_material_lock_all(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Lock All Colors";
- ot->idname = "GPENCIL_OT_color_lock_all";
+ ot->name = "Lock All Materials";
+ ot->idname = "GPENCIL_OT_material_lock_all";
ot->description =
- "Lock all Grease Pencil colors to prevent them from being accidentally modified";
+ "Lock all Grease Pencil materials to prevent them from being accidentally modified";
/* callbacks */
- ot->exec = gpencil_color_lock_all_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->exec = gpencil_material_lock_all_exec;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -3127,7 +3130,7 @@ void GPENCIL_OT_color_lock_all(wmOperatorType *ot)
/* -------------------------- */
-static int gpencil_color_unlock_all_exec(bContext *C, wmOperator *UNUSED(op))
+static int gpencil_material_unlock_all_exec(bContext *C, wmOperator *UNUSED(op))
{
Object *ob = CTX_data_active_object(C);
bGPdata *gpd = (bGPdata *)ob->data;
@@ -3162,16 +3165,16 @@ static int gpencil_color_unlock_all_exec(bContext *C, wmOperator *UNUSED(op))
return OPERATOR_FINISHED;
}
-void GPENCIL_OT_color_unlock_all(wmOperatorType *ot)
+void GPENCIL_OT_material_unlock_all(wmOperatorType *ot)
{
/* identifiers */
- ot->name = "Unlock All Colors";
- ot->idname = "GPENCIL_OT_color_unlock_all";
- ot->description = "Unlock all Grease Pencil colors so that they can be edited";
+ ot->name = "Unlock All Materials";
+ ot->idname = "GPENCIL_OT_material_unlock_all";
+ ot->description = "Unlock all Grease Pencil materials so that they can be edited";
/* callbacks */
- ot->exec = gpencil_color_unlock_all_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->exec = gpencil_material_unlock_all_exec;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -3258,7 +3261,7 @@ void GPENCIL_OT_select_material(wmOperatorType *ot)
/* callbacks */
ot->exec = gpencil_select_material_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
@@ -3310,7 +3313,7 @@ void GPENCIL_OT_set_active_material(wmOperatorType *ot)
/* callbacks */
ot->exec = gpencil_set_active_material_exec;
- ot->poll = gpencil_active_color_poll;
+ ot->poll = gpencil_active_material_poll;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index f8ad34e8d14..00fc6550459 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -2597,10 +2597,11 @@ void GPENCIL_OT_dissolve(wmOperatorType *ot)
*/
static bool gp_snap_poll(bContext *C)
{
- bGPdata *gpd = CTX_data_gpencil_data(C);
ScrArea *sa = CTX_wm_area(C);
+ Object *ob = CTX_data_active_object(C);
- return (gpd != NULL) && ((sa != NULL) && (sa->spacetype == SPACE_VIEW3D));
+ return (ob != NULL) && (ob->type == OB_GPENCIL) &&
+ ((sa != NULL) && (sa->spacetype == SPACE_VIEW3D));
}
/* --------------------------------- */
@@ -2775,12 +2776,13 @@ void GPENCIL_OT_snap_to_cursor(wmOperatorType *ot)
static int gp_snap_cursor_to_sel(bContext *C, wmOperator *UNUSED(op))
{
- bGPdata *gpd = ED_gpencil_data_get_active(C);
+ Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
+ Object *obact = CTX_data_active_object(C);
+ Object *ob_eval = DEG_get_evaluated_object(depsgraph, obact);
+ bGPdata *gpd = (bGPdata *)ob_eval->data;
Scene *scene = CTX_data_scene(C);
View3D *v3d = CTX_wm_view3d(C);
- Depsgraph *depsgraph = CTX_data_ensure_evaluated_depsgraph(C);
- Object *obact = CTX_data_active_object(C);
float *cursor = scene->cursor.location;
float centroid[3] = {0.0f};
diff --git a/source/blender/editors/gpencil/gpencil_intern.h b/source/blender/editors/gpencil/gpencil_intern.h
index a12fd81e032..f934a5c74f3 100644
--- a/source/blender/editors/gpencil/gpencil_intern.h
+++ b/source/blender/editors/gpencil/gpencil_intern.h
@@ -491,7 +491,6 @@ enum {
void GPENCIL_OT_stroke_arrange(struct wmOperatorType *ot);
void GPENCIL_OT_stroke_change_color(struct wmOperatorType *ot);
-void GPENCIL_OT_stroke_lock_color(struct wmOperatorType *ot);
void GPENCIL_OT_stroke_apply_thickness(struct wmOperatorType *ot);
void GPENCIL_OT_stroke_cyclical_set(struct wmOperatorType *ot);
void GPENCIL_OT_stroke_caps_set(struct wmOperatorType *ot);
@@ -547,11 +546,12 @@ void GPENCIL_OT_vertex_group_normalize_all(struct wmOperatorType *ot);
/* color handle */
void GPENCIL_OT_lock_layer(struct wmOperatorType *ot);
-void GPENCIL_OT_color_isolate(struct wmOperatorType *ot);
-void GPENCIL_OT_color_hide(struct wmOperatorType *ot);
-void GPENCIL_OT_color_reveal(struct wmOperatorType *ot);
-void GPENCIL_OT_color_lock_all(struct wmOperatorType *ot);
-void GPENCIL_OT_color_unlock_all(struct wmOperatorType *ot);
+void GPENCIL_OT_material_isolate(struct wmOperatorType *ot);
+void GPENCIL_OT_material_hide(struct wmOperatorType *ot);
+void GPENCIL_OT_material_reveal(struct wmOperatorType *ot);
+void GPENCIL_OT_material_lock_all(struct wmOperatorType *ot);
+void GPENCIL_OT_material_unlock_all(struct wmOperatorType *ot);
+void GPENCIL_OT_material_lock_unused(struct wmOperatorType *ot);
void GPENCIL_OT_select_material(struct wmOperatorType *ot);
void GPENCIL_OT_set_active_material(struct wmOperatorType *ot);
diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c
index 233bebfc9b6..8794a27fb96 100644
--- a/source/blender/editors/gpencil/gpencil_ops.c
+++ b/source/blender/editors/gpencil/gpencil_ops.c
@@ -608,7 +608,7 @@ void ED_operatortypes_gpencil(void)
WM_operatortype_append(GPENCIL_OT_stroke_arrange);
WM_operatortype_append(GPENCIL_OT_stroke_change_color);
- WM_operatortype_append(GPENCIL_OT_stroke_lock_color);
+ WM_operatortype_append(GPENCIL_OT_material_lock_unused);
WM_operatortype_append(GPENCIL_OT_stroke_apply_thickness);
WM_operatortype_append(GPENCIL_OT_stroke_cyclical_set);
WM_operatortype_append(GPENCIL_OT_stroke_caps_set);
@@ -648,11 +648,11 @@ void ED_operatortypes_gpencil(void)
/* color handle */
WM_operatortype_append(GPENCIL_OT_lock_layer);
- WM_operatortype_append(GPENCIL_OT_color_isolate);
- WM_operatortype_append(GPENCIL_OT_color_hide);
- WM_operatortype_append(GPENCIL_OT_color_reveal);
- WM_operatortype_append(GPENCIL_OT_color_lock_all);
- WM_operatortype_append(GPENCIL_OT_color_unlock_all);
+ WM_operatortype_append(GPENCIL_OT_material_isolate);
+ WM_operatortype_append(GPENCIL_OT_material_hide);
+ WM_operatortype_append(GPENCIL_OT_material_reveal);
+ WM_operatortype_append(GPENCIL_OT_material_lock_all);
+ WM_operatortype_append(GPENCIL_OT_material_unlock_all);
WM_operatortype_append(GPENCIL_OT_select_material);
/* Editing (Time) --------------- */
diff --git a/source/blender/editors/gpencil/gpencil_primitive.c b/source/blender/editors/gpencil/gpencil_primitive.c
index 66c0131cd61..5cb34b1c08b 100644
--- a/source/blender/editors/gpencil/gpencil_primitive.c
+++ b/source/blender/editors/gpencil/gpencil_primitive.c
@@ -202,7 +202,7 @@ static void gp_rotate_v2_v2v2fl(float v[2],
add_v2_v2v2(v, r, origin);
}
-/* Helper to rotate line around line centre */
+/* Helper to rotate line around line center. */
static void gp_primitive_rotate_line(
float va[2], float vb[2], const float a[2], const float b[2], const float angle)
{
diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c
index 147c765143e..2db5eb784c0 100644
--- a/source/blender/editors/physics/physics_fluid.c
+++ b/source/blender/editors/physics/physics_fluid.c
@@ -305,6 +305,12 @@ static void fluid_bake_sequence(FluidJob *job)
/* Update animation system */
ED_update_for_newframe(job->bmain, job->depsgraph);
+
+ /* If user requested stop, quit baking */
+ if (G.is_break) {
+ job->success = 0;
+ return;
+ }
}
/* Restore frame position that we were on before bake */
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 79c4becd405..14c11523455 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -8371,9 +8371,8 @@ static void SCULPT_OT_optimize(wmOperatorType *ot)
static bool sculpt_no_multires_poll(bContext *C)
{
Object *ob = CTX_data_active_object(C);
- SculptSession *ss = ob->sculpt;
- if (ss && ss->pbvh && SCULPT_mode_poll(C)) {
- return BKE_pbvh_type(ss->pbvh) != PBVH_GRIDS;
+ if (SCULPT_mode_poll(C) && ob->sculpt && ob->sculpt->pbvh) {
+ return BKE_pbvh_type(ob->sculpt->pbvh) != PBVH_GRIDS;
}
return false;
}
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 35fbbad14b0..d2258db074d 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -1181,6 +1181,25 @@ static void node_draw_basis(const bContext *C,
UI_but_func_set(but, node_toggle_button_cb, node, (void *)"NODE_OT_group_edit");
UI_block_emboss_set(node->block, UI_EMBOSS);
}
+ if (node->type == NODE_CUSTOM && node->typeinfo->ui_icon != ICON_NONE) {
+ iconofs -= iconbutw;
+ UI_block_emboss_set(node->block, UI_EMBOSS_NONE);
+ uiDefIconBut(node->block,
+ UI_BTYPE_BUT,
+ 0,
+ node->typeinfo->ui_icon,
+ iconofs,
+ rct->ymax - NODE_DY,
+ iconbutw,
+ UI_UNIT_Y,
+ NULL,
+ 0,
+ 0,
+ 0,
+ 0,
+ "");
+ UI_block_emboss_set(node->block, UI_EMBOSS);
+ }
/* title */
if (node->flag & SELECT) {
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c
index 020c58270fc..b2fc6c6e4cc 100644
--- a/source/blender/editors/space_view3d/space_view3d.c
+++ b/source/blender/editors/space_view3d/space_view3d.c
@@ -1523,12 +1523,12 @@ static void view3d_id_remap(ScrArea *sa, SpaceLink *slink, ID *old_id, ID *new_i
/* Values in local-view aren't used, see: T52663 */
if (is_local == false) {
- if ((ID *)v3d->ob_centre == old_id) {
- v3d->ob_centre = (Object *)new_id;
+ if ((ID *)v3d->ob_center == old_id) {
+ v3d->ob_center = (Object *)new_id;
/* Otherwise, bonename may remain valid...
* We could be smart and check this, too? */
if (new_id == NULL) {
- v3d->ob_centre_bone[0] = '\0';
+ v3d->ob_center_bone[0] = '\0';
}
}
}
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c
index 13b38a04f63..a7136cc580c 100644
--- a/source/blender/editors/space_view3d/view3d_edit.c
+++ b/source/blender/editors/space_view3d/view3d_edit.c
@@ -3182,7 +3182,7 @@ static int view_lock_to_active_exec(bContext *C, wmOperator *UNUSED(op))
if (v3d) {
ED_view3d_lock_clear(v3d);
- v3d->ob_centre = obact; /* can be NULL */
+ v3d->ob_center = obact; /* can be NULL */
if (obact && obact->type == OB_ARMATURE) {
if (obact->mode & OB_MODE_POSE) {
@@ -3190,13 +3190,13 @@ static int view_lock_to_active_exec(bContext *C, wmOperator *UNUSED(op))
Object *obact_eval = DEG_get_evaluated_object(depsgraph, obact);
bPoseChannel *pcham_act = BKE_pose_channel_active(obact_eval);
if (pcham_act) {
- BLI_strncpy(v3d->ob_centre_bone, pcham_act->name, sizeof(v3d->ob_centre_bone));
+ BLI_strncpy(v3d->ob_center_bone, pcham_act->name, sizeof(v3d->ob_center_bone));
}
}
else {
EditBone *ebone_act = ((bArmature *)obact->data)->act_edbone;
if (ebone_act) {
- BLI_strncpy(v3d->ob_centre_bone, ebone_act->name, sizeof(v3d->ob_centre_bone));
+ BLI_strncpy(v3d->ob_center_bone, ebone_act->name, sizeof(v3d->ob_center_bone));
}
}
}
@@ -5140,7 +5140,7 @@ void ED_view3d_cursor3d_update(bContext *C,
}
/* offset the cursor lock to avoid jumping to new offset */
- if (v3d->ob_centre_cursor) {
+ if (v3d->ob_center_cursor) {
if (U.uiflag & USER_LOCK_CURSOR_ADJUST) {
float co_2d_curr[2], co_2d_prev[2];
diff --git a/source/blender/editors/space_view3d/view3d_utils.c b/source/blender/editors/space_view3d/view3d_utils.c
index e7153ddd361..bad283740c8 100644
--- a/source/blender/editors/space_view3d/view3d_utils.c
+++ b/source/blender/editors/space_view3d/view3d_utils.c
@@ -398,7 +398,7 @@ bool ED_view3d_boundbox_clip(RegionView3D *rv3d, const BoundBox *bb)
bool ED_view3d_offset_lock_check(const View3D *v3d, const RegionView3D *rv3d)
{
- return (rv3d->persp != RV3D_CAMOB) && (v3d->ob_centre_cursor || v3d->ob_centre);
+ return (rv3d->persp != RV3D_CAMOB) && (v3d->ob_center_cursor || v3d->ob_center);
}
/**
@@ -416,9 +416,10 @@ void ED_view3d_lastview_store(RegionView3D *rv3d)
void ED_view3d_lock_clear(View3D *v3d)
{
- v3d->ob_centre = NULL;
- v3d->ob_centre_bone[0] = '\0';
- v3d->ob_centre_cursor = false;
+ v3d->ob_center = NULL;
+ v3d->ob_center_bone[0] = '\0';
+ v3d->ob_center_cursor = false;
+
v3d->flag2 &= ~V3D_LOCK_CAMERA;
}
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index ee41b73ed16..b27bdf93389 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -834,13 +834,13 @@ void view3d_viewmatrix_set(Depsgraph *depsgraph,
if (rv3d->persp == RV3D_PERSP) {
rv3d->viewmat[3][2] -= rv3d->dist;
}
- if (v3d->ob_centre) {
- Object *ob_eval = DEG_get_evaluated_object(depsgraph, v3d->ob_centre);
+ if (v3d->ob_center) {
+ Object *ob_eval = DEG_get_evaluated_object(depsgraph, v3d->ob_center);
float vec[3];
copy_v3_v3(vec, ob_eval->obmat[3]);
- if (ob_eval->type == OB_ARMATURE && v3d->ob_centre_bone[0]) {
- bPoseChannel *pchan = BKE_pose_channel_find_name(ob_eval->pose, v3d->ob_centre_bone);
+ if (ob_eval->type == OB_ARMATURE && v3d->ob_center_bone[0]) {
+ bPoseChannel *pchan = BKE_pose_channel_find_name(ob_eval->pose, v3d->ob_center_bone);
if (pchan) {
copy_v3_v3(vec, pchan->pose_mat[3]);
mul_m4_v3(ob_eval->obmat, vec);
@@ -849,7 +849,7 @@ void view3d_viewmatrix_set(Depsgraph *depsgraph,
translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]);
use_lock_ofs = true;
}
- else if (v3d->ob_centre_cursor) {
+ else if (v3d->ob_center_cursor) {
float vec[3];
copy_v3_v3(vec, scene->cursor.location);
translate_m4(rv3d->viewmat, -vec[0], -vec[1], -vec[2]);
diff --git a/source/blender/editors/transform/transform_convert.c b/source/blender/editors/transform/transform_convert.c
index 4ccb97b7a00..0a2e05e6f49 100644
--- a/source/blender/editors/transform/transform_convert.c
+++ b/source/blender/editors/transform/transform_convert.c
@@ -2760,7 +2760,7 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_CAMERA;
}
}
- else if (v3d->ob_centre && v3d->ob_centre->id.tag & LIB_TAG_DOIT) {
+ else if (v3d->ob_center && v3d->ob_center->id.tag & LIB_TAG_DOIT) {
t->flag |= T_CAMERA;
}
}
diff --git a/source/blender/editors/undo/memfile_undo.c b/source/blender/editors/undo/memfile_undo.c
index a5f30409aa6..312edab91b1 100644
--- a/source/blender/editors/undo/memfile_undo.c
+++ b/source/blender/editors/undo/memfile_undo.c
@@ -23,12 +23,20 @@
#include "BLI_utildefines.h"
#include "BLI_sys_types.h"
+#include "BLI_ghash.h"
+
#include "DNA_object_enums.h"
+#include "DNA_object_types.h"
#include "BKE_blender_undo.h"
#include "BKE_context.h"
-#include "BKE_undo_system.h"
+#include "BKE_lib_id.h"
+#include "BKE_lib_query.h"
#include "BKE_main.h"
+#include "BKE_scene.h"
+#include "BKE_undo_system.h"
+
+#include "../depsgraph/DEG_depsgraph.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -85,16 +93,102 @@ static bool memfile_undosys_step_encode(struct bContext *UNUSED(C),
us->data = BKE_memfile_undo_encode(bmain, us_prev ? us_prev->data : NULL);
us->step.data_size = us->data->undo_size;
+ /* Store the fact that we should not re-use old data with that undo step, and reset the Main
+ * flag. */
+ us->step.use_old_bmain_data = !bmain->use_memfile_full_barrier;
+ bmain->use_memfile_full_barrier = false;
+
return true;
}
-static void memfile_undosys_step_decode(
- struct bContext *C, struct Main *bmain, UndoStep *us_p, int UNUSED(dir), bool UNUSED(is_final))
+static int memfile_undosys_step_id_reused_cb(LibraryIDLinkCallbackData *cb_data)
+{
+ ID *id_self = cb_data->id_self;
+ ID **id_pointer = cb_data->id_pointer;
+ BLI_assert((id_self->tag & LIB_TAG_UNDO_OLD_ID_REUSED) != 0);
+ Main *bmain = cb_data->user_data;
+
+ ID *id = *id_pointer;
+ if (id != NULL && id->lib == NULL && (id->tag & LIB_TAG_UNDO_OLD_ID_REUSED) == 0) {
+ bool do_stop_iter = true;
+ if (GS(id_self->name) == ID_OB) {
+ Object *ob_self = (Object *)id_self;
+ if (ob_self->type == OB_ARMATURE) {
+ if (ob_self->data == id) {
+ BLI_assert(GS(id->name) == ID_AR);
+ if (ob_self->pose != NULL) {
+ /* We have a changed/re-read armature used by an unchanged armature object: our beloved
+ * Bone pointers from the object's pose need their usual special treatment. */
+ ob_self->pose->flag |= POSE_RECALC;
+ }
+ }
+ else {
+ /* Cannot stop iteration until we checked ob_self->data pointer... */
+ do_stop_iter = false;
+ }
+ }
+ }
+
+ /* In case an old, re-used ID is using a newly read data-block (i.e. one of its ID pointers got
+ * updated), we have to tell the depsgraph about it. */
+ DEG_id_tag_update_ex(bmain, id_self, ID_RECALC_COPY_ON_WRITE);
+ return do_stop_iter ? IDWALK_RET_STOP_ITER : IDWALK_RET_NOP;
+ }
+
+ return IDWALK_RET_NOP;
+}
+
+static void memfile_undosys_step_decode(struct bContext *C,
+ struct Main *bmain,
+ UndoStep *us_p,
+ int undo_direction,
+ bool UNUSED(is_final))
{
+ BLI_assert(undo_direction != 0);
+
+ bool use_old_bmain_data = true;
+
+ if (!U.experimental.use_undo_speedup) {
+ use_old_bmain_data = false;
+ }
+ else if (undo_direction > 0) {
+ /* Redo case.
+ * The only time we should have to force a complete redo is when current step is tagged as a
+ * redo barrier.
+ * If previous step was not a memfile one should not matter here, current data in old bmain
+ * should still always be valid for unchanged dtat-blocks. */
+ if (us_p->use_old_bmain_data == false) {
+ use_old_bmain_data = false;
+ }
+ }
+ else {
+ /* Undo case.
+ * Here we do not care whether current step is an undo barrier, since we are comming from 'the
+ * future' we can still re-use old data. However, if *next* undo step (i.e. the one immédiately
+ * in the future, the one we are comming from) is a barrier, then we have to force a complete
+ * undo.
+ * Note that non-memfile undo steps **should** not be an issue anymore, since we handle
+ * fine-grained update flags now.
+ */
+ UndoStep *us_next = us_p->next;
+ if (us_next != NULL) {
+ if (us_next->use_old_bmain_data == false) {
+ use_old_bmain_data = false;
+ }
+ }
+ }
+
+ /* Extract depsgraphs from current bmain (which may be freed during undo step reading),
+ * and store them for re-use. */
+ GHash *depsgraphs = NULL;
+ if (use_old_bmain_data) {
+ depsgraphs = BKE_scene_undo_depsgraphs_extract(bmain);
+ }
+
ED_editors_exit(bmain, false);
MemFileUndoStep *us = (MemFileUndoStep *)us_p;
- BKE_memfile_undo_decode(us->data, C);
+ BKE_memfile_undo_decode(us->data, undo_direction, use_old_bmain_data, C);
for (UndoStep *us_iter = us_p->next; us_iter; us_iter = us_iter->next) {
if (BKE_UNDOSYS_TYPE_IS_MEMFILE_SKIP(us_iter->type)) {
@@ -113,6 +207,24 @@ static void memfile_undosys_step_decode(
bmain = CTX_data_main(C);
ED_editors_init_for_undo(bmain);
+ if (use_old_bmain_data) {
+ /* Restore previous depsgraphs into current bmain. */
+ BKE_scene_undo_depsgraphs_restore(bmain, depsgraphs);
+
+ /* We need to inform depsgraph about re-used old IDs that would be using newly read
+ * data-blocks, at least COW evaluated copies need to be updated... */
+ ID *id = NULL;
+ FOREACH_MAIN_ID_BEGIN (bmain, id) {
+ if (id->tag & LIB_TAG_UNDO_OLD_ID_REUSED) {
+ BKE_library_foreach_ID_link(
+ bmain, id, memfile_undosys_step_id_reused_cb, bmain, IDWALK_READONLY);
+ }
+ }
+ FOREACH_MAIN_ID_END;
+
+ BKE_main_id_tag_all(bmain, LIB_TAG_UNDO_OLD_ID_REUSED, false);
+ }
+
WM_event_add_notifier(C, NC_SCENE | ND_LAYER_CONTENT, CTX_data_scene(C));
}
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 40916cbdc61..063ea04bdba 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -245,6 +245,12 @@ typedef struct ID {
int us;
int icon_id;
int recalc;
+ /**
+ * Used by undo code. Value of recalc is stored there when reading an ID from memfile, and not
+ * touched by anything, which means it can be used as 'reference' recalc value for the next undo
+ * step, when going backward (i.e. actual undo, redo can just use recalc value directly).
+ */
+ int recalc_undo_accumulated;
/**
* A session-wide unique identifier for a given ID, that remain the same across potential
@@ -252,6 +258,8 @@ typedef struct ID {
*/
unsigned int session_uuid;
+ char _pad[4];
+
IDProperty *properties;
/** Reference linked ID which this one overrides. */
@@ -551,6 +559,10 @@ enum {
/* Datablock was not allocated by standard system (BKE_libblock_alloc), do not free its memory
* (usual type-specific freeing is called though). */
LIB_TAG_NOT_ALLOCATED = 1 << 18,
+
+ /* RESET_AFTER_USE Used by undo system to tag unchanged IDs re-used from old Main (instead of
+ * read from memfile). */
+ LIB_TAG_UNDO_OLD_ID_REUSED = 1 << 19,
};
/* Tag given ID for an update in all the dependency graphs. */
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index 6961a9e9c3e..904d7b8a52e 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -613,7 +613,8 @@ typedef struct UserDef_FileSpaceData {
} UserDef_FileSpaceData;
typedef struct UserDef_Experimental {
- char _pad0[8]; /* makesdna does not allow empty structs. */
+ char use_undo_speedup;
+ char _pad0[7]; /* makesdna does not allow empty structs. */
} UserDef_Experimental;
#define USER_EXPERIMENTAL_TEST(userdef, member) \
diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h
index edc86a4b0ea..a25d66cbc9b 100644
--- a/source/blender/makesdna/DNA_view3d_types.h
+++ b/source/blender/makesdna/DNA_view3d_types.h
@@ -265,14 +265,14 @@ typedef struct View3D {
short persp DNA_DEPRECATED;
short view DNA_DEPRECATED;
- struct Object *camera, *ob_centre;
+ struct Object *camera, *ob_center;
rctf render_border;
/** Allocated backup of its self while in localview. */
struct View3D *localvd;
/** Optional string for armature bone to define center, MAXBONENAME. */
- char ob_centre_bone[64];
+ char ob_center_bone[64];
unsigned short local_view_uuid;
char _pad6[2];
@@ -281,7 +281,7 @@ typedef struct View3D {
short _pad7[3];
/** Optional bool for 3d cursor to define center. */
- short ob_centre_cursor;
+ short ob_center_cursor;
short scenelock;
short gp_flag;
short flag;
diff --git a/source/blender/makesdna/intern/dna_rename_defs.h b/source/blender/makesdna/intern/dna_rename_defs.h
index 678baef3cef..aabc16c4111 100644
--- a/source/blender/makesdna/intern/dna_rename_defs.h
+++ b/source/blender/makesdna/intern/dna_rename_defs.h
@@ -64,6 +64,8 @@ DNA_STRUCT_RENAME_ELEM(Bone, curveOutX, curve_out_x)
DNA_STRUCT_RENAME_ELEM(Bone, curveOutY, curve_out_y)
DNA_STRUCT_RENAME_ELEM(Bone, scaleIn, scale_in_x)
DNA_STRUCT_RENAME_ELEM(Bone, scaleOut, scale_out_x)
+DNA_STRUCT_RENAME_ELEM(BrushGpencilSettings, gradient_f, hardeness)
+DNA_STRUCT_RENAME_ELEM(BrushGpencilSettings, gradient_s, aspect_ratio)
DNA_STRUCT_RENAME_ELEM(Camera, YF_dofdist, dof_distance)
DNA_STRUCT_RENAME_ELEM(Camera, clipend, clip_end)
DNA_STRUCT_RENAME_ELEM(Camera, clipsta, clip_start)
@@ -83,8 +85,14 @@ DNA_STRUCT_RENAME_ELEM(ParticleSettings, dup_group, instance_collection)
DNA_STRUCT_RENAME_ELEM(ParticleSettings, dup_ob, instance_object)
DNA_STRUCT_RENAME_ELEM(ParticleSettings, dupliweights, instance_weights)
DNA_STRUCT_RENAME_ELEM(ThemeSpace, scrubbing_background, time_scrub_background)
+DNA_STRUCT_RENAME_ELEM(ThemeSpace, show_back_grad, background_type)
DNA_STRUCT_RENAME_ELEM(View3D, far, clip_end)
DNA_STRUCT_RENAME_ELEM(View3D, near, clip_start)
+DNA_STRUCT_RENAME_ELEM(View3D, ob_centre, ob_center)
+DNA_STRUCT_RENAME_ELEM(View3D, ob_centre_bone, ob_center_bone)
+DNA_STRUCT_RENAME_ELEM(View3D, ob_centre_cursor, ob_center_cursor)
+DNA_STRUCT_RENAME_ELEM(bGPDstroke, gradient_f, hardeness)
+DNA_STRUCT_RENAME_ELEM(bGPDstroke, gradient_s, aspect_ratio)
DNA_STRUCT_RENAME_ELEM(bPoseChannel, curveInX, curve_in_x)
DNA_STRUCT_RENAME_ELEM(bPoseChannel, curveInY, curve_in_y)
DNA_STRUCT_RENAME_ELEM(bPoseChannel, curveOutX, curve_out_x)
@@ -109,8 +117,3 @@ DNA_STRUCT_RENAME_ELEM(bTheme, tstatusbar, space_statusbar)
DNA_STRUCT_RENAME_ELEM(bTheme, ttopbar, space_topbar)
DNA_STRUCT_RENAME_ELEM(bTheme, tuserpref, space_preferences)
DNA_STRUCT_RENAME_ELEM(bTheme, tv3d, space_view3d)
-DNA_STRUCT_RENAME_ELEM(ThemeSpace, show_back_grad, background_type)
-DNA_STRUCT_RENAME_ELEM(bGPDstroke, gradient_f, hardeness)
-DNA_STRUCT_RENAME_ELEM(bGPDstroke, gradient_s, aspect_ratio)
-DNA_STRUCT_RENAME_ELEM(BrushGpencilSettings, gradient_f, hardeness)
-DNA_STRUCT_RENAME_ELEM(BrushGpencilSettings, gradient_s, aspect_ratio)
diff --git a/source/blender/makesrna/intern/rna_fluid.c b/source/blender/makesrna/intern/rna_fluid.c
index 7bd353cd441..b4543ea4b38 100644
--- a/source/blender/makesrna/intern/rna_fluid.c
+++ b/source/blender/makesrna/intern/rna_fluid.c
@@ -2209,11 +2209,11 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
prop = RNA_def_property(srna, "clipping", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clipping");
RNA_def_property_range(prop, 0.0, 1.0);
- RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 3);
+ RNA_def_property_ui_range(prop, 0.0, 1.0, 0.1, 6);
RNA_def_property_ui_text(
prop,
"Clipping",
- "Value under which voxels are considered empty space to optimize caching and rendering");
+ "Value under which voxels are considered empty space to optimize rendering");
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, NULL);
/* -- Deprecated / unsed options (below)-- */
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 89e1babde7d..66aeab725ea 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -3958,19 +3958,19 @@ static void rna_def_space_view3d(BlenderRNA *brna)
prop = RNA_def_property(srna, "lock_object", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_EDITABLE);
- RNA_def_property_pointer_sdna(prop, NULL, "ob_centre");
+ RNA_def_property_pointer_sdna(prop, NULL, "ob_center");
RNA_def_property_ui_text(
prop, "Lock to Object", "3D View center is locked to this object's position");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
prop = RNA_def_property(srna, "lock_bone", PROP_STRING, PROP_NONE);
- RNA_def_property_string_sdna(prop, NULL, "ob_centre_bone");
+ RNA_def_property_string_sdna(prop, NULL, "ob_center_bone");
RNA_def_property_ui_text(
prop, "Lock to Bone", "3D View center is locked to this bone's position");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
prop = RNA_def_property(srna, "lock_cursor", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "ob_centre_cursor", 1);
+ RNA_def_property_boolean_sdna(prop, NULL, "ob_center_cursor", 1);
RNA_def_property_ui_text(
prop, "Lock to Cursor", "3D View center is locked to the cursor's position");
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
@@ -4376,7 +4376,7 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_api_region_view3d(srna);
}
-static void rna_def_space_buttons(BlenderRNA *brna)
+static void rna_def_space_properties(BlenderRNA *brna)
{
StructRNA *srna;
PropertyRNA *prop;
@@ -6515,7 +6515,7 @@ void RNA_def_space(BlenderRNA *brna)
rna_def_space_filebrowser(brna);
rna_def_space_outliner(brna);
rna_def_space_view3d(brna);
- rna_def_space_buttons(brna);
+ rna_def_space_properties(brna);
rna_def_space_dopesheet(brna);
rna_def_space_graph(brna);
rna_def_space_nla(brna);
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index a153c1dda1e..195a80a1101 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -5918,12 +5918,20 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
static void rna_def_userdef_experimental(BlenderRNA *brna)
{
StructRNA *srna;
+ PropertyRNA *prop;
srna = RNA_def_struct(brna, "PreferencesExperimental", NULL);
RNA_def_struct_sdna(srna, "UserDef_Experimental");
RNA_def_struct_nested(brna, srna, "Preferences");
RNA_def_struct_clear_flag(srna, STRUCT_UNDO);
RNA_def_struct_ui_text(srna, "Experimental", "Experimental features");
+
+ prop = RNA_def_property(srna, "use_undo_speedup", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "use_undo_speedup", 1);
+ RNA_def_property_ui_text(
+ prop,
+ "Undo Speedup",
+ "Use new undo speedup (WARNING: can lead to crashes and serious .blend file corruption)");
}
static void rna_def_userdef_addon_collection(BlenderRNA *brna, PropertyRNA *cprop)
diff --git a/source/blender/modifiers/intern/MOD_triangulate.c b/source/blender/modifiers/intern/MOD_triangulate.c
index 7fba7e864ae..94613353373 100644
--- a/source/blender/modifiers/intern/MOD_triangulate.c
+++ b/source/blender/modifiers/intern/MOD_triangulate.c
@@ -44,7 +44,7 @@ static Mesh *triangulate_mesh(Mesh *mesh,
BMesh *bm;
int total_edges, i;
MEdge *me;
- CustomData_MeshMasks cddata_masks = {
+ CustomData_MeshMasks cd_mask_extra = {
.vmask = CD_MASK_ORIGINDEX, .emask = CD_MASK_ORIGINDEX, .pmask = CD_MASK_ORIGINDEX};
bool keep_clnors = (flag & MOD_TRIANGULATE_KEEP_CUSTOMLOOP_NORMALS) != 0;
@@ -53,19 +53,19 @@ static Mesh *triangulate_mesh(Mesh *mesh,
BKE_mesh_calc_normals_split(mesh);
/* We need that one to 'survive' to/from BMesh conversions. */
CustomData_clear_layer_flag(&mesh->ldata, CD_NORMAL, CD_FLAG_TEMPORARY);
- cddata_masks.lmask |= CD_MASK_NORMAL;
+ cd_mask_extra.lmask |= CD_MASK_NORMAL;
}
bm = BKE_mesh_to_bmesh_ex(mesh,
&((struct BMeshCreateParams){0}),
&((struct BMeshFromMeshParams){
.calc_face_normal = true,
- .cd_mask_extra = cddata_masks,
+ .cd_mask_extra = cd_mask_extra,
}));
BM_mesh_triangulate(bm, quad_method, ngon_method, min_vertices, false, NULL, NULL, NULL);
- result = BKE_mesh_from_bmesh_for_eval_nomain(bm, &cddata_masks, mesh);
+ result = BKE_mesh_from_bmesh_for_eval_nomain(bm, &cd_mask_extra, mesh);
BM_mesh_free(bm);
if (keep_clnors) {
diff --git a/source/creator/blender.map b/source/creator/blender.map
index 1a9c995e684..4c34dea3338 100644
--- a/source/creator/blender.map
+++ b/source/creator/blender.map
@@ -21,5 +21,6 @@ local:
*boost*;
*SDL*;
*embree*;
+ cu*;
};
diff --git a/source/creator/osx_locals.map b/source/creator/osx_locals.map
index f3a242f6896..3382ac954e2 100644
--- a/source/creator/osx_locals.map
+++ b/source/creator/osx_locals.map
@@ -6,4 +6,5 @@
*LLVM*
*OSL*
*embree*
+cu*