Blender V5.0
versioning_290.cc File Reference
#include <algorithm>
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_rotation.h"
#include "BLI_math_vector.h"
#include "BLI_string.h"
#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_brush_types.h"
#include "DNA_cachefile_types.h"
#include "DNA_collection_types.h"
#include "DNA_constraint_types.h"
#include "DNA_fluid_types.h"
#include "DNA_genfile.h"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_gpencil_modifier_types.h"
#include "DNA_light_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
#include "DNA_particle_types.h"
#include "DNA_pointcloud_types.h"
#include "DNA_rigidbody_types.h"
#include "DNA_screen_types.h"
#include "DNA_sequence_types.h"
#include "DNA_shader_fx_types.h"
#include "DNA_space_types.h"
#include "DNA_text_types.h"
#include "DNA_tracking_types.h"
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
#include "DNA_workspace_types.h"
#include "BKE_armature.hh"
#include "BKE_collection.hh"
#include "BKE_colortools.hh"
#include "BKE_cryptomatte.h"
#include "BKE_curve.hh"
#include "BKE_customdata.hh"
#include "BKE_fcurve.hh"
#include "BKE_gpencil_legacy.h"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_mesh.hh"
#include "BKE_mesh_legacy_convert.hh"
#include "BKE_multires.hh"
#include "BKE_node.hh"
#include "BKE_node_legacy_types.hh"
#include "IMB_imbuf_enums.h"
#include "MEM_guardedalloc.h"
#include "SEQ_proxy.hh"
#include "SEQ_sequencer.hh"
#include "SEQ_time.hh"
#include "BLO_readfile.hh"
#include "readfile.hh"
#include "versioning_common.hh"

Go to the source code of this file.

Macros

#define DNA_DEPRECATED_ALLOW
#define DNA_GENFILE_VERSIONING_MACROS
#define U   (*((const UserDef *)&U))
#define CU_2D   (1 << 3)

Functions

static eSpaceSeq_Proxy_RenderSize get_sequencer_render_size (Main *bmain)
static bool can_use_proxy (const Strip *strip, IMB_Proxy_Size psize)
static void strip_convert_transform_animation (const Strip *strip, const Scene *scene, const char *path, const int image_size, const int scene_size)
static void strip_convert_transform_crop (const Scene *scene, Strip *strip, const eSpaceSeq_Proxy_RenderSize render_size)
static void strip_convert_transform_crop_lb (const Scene *scene, const ListBase *lb, const eSpaceSeq_Proxy_RenderSize render_size)
static void strip_convert_transform_animation_2 (const Scene *scene, const char *path, const float scale_to_fit_factor)
static void strip_convert_transform_crop_2 (const Scene *scene, Strip *strip, const eSpaceSeq_Proxy_RenderSize render_size)
static void strip_convert_transform_crop_lb_2 (const Scene *scene, const ListBase *lb, const eSpaceSeq_Proxy_RenderSize render_size)
static void seq_update_meta_disp_range (Scene *scene)
static void version_node_socket_duplicate (bNodeTree *ntree, const int node_type, const char *old_name, const char *new_name)
void do_versions_after_linking_290 (FileData *, Main *bmain)
static void panels_remove_x_closed_flag_recursive (Panel *panel)
static void do_versions_point_attributes (CustomData *pdata)
static void do_versions_point_attribute_names (CustomData *pdata)
static void do_versions_291_fcurve_handles_limit (FCurve *fcu)
static void version_node_join_geometry_for_multi_input_socket (bNodeTree *ntree)
void blo_do_versions_290 (FileData *fd, Library *, Main *bmain)

Macro Definition Documentation

◆ CU_2D

#define CU_2D   (1 << 3)

Referenced by blo_do_versions_290().

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 9 of file versioning_290.cc.

◆ DNA_GENFILE_VERSIONING_MACROS

#define DNA_GENFILE_VERSIONING_MACROS

Definition at line 22 of file versioning_290.cc.

◆ U

#define U   (*((const UserDef *)&U))

Definition at line 82 of file versioning_290.cc.

Function Documentation

◆ blo_do_versions_290()

void blo_do_versions_290 ( FileData * fd,
Library * lib,
Main * bmain )

Repair files from duplicate brushes added to blend files, see: #76738.

Always bump subversion in BKE_blender_version.h when adding versioning code here, and wrap it inside a MAIN_VERSION_FILE_ATLEAST check.

Note
Keep this message at the bottom of the function.

Definition at line 810 of file versioning_290.cc.

References Main::actions, NodeTexSky::aerosol_density, BevelModifierData::affect_type, NodeTexSky::air_density, ARegion::alignment, NodeTexSky::altitude, Main::armatures, ARRAY_SIZE, MirrorModifierData::bisect_threshold, BKE_cryptomatte_matte_id_to_entries(), BKE_curve_nurbs_get(), BKE_curvemapping_add(), BKE_curvemapping_init(), BKE_main_id_repair_duplicate_names_listbase(), BKE_mesh_legacy_convert_loops_to_corners(), BKE_mesh_legacy_convert_polys_to_offsets(), BKE_mesh_validate_arrays(), BLI_assert, BLI_assert_msg, BLI_findptr(), BLI_freelinkN(), blo_read_get_new_globaldata_address(), Main::brushes, Editing::cache_flag, CACHEFILE_VELOCITY_UNIT_SECOND, Main::cachefiles, CD_MFACE, WeightVGProximityModifierData::cmap_curve, CMP_NODE_CRYPTOMATTE_LEGACY, CMP_NODE_OUTPUT_FILE, CMP_NODE_R_LAYERS, CMP_NODE_SETALPHA, CMP_NODE_SETALPHA_MODE_REPLACE_ALPHA, FluidDomainSettings::coba_field, COLLECTION_COLOR_NONE, Main::collections, copy_v3_fl(), copy_v4_v4(), CU_2D, CU_3D, CU_BEV_MODE_OBJECT, CU_BEV_MODE_ROUND, CU_IS_2D, CU_PATH_CLAMP, Main::curves, CustomData_get_layer(), CustomData_get_layer_for_write(), data, IDProperty::data, DEG2RADF, DENOISER_OPTIX, do_versions_291_fcurve_handles_limit(), do_versions_add_region_if_not_found(), do_versions_point_attribute_names(), do_versions_point_attributes(), FluidModifierData::domain, eBooleanModifierFlag_Object, eBooleanModifierSolver_Float, blender::seq::editing_get(), EEVEE_RENDER_PASS_UNUSED_8, ELEM, eModifierType_Bevel, eModifierType_Boolean, eModifierType_Fluid, eModifierType_MeshSequenceCache, eModifierType_Mirror, eModifierType_Nodes, eModifierType_Ocean, eModifierType_WeightVGEdit, eModifierType_WeightVGProximity, View3DOverlay::fade_alpha, FileData::filesdna, SpaceOutliner::filter, SpaceOutliner::filter_state, BooleanModifierData::flag, SpaceImage::flag, SpaceImageOverlay::flag, SpaceOutliner::flag, SpaceSeq::flag, View3DOverlay::flag, BevelModifierData::flags, FLUID_DOMAIN_FIELD_PHI, FLUID_DOMAIN_TYPE_LIQUID, FOREACH_NODETREE_BEGIN, FOREACH_NODETREE_END, FluidDomainSettings::fractions_distance, GEO_NODE_MESH_BOOLEAN, GEO_NODE_MESH_PRIMITIVE_GRID, GEO_NODE_OBJECT_INFO, GEO_NODE_TRANSFORM_SPACE_RELATIVE, GP_DATA_CURVE_ADAPTIVE_RESOLUTION, GP_DEFAULT_CURVE_EDIT_CORNER_ANGLE, GP_DEFAULT_CURVE_ERROR, GP_DEFAULT_CURVE_RESOLUTION, Main::gpencils, FluidDomainSettings::grid_scale, FluidDomainSettings::gridlines_range_color, FluidDomainSettings::gridlines_upper_bound, IDPropertyData::group, i, ID_BR, ID_PAL, IDP_FLAG_OVERRIDABLE_LIBRARY, IDP_GROUP, invert_m4_m4(), Main::lights, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, loc_eul_size_to_mat4(), M_PI_2, MAIN_VERSION_FILE_ATLEAST, MAIN_VERSION_FILE_OLDER, NodeCryptomatte::matte_id, MAX_NAME, ME_SYMMETRY_X, ME_SYMMETRY_Y, ME_SYMMETRY_Z, MEM_allocN_len, MEM_callocN(), Main::meshes, MOD_BEVEL_AFFECT_EDGES, MOD_BEVEL_AFFECT_VERTICES, MOD_BEVEL_PROFILE_CUSTOM, MOD_BEVEL_PROFILE_SUPERELLIPSE, MOD_MESHSEQ_INTERPOLATE_VERTICES, MOD_WVG_EDIT_WEIGHTS_NORMALIZE, Main::movieclips, Main::nodetrees, NTREE_COMPOSIT, NTREE_GEOMETRY, NTREE_SHADER, Main::objects, offsetof, SpaceProperties::outliner_sync, SpaceImage::overlay, View3D::overlay, NodeTexSky::ozone_density, panels_remove_x_closed_flag_recursive(), PART_FLUID_BUBBLE, PART_FLUID_FLIP, PART_FLUID_FOAM, PART_FLUID_SPRAY, PART_PHYS_NO, Main::particles, Main::pointclouds, BevelModifierData::profile_type, NodesModifierSettings::properties, PROPERTIES_SYNC_AUTO, RE_PASSNAME_VOLUME_LIGHT, MovieTrackingSettings::refine_camera_intrinsics, REFINE_FOCAL_LENGTH, REFINE_PRINCIPAL_POINT, REFINE_RADIAL_DISTORTION, SpaceSeq::render_size, OceanModifierData::resolution, RGN_ALIGN_BOTTOM, RGN_ALIGN_TOP, RGN_TYPE_FOOTER, RGN_TYPE_HEADER, Main::scenes, Main::screens, SEQ_CACHE_STORE_FINAL_OUT, SEQ_CACHE_STORE_RAW, SEQ_RENDER_SIZE_FULL_DEPRECATED, SEQ_RENDER_SIZE_PROXY_100, SEQ_RENDER_SIZE_PROXY_25, SEQ_RENDER_SIZE_PROXY_50, SEQ_RENDER_SIZE_PROXY_75, SEQ_SHOW_OVERLAY, SEQ_TIMELINE_SHOW_STRIP_DURATION, SEQ_TIMELINE_SHOW_STRIP_NAME, SEQ_TIMELINE_SHOW_STRIP_SOURCE, SEQ_USE_PROXIES, SET_FLAG_FROM_TEST, MovieTracking::settings, NodesModifierData::settings, SH_NODE_TEX_SKY, OceanModifierData::sharpen_peak_jonswap, SpaceOutliner::show_restrict_flags, SI_FLAG_UNUSED_20, SI_OVERLAY_SHOW_OVERLAYS, SO_FILTER_OB_HIDDEN, SO_FILTER_OB_STATE_INVERSE, SO_FILTER_OB_VISIBLE, SO_MODE_COLUMN, SO_RESTRICT_RENDER, BooleanModifierData::solver, SPACE_IMAGE, SPACE_NODE, SPACE_OUTLINER, SPACE_PROPERTIES, SPACE_SEQ, SPACE_SPREADSHEET, SPACE_VIEW3D, STREQ, STREQLEN, STRNCPY(), STRNCPY_UTF8, RigidBodyWorld::substeps_per_frame, NodeTexSky::sun_disc, NodeTexSky::sun_elevation, NodeTexSky::sun_intensity, NodeTexSky::sun_rotation, NodeTexSky::sun_size, blender::seq::tool_settings_init(), SpaceNode::treepath, FluidDomainSettings::type, IDProperty::type, U, UI_PANEL_DATA_EXPAND_ROOT, UNUSED_VARS, USER_HEADER_BOTTOM, SpaceImage::uv_opacity, V3D_OVERLAY_FADE_INACTIVE, FluidDomainSettings::vector_scale_with_magnitude, MeshSeqCacheModifierData::velocity_scale, version_cycles_properties_from_ID(), version_cycles_properties_from_render_layer(), version_cycles_properties_from_view_layer(), version_cycles_property_boolean(), version_cycles_property_boolean_set(), version_cycles_property_int(), version_cycles_property_int_set(), version_node_join_geometry_for_multi_input_socket(), version_node_socket_name(), Main::versionfile, VIEW_LAYER_CRYPTOMATTE_ACCURATE, OceanModifierData::viewport_resolution, FluidDomainSettings::viscosity_value, OceanModifierData::wave_alignment, which_libbase(), wmWindow::winid, View3DOverlay::wireframe_opacity, Main::wm, Main::workspaces, and zero_v3().

Referenced by do_versions().

◆ can_use_proxy()

bool can_use_proxy ( const Strip * strip,
IMB_Proxy_Size psize )
static

◆ do_versions_291_fcurve_handles_limit()

void do_versions_291_fcurve_handles_limit ( FCurve * fcu)
static

Definition at line 746 of file versioning_290.cc.

References FCurve::bezt, BEZT_IPO_BEZ, fabsf, i, madd_v2_v2v2fl(), sub_v2_v2v2(), v2, and BezTriple::vec.

Referenced by blo_do_versions_290().

◆ do_versions_after_linking_290()

void do_versions_after_linking_290 ( FileData * fd,
Main * bmain )

Make sure Emission Alpha fcurve and drivers is properly mapped after the Emission Strength got introduced.

Effectively we are replacing the (animation of) node socket input 18 with 19. Emission Strength is the new socket input 18, pushing Emission Alpha to input 19.

To play safe we move all the inputs beyond 18 to their rightful new place. In case users are doing unexpected things with not-really supported keyframeable channels.

Always bump subversion in BKE_blender_version.h when adding versioning code here, and wrap it inside a MAIN_VERSION_FILE_ATLEAST check.

Note
Keep this message at the bottom of the function.

Definition at line 426 of file versioning_290.cc.

References BKE_collection_cycles_fix(), BKE_gpencil_frame_duplicate(), BKE_pose_rebuild(), BLI_addhead(), BLI_findstring(), Main::brushes, Main::collections, eGpencilModifierType_Array, eGpencilModifierType_Color, eGpencilModifierType_Hook, eGpencilModifierType_Lattice, eGpencilModifierType_Mirror, eGpencilModifierType_Multiply, eGpencilModifierType_Noise, eGpencilModifierType_Offset, eGpencilModifierType_Opacity, eGpencilModifierType_Simplify, eGpencilModifierType_Smooth, eGpencilModifierType_Subdiv, eGpencilModifierType_Texture, eGpencilModifierType_Thick, eModifierType_Multires, ListBase::first, FOREACH_NODETREE_BEGIN, FOREACH_NODETREE_END, bGPDframe::framenum, GEO_NODE_MESH_PRIMITIVE_GRID, get_sequencer_render_size(), id_fake_user_set(), bGPdata::layers, LISTBASE_FOREACH, MAIN_VERSION_FILE_ATLEAST, ArrayGpencilModifierData::material, ColorGpencilModifierData::material, HookGpencilModifierData::material, LatticeGpencilModifierData::material, MirrorGpencilModifierData::material, MultiplyGpencilModifierData::material, NoiseGpencilModifierData::material, OffsetGpencilModifierData::material, OpacityGpencilModifierData::material, SimplifyGpencilModifierData::material, SmoothGpencilModifierData::material, SubdivGpencilModifierData::material, TextureGpencilModifierData::material, ThickGpencilModifierData::material, Main::materials, multires_do_versions_simple_to_catmull_clark(), name, NTREE_GEOMETRY, NTREE_SHADER, OB_ARMATURE, OB_GPENCIL_LEGACY, OB_MODE_SCULPT, Main::objects, offsetof, printf, Scene::r, Main::scenes, seq_update_meta_disp_range(), RenderData::sfra, SH_NODE_BSDF_PRINCIPLED, strip_convert_transform_crop_lb(), strip_convert_transform_crop_lb_2(), Main::texts, version_node_socket_duplicate(), and version_node_socket_index_animdata().

Referenced by do_versions_after_linking().

◆ do_versions_point_attribute_names()

void do_versions_point_attribute_names ( CustomData * pdata)
static

◆ do_versions_point_attributes()

void do_versions_point_attributes ( CustomData * pdata)
static

◆ get_sequencer_render_size()

eSpaceSeq_Proxy_RenderSize get_sequencer_render_size ( Main * bmain)
static

◆ panels_remove_x_closed_flag_recursive()

void panels_remove_x_closed_flag_recursive ( Panel * panel)
static

◆ seq_update_meta_disp_range()

◆ strip_convert_transform_animation()

void strip_convert_transform_animation ( const Strip * strip,
const Scene * scene,
const char * path,
const int image_size,
const int scene_size )
static

◆ strip_convert_transform_animation_2()

void strip_convert_transform_animation_2 ( const Scene * scene,
const char * path,
const float scale_to_fit_factor )
static

◆ strip_convert_transform_crop()

◆ strip_convert_transform_crop_2()

◆ strip_convert_transform_crop_lb()

void strip_convert_transform_crop_lb ( const Scene * scene,
const ListBase * lb,
const eSpaceSeq_Proxy_RenderSize render_size )
static

◆ strip_convert_transform_crop_lb_2()

void strip_convert_transform_crop_lb_2 ( const Scene * scene,
const ListBase * lb,
const eSpaceSeq_Proxy_RenderSize render_size )
static

◆ version_node_join_geometry_for_multi_input_socket()

◆ version_node_socket_duplicate()

void version_node_socket_duplicate ( bNodeTree * ntree,
const int node_type,
const char * old_name,
const char * new_name )
static