Blender V4.3
BLO_readfile.hh File Reference

external readfile function prototypes. More...

#include "BLI_listbase.h"
#include "BLI_sys_types.h"

Go to the source code of this file.

Classes

struct  WorkspaceConfigFileData
 
struct  BlendFileData
 
struct  BlendFileReadWMSetupData
 
struct  BlendFileReadParams
 
struct  BlendFileReadReport
 
struct  BLODataBlockInfo
 
struct  LibraryLink_Params
 
struct  TempLibraryContext
 

Macros

#define BLO_GROUP_MAX   32
 
#define BLO_EMBEDDED_STARTUP_BLEND   "<startup.blend>"
 

Typedefs

using BLOExpandDoitCallback = void (*)(void *fdhandle, Main *mainvar, void *idv)
 

Functions

void * BLO_library_read_struct (FileData *fd, BHead *bh, const char *blockname)
 
void BLO_expand_main (void *fdhandle, Main *mainvar, BLOExpandDoitCallback callback)
 
void BLO_update_defaults_startup_blend (Main *bmain, const char *app_template)
 
void BLO_update_defaults_workspace (WorkSpace *workspace, const char *app_template)
 
void BLO_sanitize_experimental_features_userpref_blend (UserDef *userdef)
 
BlendThumbnailBLO_thumbnail_from_file (const char *filepath)
 
short BLO_version_from_file (const char *filepath)
 

BLO Read File API

See also
BLO_write_file for file writing.
#define BLO_READ_SKIP_ALL   (BLO_READ_SKIP_USERDEF | BLO_READ_SKIP_DATA)
 
enum  eBlenFileType { BLENFILETYPE_BLEND = 1 }
 
enum  eBLOReadSkip { BLO_READ_SKIP_NONE = 0 , BLO_READ_SKIP_USERDEF = (1 << 0) , BLO_READ_SKIP_DATA = (1 << 1) , BLO_READ_SKIP_UNDO_OLD_MAIN = (1 << 2) }
 
BlendFileDataBLO_read_from_file (const char *filepath, eBLOReadSkip skip_flags, BlendFileReadReport *reports)
 
BlendFileDataBLO_read_from_memory (const void *mem, int memsize, eBLOReadSkip skip_flags, ReportList *reports)
 
BlendFileDataBLO_read_from_memfile (Main *oldmain, const char *filepath, MemFile *memfile, const BlendFileReadParams *params, ReportList *reports)
 
void BLO_blendfiledata_free (BlendFileData *bfd)
 
void BLO_read_do_version_after_setup (Main *new_bmain, BlendfileLinkAppendContext *lapp_context, BlendFileReadReport *reports)
 

BLO Blend File Handle API

#define BLO_read_assert_message(_check_expr, _ret_value, _bh, _bmain, _message)
 
void BLO_datablock_info_free (BLODataBlockInfo *datablock_info)
 
void BLO_datablock_info_linklist_free (LinkNode *datablock_infos)
 
BlendHandle * BLO_blendhandle_from_file (const char *filepath, BlendFileReadReport *reports)
 
BlendHandle * BLO_blendhandle_from_memory (const void *mem, int memsize, BlendFileReadReport *reports)
 
LinkNodeBLO_blendhandle_get_datablock_names (BlendHandle *bh, int ofblocktype, bool use_assets_only, int *r_tot_names)
 
LinkNodeBLO_blendhandle_get_datablock_info (BlendHandle *bh, int ofblocktype, bool use_assets_only, int *r_tot_info_items)
 
PreviewImageBLO_blendhandle_get_preview_for_id (BlendHandle *bh, int ofblocktype, const char *name)
 
LinkNodeBLO_blendhandle_get_linkable_groups (BlendHandle *bh)
 
void BLO_blendhandle_close (BlendHandle *bh) ATTR_NONNULL(1)
 
void BLO_read_invalidate_message (BlendHandle *bh, Main *bmain, const char *message)
 

BLO Blend File Linking API

enum  eBLOLibLinkFlags {
  BLO_LIBLINK_USE_PLACEHOLDERS = 1 << 16 , BLO_LIBLINK_FORCE_INDIRECT = 1 << 17 , BLO_LIBLINK_APPEND_SET_FAKEUSER = 1 << 19 , BLO_LIBLINK_APPEND_RECURSIVE = 1 << 20 ,
  BLO_LIBLINK_APPEND_LOCAL_ID_REUSE = 1 << 21 , BLO_LIBLINK_APPEND_ASSET_DATA_CLEAR = 1 << 22 , BLO_LIBLINK_OBDATA_INSTANCE = 1 << 24 , BLO_LIBLINK_COLLECTION_INSTANCE = 1 << 25
}
 
void BLO_library_link_params_init (LibraryLink_Params *params, Main *bmain, int flag, int id_tag_extra)
 
void BLO_library_link_params_init_with_context (LibraryLink_Params *params, Main *bmain, int flag, int id_tag_extra, Scene *scene, ViewLayer *view_layer, const View3D *v3d)
 
MainBLO_library_link_begin (BlendHandle **bh, const char *filepath, const LibraryLink_Params *params)
 
IDBLO_library_link_named_part (Main *mainl, BlendHandle **bh, short idcode, const char *name, const LibraryLink_Params *params)
 
void BLO_library_link_end (Main *mainl, BlendHandle **bh, const LibraryLink_Params *params)
 
TempLibraryContextBLO_library_temp_load_id (Main *real_main, const char *blend_file_path, short idcode, const char *idname, ReportList *reports)
 
void BLO_library_temp_free (TempLibraryContext *temp_lib_ctx)
 

Detailed Description

external readfile function prototypes.

Definition in file BLO_readfile.hh.

Macro Definition Documentation

◆ BLO_EMBEDDED_STARTUP_BLEND

#define BLO_EMBEDDED_STARTUP_BLEND   "<startup.blend>"

◆ BLO_GROUP_MAX

#define BLO_GROUP_MAX   32

Definition at line 352 of file BLO_readfile.hh.

Referenced by BKE_blendfile_library_path_explode(), and groupname_to_code().

◆ BLO_read_assert_message

#define BLO_read_assert_message ( _check_expr,
_ret_value,
_bh,
_bmain,
_message )
Value:
if (_check_expr) { \
BLO_read_invalidate_message((_bh), (_bmain), (_message)); \
return _ret_value; \
} \
(void)0

BLI_assert-like macro to check a condition, and if false, fail the whole .blend reading process by marking the Main data-base as invalid, and returning provided _ret_value.

NOTE: About usages:

  • BLI_assert should be used when the error is considered as a bug, but there is some code to recover from it and produce a valid Main data-base.
  • BLO_read_assert_message should be used when the error is not considered as recoverable.

Definition at line 343 of file BLO_readfile.hh.

Referenced by do_versions_after_linking_280().

◆ BLO_READ_SKIP_ALL

Typedef Documentation

◆ BLOExpandDoitCallback

using BLOExpandDoitCallback = void (*)(void *fdhandle, Main *mainvar, void *idv)

Definition at line 487 of file BLO_readfile.hh.

Enumeration Type Documentation

◆ eBlenFileType

Enumerator
BLENFILETYPE_BLEND 

Definition at line 48 of file BLO_readfile.hh.

◆ eBLOLibLinkFlags

Options controlling behavior of append/link code.

Note
merged with 'user-level' options from operators etc. in 16 lower bits (see eFileSel_Params_Flag in DNA_space_types.h).
Enumerator
BLO_LIBLINK_USE_PLACEHOLDERS 

Generate a placeholder (empty ID) if not found in current lib file.

BLO_LIBLINK_FORCE_INDIRECT 

Force loaded ID to be tagged as ID_TAG_INDIRECT (used in reload context only).

BLO_LIBLINK_APPEND_SET_FAKEUSER 

Set fake user on appended IDs.

BLO_LIBLINK_APPEND_RECURSIVE 

Append (make local) also indirect dependencies of appended IDs coming from other libraries. NOTE: All IDs (including indirectly linked ones) coming from the same initial library are always made local.

BLO_LIBLINK_APPEND_LOCAL_ID_REUSE 

Try to re-use previously appended matching ID on new append.

BLO_LIBLINK_APPEND_ASSET_DATA_CLEAR 

Clear the asset data.

BLO_LIBLINK_OBDATA_INSTANCE 

Instantiate object data IDs (i.e. create objects for them if needed).

BLO_LIBLINK_COLLECTION_INSTANCE 

Instantiate collections as empties, instead of linking them into current view layer.

Definition at line 364 of file BLO_readfile.hh.

◆ eBLOReadSkip

Skip reading some data-block types (may want to skip screen data too).

Enumerator
BLO_READ_SKIP_NONE 
BLO_READ_SKIP_USERDEF 

Skip BLO_CODE_USER blocks.

BLO_READ_SKIP_DATA 

Only read BLO_CODE_USER (and associated data).

BLO_READ_SKIP_UNDO_OLD_MAIN 

Do not attempt to re-use IDs from old bmain for unchanged ones in case of undo.

Definition at line 145 of file BLO_readfile.hh.

Function Documentation

◆ BLO_blendfiledata_free()

void BLO_blendfiledata_free ( BlendFileData * bfd)

Frees a BlendFileData structure and all the data associated with it (the userdef data, and the main libblock data).

Parameters
bfdThe structure to free.

Definition at line 394 of file readblenentry.cc.

References BKE_main_free(), BlendFileData::main, MEM_freeN(), and BlendFileData::user.

Referenced by BKE_blendfile_read(), BKE_blendfile_read_from_memfile(), BKE_blendfile_read_from_memory(), BKE_blendfile_read_setup_readfile(), BlendfileLoadingBaseTest::blendfile_free(), and sequencer_clipboard_paste_exec().

◆ BLO_blendhandle_close()

void BLO_blendhandle_close ( BlendHandle * bh)

Close and free a blendhandle. The handle becomes invalid after this call.

Parameters
bhThe handle to close.

Definition at line 286 of file readblenentry.cc.

References blo_filedata_free().

Referenced by BKE_blendfile_is_readable(), BLO_library_temp_free(), BLO_main_validate_libraries(), filelist_freelib(), filelist_readjob_list_lib(), imb_thumb_load_from_blend_id(), and link_append_context_library_blohandle_release().

◆ BLO_blendhandle_from_file()

BlendHandle * BLO_blendhandle_from_file ( const char * filepath,
BlendFileReadReport * reports )

Open a blendhandle from a file path.

Parameters
filepathThe file path to open.
reportsReport errors in opening the file (can be NULL).
Returns
A handle on success, or NULL on failure.

Definition at line 62 of file readblenentry.cc.

References blo_filedata_from_file().

Referenced by BKE_blendfile_is_readable(), BLO_library_temp_load_id(), BLO_main_validate_libraries(), bpy_lib_enter(), filelist_readjob_list_lib(), imb_thumb_load_from_blend_id(), and link_append_context_library_blohandle_ensure().

◆ BLO_blendhandle_from_memory()

BlendHandle * BLO_blendhandle_from_memory ( const void * mem,
int memsize,
BlendFileReadReport * reports )

Open a blendhandle from memory.

Parameters
memThe data to load from.
memsizeThe size of the data.
Returns
A handle on success, or NULL on failure.

Definition at line 71 of file readblenentry.cc.

References blo_filedata_from_memory().

Referenced by link_append_context_library_blohandle_ensure().

◆ BLO_blendhandle_get_datablock_info()

LinkNode * BLO_blendhandle_get_datablock_info ( BlendHandle * bh,
int ofblocktype,
bool use_assets_only,
int * r_tot_info_items )

Gets the names and asset-data (if ID is an asset) of data-blocks in a file of a certain type. The data-blocks can be limited to assets.

Parameters
bhThe blendhandle to access.
ofblocktypeThe type of names to get.
use_assets_onlyLimit the result to assets only.
r_tot_info_itemsThe length of the returned list.
Returns
A BLI_linklist of BLODataBlockInfo *.
Note
The links should be freed using BLO_datablock_info_free() or the entire list using BLO_datablock_info_linklist_free().

Definition at line 111 of file readblenentry.cc.

References BLODataBlockInfo::asset_data, BLI_linklist_prepend(), blo_bhead_first(), blo_bhead_id_asset_data_address(), blo_bhead_id_name(), blo_bhead_next(), blo_bhead_prev(), BLO_CODE_DATA, BLO_CODE_ENDB, blo_read_asset_data_block(), BHead::code, DNA_struct_find_with_alias(), FileData::filesdna, BLODataBlockInfo::free_asset_data, MEM_mallocN, BLODataBlockInfo::name, BLODataBlockInfo::no_preview_found, and STRNCPY.

Referenced by filelist_readjob_list_lib().

◆ BLO_blendhandle_get_datablock_names()

LinkNode * BLO_blendhandle_get_datablock_names ( BlendHandle * bh,
int ofblocktype,
bool use_assets_only,
int * r_tot_names )

Gets the names of all the data-blocks in a file of a certain type (e.g. all the scene names in a file).

Parameters
bhThe blendhandle to access.
ofblocktypeThe type of names to get.
use_assets_onlyOnly list IDs marked as assets.
r_tot_namesThe length of the returned list.
Returns
A BLI_linklist of strings. The string links should be freed with MEM_freeN().

Definition at line 82 of file readblenentry.cc.

References BLI_linklist_prepend(), BLI_strdup(), blo_bhead_first(), blo_bhead_id_asset_data_address(), blo_bhead_id_name(), blo_bhead_next(), BLO_CODE_ENDB, and BHead::code.

Referenced by _bpy_names(), BKE_blendfile_link_append_context_item_idtypes_from_library_add(), and BLO_main_validate_libraries().

◆ BLO_blendhandle_get_linkable_groups()

LinkNode * BLO_blendhandle_get_linkable_groups ( BlendHandle * bh)

Gets the names of all the linkable data-block types available in a file. (e.g. "Scene", "Mesh", "Light", etc.).

Parameters
bhThe blendhandle to access.
Returns
A BLI_linklist of strings. The string links should be freed with MEM_freeN().

Definition at line 259 of file readblenentry.cc.

References BKE_idtype_idcode_is_linkable(), BKE_idtype_idcode_is_valid(), BKE_idtype_idcode_to_name(), BLI_gset_add(), BLI_gset_free(), BLI_gset_ptr_new(), BLI_linklist_prepend(), BLI_strdup(), blo_bhead_first(), blo_bhead_next(), BLO_CODE_ENDB, BHead::code, and str.

Referenced by filelist_readjob_list_lib().

◆ BLO_blendhandle_get_preview_for_id()

PreviewImage * BLO_blendhandle_get_preview_for_id ( BlendHandle * bh,
int ofblocktype,
const char * name )

Get the PreviewImage of a single data block in a file. (e.g. all the scene previews in a file).

Parameters
bhThe blendhandle to access.
ofblocktypeThe type of names to get.
nameName of the block without the ID_ prefix, to read the preview image from.
Returns
PreviewImage or NULL when no preview Images have been found. Caller owns the returned

Definition at line 218 of file readblenentry.cc.

References blo_bhead_first(), blo_bhead_id_name(), blo_bhead_next(), blo_blendhandle_read_preview_rects(), BLO_CODE_DATA, BLO_CODE_ENDB, BLO_library_read_struct(), DNA_struct_find_with_alias(), FileData::filesdna, MEM_dupallocN, MEM_freeN(), result, PreviewImage::runtime, and STREQ.

Referenced by imb_thumb_load_from_blend_id().

◆ BLO_datablock_info_free()

void BLO_datablock_info_free ( BLODataBlockInfo * datablock_info)

Frees contained data, not datablock_info itself.

Definition at line 45 of file readblenentry.cc.

References BLODataBlockInfo::asset_data, BKE_asset_metadata_free(), and BLODataBlockInfo::free_asset_data.

Referenced by BLO_datablock_info_linklist_free().

◆ BLO_datablock_info_linklist_free()

void BLO_datablock_info_linklist_free ( LinkNode * datablock_infos)

Can be used to free the list returned by BLO_blendhandle_get_datablock_info().

Definition at line 53 of file readblenentry.cc.

References BLI_linklist_free(), BLO_datablock_info_free(), and MEM_freeN().

Referenced by filelist_readjob_list_lib().

◆ BLO_expand_main()

void BLO_expand_main ( void * fdhandle,
Main * mainvar,
BLOExpandDoitCallback callback )

Loop over all ID data in Main to mark relations. Set (id->tag & ID_TAG_NEED_EXPAND) to mark expanding. Flags get cleared after expanding.

Parameters
fdhandleusually file-data, or own handle. May be nullptr.
mainvarthe Main database to expand.
calbackCalled for each ID block it finds.

Definition at line 4159 of file readfile.cc.

References BKE_library_foreach_ID_link(), callback, expand_cb(), FD_FLAGS_IS_MEMFILE, flag, FileData::flags, FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, ID_TAG_NEED_EXPAND, IDWALK_DO_DEPRECATED_POINTERS, IDWALK_NO_ORIG_POINTERS_ACCESS, IDWALK_READONLY, and ID::tag.

Referenced by blender::bke::asset_main_create_from_ID(), library_link_end(), and read_libraries().

◆ BLO_library_link_begin()

Main * BLO_library_link_begin ( BlendHandle ** bh,
const char * filepath,
const LibraryLink_Params * params )

Initialize the #BlendHandle for linking library data.

Parameters
bhA blender file handle as returned by BLO_blendhandle_from_file or BLO_blendhandle_from_memory.
filepathUsed for relative linking, copied to the lib->filepath.
paramsSettings for linking that don't change from beginning to end of linking.
Returns
the library Main, to be passed to BLO_library_link_named_part as mainl.

Definition at line 4332 of file readfile.cc.

References library_link_begin(), and params.

Referenced by BKE_blendfile_link(), and BLO_library_temp_load_id().

◆ BLO_library_link_end()

void BLO_library_link_end ( Main * mainl,
BlendHandle ** bh,
const LibraryLink_Params * params )

Finalize linking from a given .blend file (library). Optionally instance the indirect object/collection in the scene when the flags are set.

Note
Do not use bh after calling this function, it may frees it.
Parameters
mainlThe main database to link from (not the active one).
bhThe blender file handle (WARNING! may be freed by this function!).
paramsSettings for linking that don't change from beginning to end of linking.

Definition at line 4484 of file readfile.cc.

References blo_filedata_free(), Main::is_read_invalid, lib, library_link_end(), LISTBASE_FOREACH, and params.

Referenced by BKE_blendfile_link(), and BLO_library_temp_free().

◆ BLO_library_link_named_part()

ID * BLO_library_link_named_part ( Main * mainl,
BlendHandle ** bh,
short idcode,
const char * name,
const LibraryLink_Params * params )

Link a named data-block from an external blend file.

Parameters
mainlThe main database to link from (not the active one).
bhThe blender file handle.
idcodeThe kind of data-block to link.
nameThe name of the data-block (without the 2 char ID prefix).
Returns
the linked ID when found.

Definition at line 4248 of file readfile.cc.

References Main::is_read_invalid, link_named_part(), and params.

Referenced by BKE_blendfile_link(), and BLO_library_temp_load_id().

◆ BLO_library_link_params_init()

void BLO_library_link_params_init ( LibraryLink_Params * params,
Main * bmain,
int flag,
int id_tag_extra )

◆ BLO_library_link_params_init_with_context()

void BLO_library_link_params_init_with_context ( LibraryLink_Params * params,
Main * bmain,
int flag,
int id_tag_extra,
Scene * scene,
ViewLayer * view_layer,
const View3D * v3d )

◆ BLO_library_read_struct()

void * BLO_library_read_struct ( FileData * fd,
BHead * bh,
const char * blockname )

◆ BLO_library_temp_free()

◆ BLO_library_temp_load_id()

◆ BLO_read_do_version_after_setup()

void BLO_read_do_version_after_setup ( Main * new_bmain,
BlendfileLinkAppendContext * lapp_context,
BlendFileReadReport * reports )

Does versioning code that requires the Main data-base to be fully loaded and valid.

readfile's do_versions does not allow to create (or delete) IDs, and only operates on a single library at a time.

Called at the end of #setup_add_data from BKE's blendfile.cc.

Parameters
new_bmainthe newly read Main data-base.

Definition at line 407 of file readblenentry.cc.

References do_versions_after_setup().

Referenced by BKE_blendfile_append(), BKE_blendfile_link(), and setup_app_data().

◆ BLO_read_from_file()

BlendFileData * BLO_read_from_file ( const char * filepath,
eBLOReadSkip skip_flags,
BlendFileReadReport * reports )

Open a blender file from a filepath. The function returns NULL and sets a report in the list if it cannot open the file.

Parameters
filepathThe path of the file to open.
reportsIf the return value is NULL, errors indicating the cause of the failure.
Returns
The data of the file.

Definition at line 302 of file readblenentry.cc.

References BLI_assert, BLI_path_is_abs_from_cwd(), BLI_path_is_rel(), blo_filedata_free(), blo_filedata_from_file(), blo_read_file_internal(), and FileData::skip_flags.

Referenced by BKE_blendfile_read(), BKE_blendfile_userdef_read(), BKE_blendfile_workspace_config_read(), and BlendfileLoadingBaseTest::blendfile_load().

◆ BLO_read_from_memfile()

BlendFileData * BLO_read_from_memfile ( Main * oldmain,
const char * filepath,
MemFile * memfile,
const BlendFileReadParams * params,
ReportList * reports )

Used for undo/redo, skips part of libraries reading (assuming their data are already loaded & valid).

Parameters
oldmainold main, from which we will keep libraries and other data-blocks that should not have changed.
filepathcurrent file, only for retrieving library data. Typically BKE_main_blendfile_path(oldmain).

Definition at line 342 of file readblenentry.cc.

References BLI_assert, blo_cache_storage_init(), blo_cache_storage_old_bmain_clear(), blo_filedata_free(), blo_filedata_from_memfile(), blo_join_main(), blo_make_old_idmap_from_main(), blo_read_file_internal(), blo_split_main(), ListBase::first, FileData::old_mainlist, params, FileData::relabase, BlendFileReadReport::reports, FileData::skip_flags, and STRNCPY.

Referenced by BKE_blendfile_read_from_memfile(), and BLO_memfile_main_get().

◆ BLO_read_from_memory()

BlendFileData * BLO_read_from_memory ( const void * mem,
int memsize,
eBLOReadSkip skip_flags,
ReportList * reports )

Open a blender file from memory. The function returns NULL and sets a report in the list if it cannot open the file.

Parameters
memThe file data.
memsizeThe length of mem.
reportsIf the return value is NULL, errors indicating the cause of the failure.
Returns
The data of the file.

Definition at line 322 of file readblenentry.cc.

References blo_filedata_free(), blo_filedata_from_memory(), blo_read_file_internal(), BlendFileReadReport::reports, and FileData::skip_flags.

Referenced by BKE_blendfile_read_from_memory(), BKE_blendfile_userdef_read_from_memory(), BKE_blendfile_workspace_config_read(), and load_main_from_memory().

◆ BLO_read_invalidate_message()

void BLO_read_invalidate_message ( BlendHandle * bh,
Main * bmain,
const char * message )

Mark the given Main (and the 'root' local one in case of lib-split Mains) as invalid, and generate an error report containing given message.

Definition at line 293 of file readblenentry.cc.

References blo_readfile_invalidate().

◆ BLO_sanitize_experimental_features_userpref_blend()

void BLO_sanitize_experimental_features_userpref_blend ( UserDef * userdef)

Disable unwanted experimental feature settings on startup.

Definition at line 1098 of file versioning_userdef.cc.

References BKE_blender_version_is_alpha(), UserDef::experimental, and MEMSET_STRUCT_AFTER.

Referenced by wm_init_userdef().

◆ BLO_thumbnail_from_file()

BlendThumbnail * BLO_thumbnail_from_file ( const char * filepath)

Does a very light reading of given .blend file to extract its stored thumbnail.

Parameters
filepathThe path of the file to extract thumbnail from.
Returns
The raw thumbnail (MEM-allocated, as stored in file, use BKE_main_thumbnail_to_imbuf() to convert it to ImBuf image).

Definition at line 1422 of file readfile.cc.

References BLEN_THUMB_MEMSIZE, BLEN_THUMB_MEMSIZE_FILE, BLEN_THUMB_MEMSIZE_IS_VALID, BLI_assert, blo_filedata_free(), blo_filedata_from_file_minimal(), data, MEM_mallocN, and read_file_thumbnail().

Referenced by imb_thumb_load_from_blendfile(), and uiTemplateRecentFiles_tooltip_func().

◆ BLO_update_defaults_startup_blend()

void BLO_update_defaults_startup_blend ( Main * bmain,
const char * app_template )

Update defaults in startup.blend, without having to save and embed it.

Note
defaults for preferences are stored in userdef_default.c and can be updated there. Update defaults in startup.blend, without having to save and embed the file. This function can be emptied each time the startup.blend is updated.
Screen data may be cleared at this point, this will happen in the case an app-template's data needs to be versioned when read-file is called with "Load UI" disabled. Versioning the screen data can be safely skipped without "Load UI" since the screen data will have been versioned when it was first loaded.

Definition at line 449 of file versioning_defaults.cc.

References app_template, BKE_gpencil_material_add(), BKE_gpencil_palette_ensure(), BKE_id_delete(), BKE_libblock_rename(), BKE_ntree_update_tag_node_property(), BKE_paint_ensure_from_paintmode(), BKE_workspace_active_layout_for_workspace_get(), BKE_workspace_layout_remove(), BLI_findstring(), BLI_mempool_destroy(), blo_is_builtin_template(), blo_update_defaults_scene(), BLO_update_defaults_workspace(), Main::brushes, Main::cameras, CD_GRID_PAINT_MASK, copy_v4_fl(), CustomData_free_layers(), DEG2RADF, do_versions_rename_id(), Object::dtx, bGPdata::flag, MaterialGPencilStyle::flag, Paint::flags, GP_DATA_STROKE_PAINTMODE, GP_MATERIAL_MODE_DOT, GP_MATERIAL_MODE_SQUARE, ToolSettings::gp_paint, GP_SELECTMODE_STROKE, Material::gp_style, ToolSettings::gpencil_selectmode_edit, ID_LA, ID_MA, ID_OB, LA_SHAD_RES_ABSOLUTE, Main::lights, LISTBASE_FOREACH, LISTBASE_FOREACH_MUTABLE, MA_BL_TRANSPARENT_SHADOW, Main::materials, ME_REMESH_REPROJECT_ATTRIBUTES, ME_REMESH_REPROJECT_VOLUME, blender::bke::mesh_smooth_set(), Main::meshes, MaterialGPencilStyle::mix_factor, MaterialGPencilStyle::mix_rgba, MaterialGPencilStyle::mode, blender::bke::node_find_socket(), OB_GPENCIL_LEGACY, OB_MODE_PAINT_GREASE_PENCIL, OB_USE_GPENCIL_LIGHTS, Main::objects, offsetof, GpPaint::paint, PAINT_SHOW_BRUSH, Main::scenes, WorkSpaceLayout::screen, Main::screens, SculptGPencil, SET_FLAG_FROM_TEST, SHD_GLOSSY_MULTI_GGX, SHD_SUBSURFACE_RANDOM_WALK, SOCK_IN, SPACE_OUTLINER, STR_ELEM, STREQ, STRNCPY, MaterialGPencilStyle::texture_offset, SpaceOutliner::treestore, Object::type, version_cycles_node_socket_float_value(), version_cycles_node_socket_rgba_value(), VertexGPencil, WeightGPencil, Main::wm, WO_USE_SUN_SHADOW, Main::workspaces, and Main::worlds.

Referenced by BKE_blendfile_read_setup_readfile().

◆ BLO_update_defaults_workspace()

◆ BLO_version_from_file()

short BLO_version_from_file ( const char * filepath)

Does a very light reading of given .blend file to extract its version.

Parameters
filepathThe path of the blend file to extract version from.
Returns
The file version

Definition at line 1449 of file readfile.cc.

References blo_filedata_free(), blo_filedata_from_file_minimal(), and FileData::fileversion.

Referenced by file_draw_tooltip_custom_func(), and uiTemplateRecentFiles_tooltip_func().