diff options
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, ¶ms, 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* |