|
Blender
V2.93
|
#include <ctype.h>#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "CLG_log.h"#include "MEM_guardedalloc.h"#include "DNA_ID.h"#include "DNA_anim_types.h"#include "DNA_collection_types.h"#include "DNA_gpencil_types.h"#include "DNA_key_types.h"#include "DNA_node_types.h"#include "DNA_workspace_types.h"#include "BLI_utildefines.h"#include "BLI_alloca.h"#include "BLI_blenlib.h"#include "BLI_ghash.h"#include "BLI_linklist.h"#include "BLI_memarena.h"#include "BLI_string_utils.h"#include "BLT_translation.h"#include "BKE_anim_data.h"#include "BKE_armature.h"#include "BKE_asset.h"#include "BKE_bpath.h"#include "BKE_context.h"#include "BKE_global.h"#include "BKE_gpencil.h"#include "BKE_idprop.h"#include "BKE_idtype.h"#include "BKE_key.h"#include "BKE_lib_id.h"#include "BKE_lib_override.h"#include "BKE_lib_query.h"#include "BKE_lib_remap.h"#include "BKE_main.h"#include "BKE_node.h"#include "BKE_rigidbody.h"#include "DEG_depsgraph.h"#include "DEG_depsgraph_build.h"#include "RNA_access.h"#include "BLO_read_write.h"#include "atomic_ops.h"Go to the source code of this file.
Classes | |
| struct | IDCopyLibManagementData |
Macros | |
| #define | LIB_ID_TYPES_NOCOPY |
| #define | ID_SORT_STEP_SIZE 512 |
| #define | MAX_NUMBER 1000000000 |
| #define | MIN_NUMBER 1 |
| #define | MAX_NUMBERS_IN_USE 1024 |
Functions | |
| static void | lib_id_library_local_paths (Main *bmain, Library *lib, ID *id) |
| static int | lib_id_clear_library_data_users_update_cb (LibraryIDLinkCallbackData *cb_data) |
| static void | lib_id_clear_library_data_ex (Main *bmain, ID *id) |
| void | BKE_lib_id_clear_library_data (Main *bmain, ID *id) |
| void | id_lib_extern (ID *id) |
| void | id_lib_indirect_weak_link (ID *id) |
| void | id_us_ensure_real (ID *id) |
| void | id_us_clear_real (ID *id) |
| void | id_us_plus_no_lib (ID *id) |
| void | id_us_plus (ID *id) |
| void | id_us_min (ID *id) |
| void | id_fake_user_set (ID *id) |
| void | id_fake_user_clear (ID *id) |
| void | BKE_id_clear_newpoin (ID *id) |
| static int | lib_id_expand_local_cb (LibraryIDLinkCallbackData *cb_data) |
| void | BKE_lib_id_expand_local (Main *bmain, ID *id) |
| static void | lib_id_copy_ensure_local (Main *bmain, const ID *old_id, ID *new_id) |
| void | BKE_lib_id_make_local_generic (Main *bmain, ID *id, const int flags) |
| bool | BKE_lib_id_make_local (Main *bmain, ID *id, const bool test, const int flags) |
| static int | id_copy_libmanagement_cb (LibraryIDLinkCallbackData *cb_data) |
| bool | BKE_id_copy_is_allowed (const ID *id) |
| ID * | BKE_id_copy_ex (Main *bmain, const ID *id, ID **r_newid, const int flag) |
| ID * | BKE_id_copy (Main *bmain, const ID *id) |
| ID * | BKE_id_copy_for_duplicate (Main *bmain, ID *id, const eDupli_ID_Flags duplicate_flags) |
| static void | id_swap (Main *bmain, ID *id_a, ID *id_b, const bool do_full_id) |
| void | BKE_lib_id_swap (Main *bmain, ID *id_a, ID *id_b) |
| void | BKE_lib_id_swap_full (Main *bmain, ID *id_a, ID *id_b) |
| bool | id_single_user (bContext *C, ID *id, PointerRNA *ptr, PropertyRNA *prop) |
| static int | libblock_management_us_plus (LibraryIDLinkCallbackData *cb_data) |
| static int | libblock_management_us_min (LibraryIDLinkCallbackData *cb_data) |
| void | BKE_libblock_management_main_add (Main *bmain, void *idv) |
| void | BKE_libblock_management_main_remove (Main *bmain, void *idv) |
| void | BKE_libblock_management_usercounts_set (Main *bmain, void *idv) |
| void | BKE_libblock_management_usercounts_clear (Main *bmain, void *idv) |
| void | BKE_main_id_tag_listbase (ListBase *lb, const int tag, const bool value) |
| void | BKE_main_id_tag_idcode (struct Main *mainvar, const short type, const int tag, const bool value) |
| void | BKE_main_id_tag_all (struct Main *mainvar, const int tag, const bool value) |
| void | BKE_main_id_flag_listbase (ListBase *lb, const int flag, const bool value) |
| void | BKE_main_id_flag_all (Main *bmain, const int flag, const bool value) |
| void | BKE_main_id_repair_duplicate_names_listbase (ListBase *lb) |
| void | BKE_main_lib_objects_recalc_all (Main *bmain) |
| size_t | BKE_libblock_get_alloc_info (short type, const char **name) |
| void * | BKE_libblock_alloc_notest (short type) |
| void * | BKE_libblock_alloc (Main *bmain, short type, const char *name, const int flag) |
| void | BKE_libblock_init_empty (ID *id) |
| void | BKE_lib_libblock_session_uuid_ensure (ID *id) |
| void | BKE_lib_libblock_session_uuid_renew (ID *id) |
| void * | BKE_id_new (Main *bmain, const short type, const char *name) |
| void * | BKE_id_new_nomain (const short type, const char *name) |
| void | BKE_libblock_copy_ex (Main *bmain, const ID *id, ID **r_newid, const int orig_flag) |
| void * | BKE_libblock_copy (Main *bmain, const ID *id) |
| void * | BKE_libblock_copy_for_localize (const ID *id) |
| ID * | BKE_libblock_find_name (struct Main *bmain, const short type, const char *name) |
| void | id_sort_by_name (ListBase *lb, ID *id, ID *id_sorting_hint) |
| static bool | id_name_final_build (char *name, char *base_name, size_t base_name_len, int number) |
| static bool | check_for_dupid (ListBase *lb, ID *id, char *name, ID **r_id_sorting_hint) |
| bool | BKE_id_new_name_validate (ListBase *lb, ID *id, const char *tname) |
| void | BKE_main_id_clear_newpoins (Main *bmain) |
| static int | id_refcount_recompute_callback (LibraryIDLinkCallbackData *cb_data) |
| void | BKE_main_id_refcount_recompute (struct Main *bmain, const bool do_linked_only) |
| static void | library_make_local_copying_check (ID *id, GSet *loop_tags, MainIDRelations *id_relations, GSet *done_ids) |
| void | BKE_library_make_local (Main *bmain, const Library *lib, GHash *old_to_new_ids, const bool untagged_only, const bool set_fake) |
| void | BLI_libblock_ensure_unique_name (Main *bmain, const char *name) |
| void | BKE_libblock_rename (Main *bmain, ID *id, const char *name) |
| void | BKE_id_full_name_get (char name[MAX_ID_FULL_NAME], const ID *id, char separator_char) |
| void | BKE_id_full_name_ui_prefix_get (char name[MAX_ID_FULL_NAME_UI], const ID *id, const bool add_lib_hint, char separator_char, int *r_prefix_len) |
| char * | BKE_id_to_unique_string_key (const struct ID *id) |
| void | BKE_id_tag_set_atomic (ID *id, int tag) |
| void | BKE_id_tag_clear_atomic (ID *id, int tag) |
| bool | BKE_id_is_in_global_main (ID *id) |
| bool | BKE_id_can_be_asset (const ID *id) |
| static int * | id_order_get (ID *id) |
| static int | id_order_compare (const void *a, const void *b) |
| void | BKE_id_ordered_list (ListBase *ordered_lb, const ListBase *lb) |
| void | BKE_id_reorder (const ListBase *lb, ID *id, ID *relative, bool after) |
| void | BKE_id_blend_write (BlendWriter *writer, ID *id) |
Variables | |
| static CLG_LogRef | LOG = {.identifier = "bke.lib_id"} |
| IDTypeInfo | IDType_ID_LINK_PLACEHOLDER |
| static uint | global_session_uuid = 0 |
Contains management of ID's and libraries allocate and free of all library data
Definition in file lib_id.c.
| #define ID_SORT_STEP_SIZE 512 |
| #define LIB_ID_TYPES_NOCOPY |
| void BKE_id_blend_write | ( | BlendWriter * | writer, |
| ID * | id | ||
| ) |
Definition at line 2395 of file lib_id.c.
References ID::asset_data, BKE_asset_metadata_write(), BLO_write_string(), BLO_write_struct, BLO_write_struct_list, ELEM, GS, id, ID_WM, IDP_BlendWrite(), LISTBASE_FOREACH, ID::name, ID::override_library, IDOverrideLibrary::properties, and ID::properties.
Referenced by action_blend_write(), armature_blend_write(), BKE_collection_blend_write_nolib(), brush_blend_write(), cache_file_blend_write(), camera_blend_write(), curve_blend_write(), greasepencil_blend_write(), hair_blend_write(), image_blend_write(), lattice_blend_write(), light_blend_write(), lightprobe_blend_write(), linestyle_blend_write(), mask_blend_write(), material_blend_write(), mesh_blend_write(), metaball_blend_write(), movieclip_blend_write(), ntreeBlendWrite(), object_blend_write(), paint_curve_blend_write(), palette_blend_write(), particle_settings_blend_write(), pointcloud_blend_write(), scene_blend_write(), screen_blend_write(), shapekey_blend_write(), simulation_blend_write(), sound_blend_write(), speaker_blend_write(), text_blend_write(), texture_blend_write(), vfont_blend_write(), volume_blend_write(), window_manager_blend_write(), workspace_blend_write(), world_blend_write(), and write_libraries().
| bool BKE_id_can_be_asset | ( | const ID * | id | ) |
Definition at line 2294 of file lib_id.c.
References BKE_idtype_idcode_is_linkable(), GS, id, ID_IS_LINKED, ID_IS_OVERRIDE_LIBRARY, and ID::name.
| void BKE_id_clear_newpoin | ( | ID * | id | ) |
Invokes the appropriate copy method for the block and returns the result in newid, unless test. Returns true if the block can be copied.
Definition at line 636 of file lib_id.c.
References BKE_id_copy_ex(), LIB_ID_COPY_DEFAULT, and NULL.
Referenced by BKE_id_copy_for_duplicate(), and BKE_lib_id_make_local_generic().
Generic entry point for copying a data-block (new API).
| bmain | Main database, may be NULL only if LIB_ID_CREATE_NO_MAIN is specified. |
| id | Source data-block. |
| r_newid | Pointer to new (copied) ID pointer, may be NULL. Used to allow copying into already allocated memory. |
| flag | Set of copy options, see DNA_ID.h enum for details (leave to zero for default, full copy). |
Definition at line 570 of file lib_id.c.
References BKE_idtype_get_info_from_id(), BKE_libblock_copy_ex(), BKE_libblock_get_alloc_info(), BKE_library_foreach_ID_link(), BLI_assert, IDTypeInfo::copy_data, data, IDCopyLibManagementData::flag, ID::flag, IDTypeInfo::flags, GS, id, id_copy_libmanagement_cb(), IDTYPE_FLAGS_NO_COPY, IDWALK_NOP, ID::lib, lib_id_copy_ensure_local(), LIB_ID_COPY_KEEP_LIB, LIB_ID_CREATE_NO_ALLOCATE, LIB_ID_CREATE_NO_MAIN, ID::name, NULL, and size().
Referenced by BKE_id_copy(), and id_single_user().
| ID* BKE_id_copy_for_duplicate | ( | Main * | bmain, |
| ID * | id, | ||
| const eDupli_ID_Flags | duplicate_flags | ||
| ) |
Invokes the appropriate copy method for the block and returns the result in newid, unless test. Returns true if the block can be copied.
Definition at line 645 of file lib_id.c.
References BKE_animdata_duplicate_id_action(), BKE_id_copy(), BKE_key_from_id(), id, ID_IS_LINKED, ID_NEW_SET, id_us_min(), ID::newid, NULL, and USER_DUP_LINKED_ID.
| bool BKE_id_copy_is_allowed | ( | const ID * | id | ) |
| void BKE_id_full_name_get | ( | char | name[MAX_ID_FULL_NAME], |
| const ID * | id, | ||
| char | separator_char | ||
| ) |
Generate full name of the data-block (without ID code, but with library if any).
| name | An allocated string of minimal length MAX_ID_FULL_NAME, will be filled with generated string. |
| separator_char | Character to use for separating name and library name. Can be 0 to use default (' '). |
Definition at line 2205 of file lib_id.c.
References id, Library::id, ID::lib, ID::name, and NULL.
Referenced by BKE_id_full_name_ui_prefix_get().
| void BKE_id_full_name_ui_prefix_get | ( | char | name[MAX_ID_FULL_NAME_UI], |
| const ID * | id, | ||
| const bool | add_lib_hint, | ||
| char | separator_char, | ||
| int * | r_prefix_len | ||
| ) |
Generate full name of the data-block (without ID code, but with library if any), with a 2 to 3 character prefix prepended indicating whether it comes from a library, is overriding, has a fake or no user, etc.
| name | An allocated string of minimal length MAX_ID_FULL_NAME_UI, will be filled with generated string. |
| separator_char | Character to use for separating name and library name. Can be 0 to use default (' '). |
| r_prefix_len | The length of the prefix added. |
Definition at line 2234 of file lib_id.c.
References BKE_id_full_name_get(), id, ID_IS_OVERRIDE_LIBRARY, ID_MISSING, LIB_FAKEUSER, and ID::us.
| bool BKE_id_is_in_global_main | ( | ID * | id | ) |
Check that given ID pointer actually is in G_MAIN. Main intended use is for debug asserts in places we cannot easily get rid of G_Main...
Definition at line 2287 of file lib_id.c.
References BLI_findindex(), G_MAIN, GS, id, ID::name, NULL, and which_libbase().
Referenced by bpy_bmesh_to_mesh(), pygpu_offscreen_draw_view3d(), and pyrna_struct_keyframe_insert().
| void* BKE_id_new | ( | Main * | bmain, |
| const short | type, | ||
| const char * | name | ||
| ) |
Generic helper to create a new empty data-block of given type in given bmain database.
| name | can be NULL, in which case we get default name for this ID type. |
Definition at line 1177 of file lib_id.c.
References BKE_idtype_idcode_to_name(), BKE_libblock_alloc(), BKE_libblock_init_empty(), BLI_assert, DATA_, id, NULL, and type.
Referenced by BKE_action_add(), BKE_armature_add(), BKE_brush_add(), BKE_cachefile_add(), BKE_camera_add(), BKE_hair_add(), BKE_key_add(), BKE_lattice_add(), BKE_light_add(), BKE_lightprobe_add(), BKE_material_add(), BKE_mball_add(), BKE_mesh_add(), BKE_paint_curve_add(), BKE_palette_add(), BKE_particlesettings_add(), BKE_pointcloud_add(), BKE_scene_add(), BKE_simulation_add(), BKE_speaker_add(), BKE_text_add(), BKE_texture_add(), BKE_volume_add(), BKE_workspace_add(), BKE_world_add(), collection_add(), and movieclip_alloc().
Ensures given ID has a unique name in given listbase.
Only for local IDs (linked ones already have a unique ID in their library).
Definition at line 1690 of file lib_id.c.
References BKE_idtype_idcode_to_name(), BLI_strncpy(), BLI_utf8_invalid_strip(), check_for_dupid(), DATA_, GS, id, ID_IS_LINKED, id_sort_by_name(), MAX_ID_NAME, ID::name, NULL, and result.
Referenced by BKE_libblock_alloc(), BKE_libblock_management_main_add(), BKE_libblock_rename(), BKE_main_id_repair_duplicate_names_listbase(), BLI_libblock_ensure_unique_name(), and lib_id_clear_library_data_ex().
| void* BKE_id_new_nomain | ( | const short | type, |
| const char * | name | ||
| ) |
Generic helper to create a new temporary empty data-block of given type, outside of any Main database.
| name | can be NULL, in which case we get default name for this ID type. |
Definition at line 1196 of file lib_id.c.
References BKE_idtype_idcode_to_name(), BKE_libblock_alloc(), BKE_libblock_init_empty(), DATA_, id, LIB_ID_CREATE_NO_DEG_TAG, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, NULL, and type.
Referenced by BKE_hair_new_for_eval(), BKE_mesh_from_bmesh_for_eval_nomain(), BKE_mesh_from_bmesh_nomain(), BKE_mesh_from_nurbs_displist(), BKE_mesh_new_nomain_from_template_ex(), BKE_mesh_wrapper_from_editmesh_with_coords(), BKE_pointcloud_new_for_eval(), BKE_volume_new_for_eval(), blender::nodes::create_cube_mesh(), blender::nodes::create_ico_sphere_mesh(), EEVEE_material_default_diffuse_get(), EEVEE_material_default_error_get(), EEVEE_material_default_glossy_get(), EEVEE_world_default_get(), blender::ed::spreadsheet::get_display_geometry_set(), and mesh_new_from_mball_object().
Returns ordered list of data-blocks for display in the UI. Result is list of LinkData of IDs that must be freed.
Definition at line 2337 of file lib_id.c.
References BLI_addtail(), BLI_genericNodeN(), BLI_listbase_clear(), BLI_listbase_sort(), id_order_compare(), id_order_get(), LISTBASE_FOREACH, and order.
Reorder ID in the list, before or after the "relative" ID.
Definition at line 2359 of file lib_id.c.
References BLI_listbase_count(), id_order_get(), LISTBASE_FOREACH, and order.
| void BKE_id_tag_clear_atomic | ( | ID * | id, |
| int | tag | ||
| ) |
Definition at line 2278 of file lib_id.c.
References atomic_fetch_and_and_int32(), id, and ID::tag.
| void BKE_id_tag_set_atomic | ( | ID * | id, |
| int | tag | ||
| ) |
Definition at line 2273 of file lib_id.c.
References atomic_fetch_and_or_int32(), id, and ID::tag.
| char* BKE_id_to_unique_string_key | ( | const struct ID * | id | ) |
Generate a concatenation of ID name (including two-chars type code) and its lib name, if any.
Definition at line 2260 of file lib_id.c.
References BLI_sprintfN(), BLI_strdup(), id, Library::id, ID::lib, ID::name, and NULL.
Referenced by gpencil_strokes_copypastebuf_colors_material_to_name_create(), and gpencil_strokes_copypastebuf_colors_name_to_material_create().
Definition at line 202 of file lib_id.c.
References lib_id_clear_library_data_ex().
Referenced by brush_make_local(), id_local_fn(), and object_make_local().
Expand ID usages of given id as 'extern' (and no more indirect) linked data. Used by ID copy/make_local functions.
Definition at line 393 of file lib_id.c.
References BKE_library_foreach_ID_link(), IDWALK_READONLY, and lib_id_expand_local_cb().
Referenced by BKE_lib_id_make_local_generic(), BKE_library_make_local(), brush_make_local(), lib_id_copy_ensure_local(), and object_make_local().
Calls the appropriate make_local method for the block, unless test is set.
| flags | Special flag used when making a whole library's content local, it needs specific handling. |
Definition at line 479 of file lib_id.c.
References BKE_idtype_get_info_from_id(), BKE_lib_id_make_local_generic(), BLI_assert, IDTypeInfo::flags, id, IDTYPE_FLAGS_NO_MAKELOCAL, LIB_ID_MAKELOCAL_FULL_LIBRARY, LIB_TAG_INDIRECT, IDTypeInfo::make_local, NULL, and ID::tag.
Referenced by BKE_library_make_local(), brush_make_local(), id_local_fn(), template_ID(), and template_id_cb().
Generic 'make local' function, works for most of data-block types...
Definition at line 412 of file lib_id.c.
References BKE_id_copy(), BKE_key_from_id(), BKE_lib_id_expand_local(), BKE_libblock_remap(), BKE_library_ID_test_usages(), GS, id, ID_IS_LINKED, ID_NEW_SET, ID_REMAP_SKIP_INDIRECT_USAGE, ID_SCE, lib_id_clear_library_data_ex(), LIB_ID_MAKELOCAL_FULL_LIBRARY, ID::name, ntree, ntreeFromID(), NULL, and ID::us.
Referenced by BKE_lib_id_make_local(), and camera_make_local().
Does a mere memory swap over the whole IDs data (including type-specific memory).
| bmain | May be NULL, in which case there will be no remapping of internal pointers to itself. |
Definition at line 729 of file lib_id.c.
References id_swap().
Referenced by brush_undo_preserve(), lib_override_id_swap(), and palette_undo_preserve().
Does a mere memory swap over the whole IDs data (including type-specific memory).
| bmain | May be NULL, in which case there will be no remapping of internal pointers to itself. |
Definition at line 741 of file lib_id.c.
References id_swap().
Referenced by read_libblock_undo_restore_at_old_address().
| void BKE_lib_libblock_session_uuid_ensure | ( | ID * | id | ) |
Generate a session-wise uuid for the given id.
Definition at line 1145 of file lib_id.c.
References atomic_add_and_fetch_uint32(), BLI_assert, global_session_uuid, id, LIB_TAG_TEMP_MAIN, MAIN_ID_SESSION_UUID_UNSET, ID::session_uuid, ID::tag, and UNLIKELY.
Referenced by BKE_lib_libblock_session_uuid_renew(), BKE_libblock_alloc(), BKE_libblock_management_main_add(), create_placeholder(), direct_link_id_common(), and versions_gpencil_add_main().
| void BKE_lib_libblock_session_uuid_renew | ( | ID * | id | ) |
Re-generate a new session-wise uuid for the given id.
Definition at line 1166 of file lib_id.c.
References BKE_lib_libblock_session_uuid_ensure(), and MAIN_ID_SESSION_UUID_UNSET.
Referenced by lib_id_clear_library_data_ex(), and setup_app_data().
| void* BKE_libblock_alloc | ( | Main * | bmain, |
| short | type, | ||
| const char * | name, | ||
| const int | flag | ||
| ) |
Allocates and returns a block of the specified type, with the specified name (adjusted as necessary to ensure uniqueness), and appended to the specified list. The user count is set to 1, all other content (apart from name and links) being initialized to zero.
Definition at line 1062 of file lib_id.c.
References BKE_id_new_name_validate(), BKE_lib_libblock_session_uuid_ensure(), BKE_libblock_alloc_notest(), BKE_main_lock(), BKE_main_unlock(), BLI_addtail(), BLI_assert, BLI_strncpy(), DEG_id_type_tag(), ELEM, IDCopyLibManagementData::flag, id, ID_GR, ID_WS, Main::is_locked_for_linking, Main::is_memfile_undo_written, LIB_ID_CREATE_LOCAL, LIB_ID_CREATE_NO_ALLOCATE, LIB_ID_CREATE_NO_DEG_TAG, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, LIB_TAG_LOCALIZED, LIB_TAG_NO_MAIN, LIB_TAG_NO_USER_REFCOUNT, ID::name, NULL, type, and which_libbase().
Referenced by BKE_collection_master_add(), BKE_curve_add(), BKE_gpencil_data_addnew(), BKE_id_new(), BKE_id_new_nomain(), BKE_libblock_copy_ex(), BKE_linestyle_new(), BKE_mesh_new_nomain(), BKE_object_add_only_object(), BKE_pointcloud_add_default(), BKE_pointcloud_new_nomain(), BKE_sound_new_file(), BKE_text_load_ex(), BKE_vfont_load(), blo_find_main(), cachefile_open_exec(), image_alloc(), mask_alloc(), ntreeAddTree(), screen_add(), and wm_add_default().
| void* BKE_libblock_alloc_notest | ( | short | type | ) |
Allocates and returns memory of the right size for the specified block type, initialized to zero.
Definition at line 1045 of file lib_id.c.
References BKE_libblock_get_alloc_info(), BLI_assert, MEM_callocN, NULL, size(), and type.
Referenced by BKE_libblock_alloc(), create_placeholder(), and blender::deg::IDNode::init_copy_on_write().
Definition at line 1315 of file lib_id.c.
References BKE_libblock_copy_ex().
Definition at line 1212 of file lib_id.c.
References IdAdtTemplate::adt, BKE_animdata_copy(), BKE_lib_override_library_copy(), BKE_libblock_alloc(), BKE_libblock_get_alloc_info(), BLI_assert, BLI_strncpy(), DEG_id_type_tag(), IDCopyLibManagementData::flag, ID::flag, GS, id, id_can_have_animdata(), ID_IS_OVERRIDE_LIBRARY_REAL, ID_IS_OVERRIDE_LIBRARY_VIRTUAL, IDP_CopyProperty_ex(), LIB_EMBEDDED_DATA, LIB_EMBEDDED_DATA_LIB_OVERRIDE, LIB_ID_COPY_ACTIONS, LIB_ID_COPY_NO_ANIMDATA, LIB_ID_COPY_NO_LIB_OVERRIDE, LIB_ID_COPY_SET_COPIED_ON_WRITE, LIB_ID_COPY_SHAPEKEY, LIB_ID_CREATE_LOCAL, LIB_ID_CREATE_NO_ALLOCATE, LIB_ID_CREATE_NO_DEG_TAG, LIB_ID_CREATE_NO_MAIN, LIB_ID_CREATE_NO_USER_REFCOUNT, LIB_TAG_COPIED_ON_WRITE, LIB_TAG_NO_MAIN, LIB_TAG_NO_USER_REFCOUNT, LIB_TAG_NOT_ALLOCATED, ID::name, NULL, ID::properties, ID::tag, and ID::us.
Referenced by BKE_id_copy_ex(), BKE_libblock_copy(), and BKE_libblock_copy_for_localize().
| void* BKE_libblock_copy_for_localize | ( | const ID * | id | ) |
Definition at line 1325 of file lib_id.c.
References BKE_libblock_copy_ex(), LIB_ID_COPY_LOCALIZE, LIB_ID_COPY_NO_ANIMDATA, and NULL.
Definition at line 1333 of file lib_id.c.
References BLI_assert, BLI_findstring(), NULL, type, and which_libbase().
Referenced by arg_handle_python_text_run(), BKE_scene_set_name(), collection_instance_add_exec(), drop_named_material_invoke(), gpencil_stroke_change_color_exec(), node_add_collection_get_and_poll_collection_node_tree(), node_add_group_get_and_poll_group_node_tree(), node_add_mask_exec(), node_add_object_get_and_poll_object_node_tree(), node_add_texture_get_and_poll_texture_node_tree(), object_add_named_exec(), object_data_instance_add_exec(), object_select_mirror_exec(), object_select_same_collection_exec(), palette_join_exec(), read_libblock_undo_restore_linked(), sculpt_stroke_done(), sculpt_update_cache_invariants(), toolsystem_ref_link(), unpack_item_exec(), updateDuplicateCustomBoneShapes(), WM_drag_free_imported_drag_ID(), wm_lib_relocate_exec_do(), wm_lib_relocate_invoke(), and WM_operator_drop_load_path().
| size_t BKE_libblock_get_alloc_info | ( | short | type, |
| const char ** | name | ||
| ) |
Get allocation size of a given data-block type and optionally allocation name.
Definition at line 1024 of file lib_id.c.
References BKE_idtype_get_info_from_idcode(), IDTypeInfo::name, NULL, IDTypeInfo::struct_size, and type.
Referenced by BKE_id_copy_ex(), BKE_libblock_alloc_notest(), and BKE_libblock_copy_ex().
| void BKE_libblock_init_empty | ( | ID * | id | ) |
Initialize an ID of given type, such that it has valid 'empty' data. ID is assumed to be just calloc'ed.
Definition at line 1122 of file lib_id.c.
References BKE_idtype_get_info_from_id(), BLI_assert, IDTypeInfo::init_data, and NULL.
Referenced by BKE_id_new(), BKE_id_new_nomain(), BKE_mesh_new_nomain(), and create_placeholder().
| void BKE_libblock_management_main_add | ( | Main * | bmain, |
| void * | idv | ||
| ) |
Add a 'NO_MAIN' data-block to given main (also sets usercounts of its IDs if needed).
Definition at line 812 of file lib_id.c.
References BKE_id_new_name_validate(), BKE_lib_libblock_session_uuid_ensure(), BKE_library_foreach_ID_link(), BKE_main_lock(), BKE_main_unlock(), BLI_addtail(), BLI_assert, GS, id, IDWALK_NOP, Main::is_memfile_undo_written, LIB_TAG_NO_MAIN, LIB_TAG_NO_USER_REFCOUNT, LIB_TAG_NOT_ALLOCATED, libblock_management_us_plus(), ID::name, NULL, ID::tag, and which_libbase().
| void BKE_libblock_management_main_remove | ( | Main * | bmain, |
| void * | idv | ||
| ) |
Remove a data-block from given main (set it to 'NO_MAIN' status).
Definition at line 844 of file lib_id.c.
References BKE_main_lock(), BKE_main_unlock(), BLI_assert, BLI_remlink(), GS, id, Main::is_memfile_undo_written, LIB_TAG_NO_MAIN, ID::name, NULL, ID::tag, and which_libbase().
| void BKE_libblock_management_usercounts_clear | ( | Main * | bmain, |
| void * | idv | ||
| ) |
Definition at line 875 of file lib_id.c.
References BKE_library_foreach_ID_link(), id, IDWALK_NOP, LIB_TAG_NO_MAIN, LIB_TAG_NO_USER_REFCOUNT, libblock_management_us_min(), NULL, and ID::tag.
| void BKE_libblock_management_usercounts_set | ( | Main * | bmain, |
| void * | idv | ||
| ) |
Definition at line 863 of file lib_id.c.
References BKE_library_foreach_ID_link(), id, IDWALK_NOP, LIB_TAG_NO_USER_REFCOUNT, libblock_management_us_plus(), NULL, and ID::tag.
Sets the name of a block to name, suitably adjusted for uniqueness.
Definition at line 2187 of file lib_id.c.
References BKE_id_new_name_validate(), GS, id, Main::is_memfile_undo_written, ID::name, and which_libbase().
Referenced by DocumentImporter::write_node().
| void BKE_library_make_local | ( | Main * | bmain, |
| const Library * | lib, | ||
| GHash * | old_to_new_ids, | ||
| const bool | untagged_only, | ||
| const bool | set_fake | ||
| ) |
Make linked data-blocks local.
| bmain | Almost certainly global main. |
| lib | If not NULL, only make local data-blocks from this library. |
| untagged_only | If true, only make local data-blocks not tagged with LIB_TAG_PRE_EXISTING. |
| set_fake | If true, set fake user on all localized data-blocks (except group and objects ones). |
Definition at line 1879 of file lib_id.c.
References Freestyle::a, BKE_idtype_idcode_is_linkable(), BKE_lib_id_expand_local(), BKE_lib_id_make_local(), BKE_lib_override_library_make_local(), BKE_libblock_remap(), BKE_library_ID_test_usages(), BKE_main_id_clear_newpoins(), BKE_main_relations_create(), BKE_main_relations_free(), BKE_pose_rebuild(), BKE_rigidbody_ensure_local_object(), BLI_assert, BLI_ghash_insert(), BLI_gset_add(), BLI_gset_free(), BLI_gset_len(), BLI_gset_ptr_new(), BLI_linklist_prepend_arena(), BLI_linklist_prepend_nlink(), BLI_memarena_free(), BLI_memarena_new(), CLOG_WARN, ELEM, ListBase::first, GS, id, Object::id, id_fake_user_set(), ID_GR, ID_IS_LINKED, ID_IS_OVERRIDE_LIBRARY_REAL, ID_OB, ID_REMAP_SKIP_INDIRECT_USAGE, id_us_ensure_real(), if(), INDEX_ID_MAX, lib, ID::lib, lib_id_clear_library_data_ex(), LIB_ID_MAKELOCAL_FULL_LIBRARY, LIB_ID_MAKELOCAL_OBJECT_NO_PROXY_CLEARING, LIB_INDIRECT_WEAK_LINK, LIB_TAG_DOIT, LIB_TAG_EXTERN, LIB_TAG_INDIRECT, LIB_TAG_NEW, LIB_TAG_PRE_EXISTING, library_make_local_copying_check(), LOG, ID::name, ID::newid, LinkNode::next, ID::next, ntree, ntreeFromID(), NULL, OB_ARMATURE, Main::objects, ID::override_library, POSE_RECALC, Object::proxy, Object::proxy_from, Object::proxy_group, IDOverrideLibrary::reference, Main::relations, set_listbasepointers(), ID::tag, TIMEIT_END, TIMEIT_START, and TIMEIT_VALUE_PRINT.
| void BKE_main_id_clear_newpoins | ( | Main * | bmain | ) |
Definition at line 1738 of file lib_id.c.
References FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, id, LIB_TAG_NEW, and NULL.
Referenced by BKE_collection_duplicate(), BKE_lib_override_library_create(), BKE_lib_override_library_resync(), BKE_library_make_local(), BKE_object_duplicate(), BKE_scene_duplicate(), copy_object_set_idnew(), duplicate_exec(), ED_object_add_duplicate(), ED_object_single_user(), id_local_fn(), id_override_library_create_fn(), make_object_duplilist_real(), make_single_user_exec(), object_duplicates_make_real_exec(), outliner_build_tree(), and template_id_cb().
| void BKE_main_id_flag_all | ( | Main * | bmain, |
| const int | flag, | ||
| const bool | value | ||
| ) |
Clear or set given flags for all ids in bmain (persistent flags).
Definition at line 956 of file lib_id.c.
References Freestyle::a, BKE_main_id_flag_listbase(), IDCopyLibManagementData::flag, INDEX_ID_MAX, and set_listbasepointers().
| void BKE_main_id_flag_listbase | ( | ListBase * | lb, |
| const int | flag, | ||
| const bool | value | ||
| ) |
Clear or set given flags for all ids in listbase (persistent flags).
Definition at line 937 of file lib_id.c.
References ListBase::first, IDCopyLibManagementData::flag, id, ID::next, and ID::tag.
Referenced by BKE_main_id_flag_all(), and id_search_cb_objects_from_scene().
| void BKE_main_id_refcount_recompute | ( | struct Main * | bmain, |
| const bool | do_linked_only | ||
| ) |
Definition at line 1773 of file lib_id.c.
References BKE_library_foreach_ID_link(), FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, id, ID_FAKE_USERS, ID_IS_LINKED, id_refcount_recompute_callback(), id_us_ensure_real(), IDWALK_INCLUDE_UI, IDWALK_READONLY, LIB_TAG_EXTRAUSER, LIB_TAG_EXTRAUSER_SET, POINTER_FROM_INT, and ID::tag.
Referenced by blo_read_file_internal(), lib_relocate_do(), library_link_end(), and setup_app_data().
| void BKE_main_id_repair_duplicate_names_listbase | ( | ListBase * | lb | ) |
Definition at line 966 of file lib_id.c.
References BKE_id_new_name_validate(), BLI_gset_add(), BLI_gset_free(), BLI_gset_str_new_ex(), id, ID::lib, LISTBASE_FOREACH, MEM_freeN, MEM_mallocN, and NULL.
Referenced by blo_do_versions_280(), and blo_do_versions_290().
| void BKE_main_id_tag_all | ( | struct Main * | mainvar, |
| const int | tag, | ||
| const bool | value | ||
| ) |
Clear or set given tags for all ids in bmain (runtime tags).
Definition at line 923 of file lib_id.c.
References Freestyle::a, BKE_main_id_tag_listbase(), INDEX_ID_MAX, and set_listbasepointers().
Referenced by BKE_blendfile_write_partial_begin(), BKE_blendfile_write_partial_end(), BKE_collection_duplicate(), BKE_copybuffer_paste(), BKE_copybuffer_read(), BKE_id_delete(), BKE_lib_override_library_create(), BKE_lib_override_library_delete(), BKE_lib_override_library_main_resync(), BKE_lib_override_library_resync(), BKE_object_duplicate(), BKE_scene_duplicate(), blo_read_file_internal(), bpy_batch_remove(), bpy_lib_exit(), convert_proxy_to_override_exec(), copy_object_set_idnew(), duplicate_exec(), id_override_library_create_fn(), lib_relocate_do(), library_link_end(), make_local_exec(), make_override_library_exec(), object_delete_exec(), outliner_delete_exec(), previews_ensure_exec(), sorted_selected_editable_objects(), tag_localizable_objects(), WM_file_append_datablock(), and wm_link_append_exec().
| void BKE_main_id_tag_idcode | ( | struct Main * | mainvar, |
| const short | type, | ||
| const int | tag, | ||
| const bool | value | ||
| ) |
Clear or set given tags for all ids of given type in bmain (runtime tags).
Definition at line 910 of file lib_id.c.
References BKE_main_id_tag_listbase(), type, and which_libbase().
Referenced by bake_objects_check(), bake_targets_init_image_textures(), lib_relocate_do(), library_link_clear_tag(), and sound_update_animation_flags_exec().
| void BKE_main_id_tag_listbase | ( | ListBase * | lb, |
| const int | tag, | ||
| const bool | value | ||
| ) |
Clear or set given tags for all ids in listbase (runtime tags).
Definition at line 891 of file lib_id.c.
References ListBase::first, id, ID::next, and ID::tag.
Referenced by BKE_collection_object_cyclic_check(), BKE_main_id_tag_all(), BKE_main_id_tag_idcode(), BKE_workspace_id_tag_all_visible(), clean_viewport_memory(), node_group_has_output(), object_delete_exec(), and previews_ensure_exec().
| void BKE_main_lib_objects_recalc_all | ( | Main * | bmain | ) |
Definition at line 997 of file lib_id.c.
References DEG_id_tag_update(), DEG_id_type_tag(), ListBase::first, Object::id, ID_IS_LINKED, ID_OB, ID_RECALC_ANIMATION, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, ID::next, and Main::objects.
Referenced by BKE_copybuffer_paste(), BKE_copybuffer_read(), bpy_lib_exit(), lib_relocate_do(), outliner_id_remap_exec(), and wm_link_append_exec().
| void BLI_libblock_ensure_unique_name | ( | Main * | bmain, |
| const char * | name | ||
| ) |
Use after setting the ID's name When name exists: call 'new_id'
Definition at line 2165 of file lib_id.c.
References BKE_id_new_name_validate(), BLI_findstring(), GS, Main::is_memfile_undo_written, NULL, and which_libbase().
Referenced by BLO_update_defaults_startup_blend(), namebutton_fn(), and rename_id_for_versioning().
Check to see if an ID name is already used, and find a new one if so. Return true if a new name was created (returned in name).
Normally the ID that's being checked is already in the ListBase, so ID *id points at the new entry. The Python Library module needs to know what the name of a data-block will be before it is appended, in this case ID *id is NULL.
Definition at line 1489 of file lib_id.c.
References BLI_assert, BLI_split_name_num(), BLI_strncpy(), ELEM, ListBase::first, GS, ID_IS_LINKED, ID_LINK_PLACEHOLDER, id_name_final_build(), is_valid, MAX_ID_NAME, MAX_NUMBER, MAX_NUMBERS_IN_USE, MIN_NUMBER, ID::name, ID::next, NULL, STREQ, and STREQLEN.
Referenced by BKE_id_new_name_validate().
|
static |
Definition at line 517 of file lib_id.c.
References LibraryIDLinkCallbackData::cb_flag, data, LibraryIDLinkCallbackData::id_pointer, id_us_plus(), IDWALK_CB_USER, IDWALK_RET_NOP, LIB_ID_CREATE_NO_USER_REFCOUNT, and LibraryIDLinkCallbackData::user_data.
Referenced by BKE_id_copy_ex().
| void id_fake_user_clear | ( | ID * | id | ) |
Definition at line 336 of file lib_id.c.
References ID::flag, id, id_us_min(), and LIB_FAKEUSER.
Referenced by collection_link_exec(), ED_animedit_unlink_action(), id_fake_user_clear_fn(), lib_id_clear_library_data_ex(), lib_id_fake_user_toggle_exec(), lib_relocate_do_remap(), libblock_remap_data(), and template_id_cb().
| void id_fake_user_set | ( | ID * | id | ) |
Definition at line 328 of file lib_id.c.
References ID::flag, id, id_us_plus(), and LIB_FAKEUSER.
Referenced by BKE_lib_override_library_resync(), BKE_library_make_local(), BKE_text_add(), BKE_text_load_ex(), brush_copy_data(), brush_init_data(), brush_make_local(), collection_add_exec(), collection_create_exec(), do_versions_after_linking_280(), do_versions_after_linking_290(), ED_asset_mark_id(), ED_rigidbody_constraint_add(), id_fake_user_set_fn(), lib_id_fake_user_toggle_exec(), lib_relocate_do_remap(), libblock_remap_data(), mask_alloc(), mask_copy_data(), palette_init_data(), and unlink_collection_fn().
| void id_lib_extern | ( | ID * | id | ) |
Definition at line 207 of file lib_id.c.
References BKE_idtype_idcode_is_linkable(), BLI_assert, GS, id, ID_IS_LINKED, LIB_INDIRECT_WEAK_LINK, LIB_TAG_EXTERN, LIB_TAG_INDIRECT, ID::name, NULL, and ID::tag.
Referenced by armature_set_id_extern(), BKE_object_copy_proxy_drivers(), collection_instance_exec(), con_extern_cb(), id_us_plus(), and lib_id_expand_local_cb().
| void id_lib_indirect_weak_link | ( | ID * | id | ) |
Definition at line 220 of file lib_id.c.
References BKE_idtype_idcode_is_linkable(), BLI_assert, GS, id, ID_IS_LINKED, LIB_INDIRECT_WEAK_LINK, LIB_TAG_INDIRECT, ID::name, and ID::tag.
Referenced by layer_collection_sync().
|
static |
Helper building final ID name from given base_name and number.
If everything goes well and we do generate a valid final ID name in given name, we return true. In case the final name would overflow the allowed ID name length, or given number is bigger than maximum allowed value, we truncate further the base_name (and given name, which is assumed to have the same 'base_name' part), and return false.
Definition at line 1451 of file lib_id.c.
References ARRAY_SIZE, BLI_snprintf_rlen(), BLI_strncpy(), BLI_utf8_invalid_strip(), MAX_ID_NAME, and MAX_NUMBER.
Referenced by check_for_dupid().
|
static |
Definition at line 2313 of file lib_id.c.
References Freestyle::a, id_order_get(), and ID::name.
Referenced by BKE_id_ordered_list().
|
static |
Definition at line 2302 of file lib_id.c.
References GS, id, ID_WS, ID::name, and NULL.
Referenced by BKE_id_ordered_list(), BKE_id_reorder(), and id_order_compare().
|
static |
Definition at line 1749 of file lib_id.c.
References LibraryIDLinkCallbackData::cb_flag, ID_IS_LINKED, LibraryIDLinkCallbackData::id_pointer, id_us_ensure_real(), id_us_plus_no_lib(), IDWALK_CB_USER, IDWALK_CB_USER_ONE, IDWALK_RET_NOP, NULL, POINTER_AS_INT, and LibraryIDLinkCallbackData::user_data.
Referenced by BKE_main_id_refcount_recompute().
| bool id_single_user | ( | bContext * | C, |
| ID * | id, | ||
| PointerRNA * | ptr, | ||
| PropertyRNA * | prop | ||
| ) |
Does not set ID->newid pointer.
Definition at line 747 of file lib_id.c.
References BKE_id_copy_ex(), C, CTX_data_main(), DEG_id_tag_update(), bGPdata::flag, GP_DATA_SHOW_ONIONSKINS, GS, id, ID_GD, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, id_us_min(), LIB_ID_COPY_ACTIONS, LIB_ID_COPY_DEFAULT, ID::name, NULL, ptr, RNA_id_pointer_create(), RNA_property_editable(), RNA_property_pointer_set(), and RNA_property_update().
Referenced by singleuser_action_fn(), singleuser_world_fn(), and template_id_cb().
Sort given id into given lb list, using case-insensitive comparison of the id names.
| id_sorting_hint | Ignored if NULL. Otherwise, used to check if we can insert id immediately before or after that pointer. It must always be into given lb list. |
Definition at line 1348 of file lib_id.c.
References BLI_addhead(), BLI_assert, BLI_findindex(), BLI_insertlinkafter(), BLI_insertlinkbefore(), BLI_remlink(), BLI_strcasecmp(), ELEM, ListBase::first, id, ID_SORT_STEP_SIZE, ListBase::last, ID::lib, ID::name, ID::next, NULL, and ID::prev.
Referenced by BKE_blendfile_write_partial(), BKE_id_new_name_validate(), BLO_library_link_copypaste(), create_placeholder(), lib_relocate_do_remap(), and link_named_part().
Does a mere memory swap over the whole IDs data (including type-specific memory).
Definition at line 685 of file lib_id.c.
References BKE_idtype_get_info_from_id(), BKE_libblock_relink_ex(), BLI_assert, GS, ID_REMAP_SKIP_NEVER_NULL_USAGE, ID::name, NULL, ID::properties, ID::recalc, and IDTypeInfo::struct_size.
Referenced by BKE_lib_id_swap(), and BKE_lib_id_swap_full().
| void id_us_clear_real | ( | ID * | id | ) |
Definition at line 257 of file lib_id.c.
References BLI_assert, id, ID_FAKE_USERS, LIB_TAG_EXTRAUSER, LIB_TAG_EXTRAUSER_SET, ID::tag, and ID::us.
Referenced by BKE_id_free_us(), BKE_libblock_remap_locked(), lib_relocate_do(), libblock_remap_data(), and template_id_cb().
| void id_us_ensure_real | ( | ID * | id | ) |
Ensure we have a real user
Definition at line 238 of file lib_id.c.
References BLI_assert, CLOG_ERROR, Library::filepath_abs, id, ID_FAKE_USERS, ID::lib, LIB_TAG_EXTRAUSER, LIB_TAG_EXTRAUSER_SET, LOG, ID::name, ID::tag, and ID::us.
Referenced by BKE_image_ensure_viewer(), BKE_library_make_local(), BKE_library_update_ID_link_user(), BKE_main_id_refcount_recompute(), BKE_scene_add(), BKE_scene_duplicate(), BKE_workspace_add(), blo_find_main(), clip_id_remap(), direct_link_library(), ED_node_tree_push(), ED_node_tree_start(), ED_node_tree_update(), ED_space_clip_set_clip(), ED_space_clip_set_mask(), ED_space_image_set(), ED_space_image_set_mask(), foreach_libblock_make_usercounts_callback(), foreach_libblock_remap_callback(), id_refcount_recompute_callback(), id_us_min(), image_id_remap(), libblock_management_us_plus(), node_id_remap(), restore_pointer_user(), scene_blend_read_data(), SEQ_add_mask_strip(), SEQ_add_movieclip_strip(), SEQ_add_scene_strip(), text_id_remap(), window_manager_blend_read_data(), and workspace_blend_read_data().
| void id_us_min | ( | ID * | id | ) |
Definition at line 297 of file lib_id.c.
References BLI_assert, CLOG_ERROR, Library::filepath_abs, GS, id, ID_FAKE_USERS, ID_IP, id_us_ensure_real(), ID::lib, LIB_TAG_EXTRAUSER, LOG, ID::name, ID::tag, and ID::us.
Referenced by action_create_new(), action_to_animato(), ANIM_remove_empty_action_from_animdata(), animdata_copy_id_action(), animrecord_check_state(), background_image_remove_exec(), BCAnimation::BCAnimation(), BKE_animdata_free(), BKE_animdata_set_action(), BKE_animdata_transfer_by_basepath(), BKE_brush_add_gpencil(), BKE_freestyle_config_free(), BKE_freestyle_lineset_delete(), BKE_gpencil_brush_material_set(), BKE_gpencil_brush_preset_set(), BKE_gpencil_object_material_new(), BKE_gpencil_palette_ensure(), BKE_id_copy_for_duplicate(), BKE_id_free_us(), BKE_id_material_assign(), BKE_id_material_clear(), BKE_id_material_pop(), BKE_id_material_resize(), BKE_lib_override_library_clear(), BKE_lib_override_library_init(), BKE_library_update_ID_link_user(), BKE_mesh_assign_object(), BKE_mesh_from_nurbs_displist(), BKE_mesh_new_from_object_to_bmain(), BKE_mesh_nomain_to_mesh(), BKE_mesh_to_curve(), BKE_mesh_to_pointcloud(), BKE_nla_action_pushdown(), BKE_nla_tweakmode_exit(), BKE_nlastrip_free(), BKE_object_add_only_object(), BKE_object_material_assign(), BKE_object_material_resize(), BKE_object_material_slot_remove(), BKE_paint_brush_set(), BKE_paint_curve_set(), BKE_paint_init(), BKE_paint_palette_set(), BKE_paint_toolslots_brush_update_ex(), BKE_paint_toolslots_brush_validate(), BKE_pointcloud_to_mesh(), BKE_pose_channel_free_ex(), BKE_scene_add(), BKE_scene_duplicate(), BKE_text_add(), BKE_text_load_ex(), BKE_texture_mtex_add_id(), BKE_workspace_layout_remove(), BLO_update_defaults_startup_blend(), brush_add_exec(), brush_add_gpencil_exec(), brush_generic_tool_set(), brush_undo_preserve_cb(), cachefile_open_exec(), collection_add(), collection_child_remove(), collection_instance_fix_recursive(), collection_object_remove(), con_unlink_refs_cb(), copy_particle_systems_to_object(), DocumentImporter::create_instance_node(), do_version_layers_to_collections(), do_versions_ipos_to_animato(), duplibase_for_convert(), ED_mesh_join_objects_exec(), empty_drop_named_image_invoke(), eyedropper_add_palette_color(), font_open_exec(), foreach_libblock_remap_callback(), FRS_paste_active_lineset(), Freestyle::BlenderStrokeRenderer::GetStrokeShader(), gpencil_data_add_exec(), gpencil_data_unlink_exec(), gpencil_stroke_separate_exec(), id_fake_user_clear(), id_single_user(), IDP_AssignID(), IDP_FreePropertyContent_ex(), image_id_remap(), image_new_exec(), image_open_exec(), import_startjob(), ipo_to_animato(), lib_override_library_create_from(), lib_relocate_do(), libblock_management_us_min(), make_links_data_exec(), make_object_duplilist_real(), modifier_free_data_id_us_cb(), new_material_exec(), new_node_tree_exec(), new_particle_settings_exec(), new_texture_exec(), new_world_exec(), nlaedit_apply_scale_exec(), nlaedit_make_single_user_exec(), node_id_remap(), nodeRemoveNode(), object_convert_exec(), object_data_convert_curve_to_mesh(), object_make_local(), object_remove_particle_system(), object_unlink_data_exec(), open_exec(), paste_mtex_copybuf(), poselib_init_new(), poselib_unlink_exec(), restrictbutton_id_user_toggle(), scene_foreach_toolsettings_id_pointer_process(), separate_exec(), SEQ_effect_text_font_unload(), seq_sequence_free_ex(), sequencer_id_remap(), set_current_brush_texture(), set_current_linestyle_texture(), set_current_particle_texture(), shaderfx_free_data_id_us_cb(), single_obdata_users(), single_object_users_collection(), socket_id_user_decrement(), solve_camera_freejob(), template_id_cb(), unlink_material_fn(), unlink_texture_fn(), unlink_world_fn(), and MeshImporter::write_geometry().
| void id_us_plus | ( | ID * | id | ) |
Definition at line 288 of file lib_id.c.
References id_lib_extern(), and id_us_plus_no_lib().
Referenced by add_collections_to_scene(), add_loose_object_data_to_scene(), blender::io::alembic::AbcObjectReader::addCacheModifier(), BKE_animdata_copy(), BKE_animdata_merge_copy(), BKE_animdata_set_action(), BKE_gpencil_brush_material_set(), BKE_id_material_append(), BKE_id_material_assign(), BKE_id_materials_copy(), BKE_image_load_exists_ex(), BKE_lib_override_library_copy(), BKE_lib_override_library_init(), BKE_library_update_ID_link_user(), BKE_linestyle_alpha_modifier_copy(), BKE_linestyle_color_modifier_copy(), BKE_linestyle_thickness_modifier_copy(), BKE_mesh_assign_object(), BKE_mesh_from_nurbs_displist(), BKE_movieclip_file_add_exists_ex(), BKE_nla_tweakmode_enter(), BKE_nlastrip_copy(), BKE_nlastrip_new(), BKE_node_copy_ex(), BKE_object_add_for_data(), BKE_object_copy_particlesystem(), BKE_object_make_proxy(), BKE_object_material_assign(), BKE_paint_brush_set(), BKE_paint_copy(), BKE_paint_curve_set(), BKE_paint_palette_set(), BKE_paint_toolslots_brush_update_ex(), BKE_pose_channel_copy_data(), BKE_pose_copy_data_ex(), BKE_sound_new_file_exists_ex(), BKE_vfont_load_exists_ex(), BKE_view_layer_copy_data(), BKE_workspace_layout_add(), collection_child_add(), collection_instance_add_exec(), collection_instance_exec(), collection_object_add(), con_fix_copied_refs_cb(), copy_lineset(), MeshImporter::create_mesh_object(), ED_mesh_join_objects_exec(), empty_drop_named_image_invoke(), foreach_libblock_make_usercounts_callback(), FRS_paste_active_lineset(), Freestyle::BlenderStrokeRenderer::GenerateStrokeMesh(), gpencil_modifier_copy_data_id_us_cb(), id_copy_libmanagement_cb(), id_fake_user_set(), IDP_AssignID(), IDP_CopyID(), IDP_New(), image_id_remap(), init(), init_switch_view(), libblock_management_us_plus(), make_links_data_exec(), make_local_all__instance_indirect_unused(), mesh_separate_material_assign_mat_nr(), modifier_copy_data_id_us_cb(), node_add_collection_exec(), node_add_group_exec(), node_add_mask_exec(), node_add_object_exec(), node_add_texture_exec(), node_composit_init_rlayers(), node_id_remap(), node_init(), node_init_api_cryptomatte(), node_link_item_apply(), node_socket_copy_default_value(), object_add_or_copy_particle_system(), object_convert_exec(), object_data_convert_curve_to_mesh(), object_gpencil_add_exec(), paint_toolslots_init(), paste_mtex_copybuf(), pose_proxy_sync(), restrictbutton_id_user_toggle(), seq_dupli(), SEQ_effect_text_font_load(), sequencer_id_remap(), set_current_brush_texture(), set_current_linestyle_texture(), set_current_particle_texture(), blender::io::alembic::AbcObjectReader::setupObjectTransform(), shaderfx_copy_data_id_us_cb(), socket_id_user_increment(), solve_camera_freejob(), template_id_cb(), tracking_plane_tracks_copy(), tracking_tracks_copy(), txt_add_object(), and WM_operator_drop_load_path().
| void id_us_plus_no_lib | ( | ID * | id | ) |
Same as id_us_plus, but does not handle lib indirect -> extern. Only used by readfile.c so far, but simpler/safer to keep it here nonetheless.
Definition at line 272 of file lib_id.c.
References BLI_assert, id, LIB_TAG_EXTRAUSER, LIB_TAG_EXTRAUSER_SET, ID::tag, and ID::us.
Referenced by BKE_object_modifiers_lib_link_common(), brush_undo_preserve_cb(), id_refcount_recompute_callback(), id_us_plus(), lib_relocate_do(), scene_blend_read_lib(), and scene_foreach_toolsettings_id_pointer_process().
Pull an ID out of a library (make it local). Only call this for IDs that don't have other library users.
Definition at line 156 of file lib_id.c.
References BKE_id_new_name_validate(), BKE_key_from_id(), BKE_lib_libblock_session_uuid_renew(), BKE_library_foreach_ID_link(), DEG_id_tag_update_ex(), DEG_relations_tag_update(), ID::flag, FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, GS, id, Key::id, id_fake_user_clear(), ID_RECALC_COPY_ON_WRITE, IDWALK_READONLY, Main::is_memfile_undo_written, ID::lib, LIB_EMBEDDED_DATA, lib_id_clear_library_data_users_update_cb(), lib_id_library_local_paths(), LIB_INDIRECT_WEAK_LINK, LIB_TAG_EXTERN, LIB_TAG_INDIRECT, LIB_TAG_NO_MAIN, LIB_TAG_TEMP_MAIN, ID::name, NULL, ID::tag, and which_libbase().
Referenced by BKE_lib_id_clear_library_data(), BKE_lib_id_make_local_generic(), BKE_library_make_local(), and lib_id_expand_local_cb().
|
static |
Definition at line 141 of file lib_id.c.
References LibraryIDLinkCallbackData::bmain, DEG_id_tag_update_ex(), LibraryIDLinkCallbackData::id_owner, LibraryIDLinkCallbackData::id_pointer, ID_RECALC_COPY_ON_WRITE, ID_RECALC_TAG_FOR_UNDO, IDWALK_RET_NOP, IDWALK_RET_STOP_ITER, and LibraryIDLinkCallbackData::user_data.
Referenced by lib_id_clear_library_data_ex().
Ensure new (copied) ID is fully made local.
Definition at line 401 of file lib_id.c.
References BKE_lib_id_expand_local(), ID_IS_LINKED, ID::lib, and lib_id_library_local_paths().
Referenced by BKE_id_copy_ex().
|
static |
Definition at line 352 of file lib_id.c.
References BKE_idtype_idcode_is_linkable(), BLI_assert, LibraryIDLinkCallbackData::bmain, LibraryIDLinkCallbackData::cb_flag, GS, ID_IS_LINKED, id_lib_extern(), LibraryIDLinkCallbackData::id_pointer, LibraryIDLinkCallbackData::id_self, IDWALK_CB_EMBEDDED, IDWALK_CB_LOOPBACK, IDWALK_RET_NOP, lib_id_clear_library_data_ex(), and NULL.
Referenced by BKE_lib_id_expand_local().
This has to be called from each make_local_* func, we could call from BKE_lib_id_make_local() but then the make local functions would not be self contained. Also note that the id must have a library - campbell
Definition at line 130 of file lib_id.c.
References BKE_bpath_relocate_visitor(), BKE_bpath_traverse_id(), BKE_BPATH_TRAVERSE_SKIP_MULTIFILE, BKE_main_blendfile_path(), and lib.
Referenced by lib_id_clear_library_data_ex(), and lib_id_copy_ensure_local().
|
static |
Definition at line 799 of file lib_id.c.
References LibraryIDLinkCallbackData::cb_flag, LibraryIDLinkCallbackData::id_pointer, id_us_min(), IDWALK_CB_USER, and IDWALK_RET_NOP.
Referenced by BKE_libblock_management_usercounts_clear().
|
static |
Definition at line 785 of file lib_id.c.
References LibraryIDLinkCallbackData::cb_flag, LibraryIDLinkCallbackData::id_pointer, id_us_ensure_real(), id_us_plus(), IDWALK_CB_USER, IDWALK_CB_USER_ONE, and IDWALK_RET_NOP.
Referenced by BKE_libblock_management_main_add(), and BKE_libblock_management_usercounts_set().
|
static |
Definition at line 1801 of file lib_id.c.
References BLI_ghash_lookup(), BLI_gset_add(), BLI_gset_haskey(), BLI_gset_insert(), BLI_gset_remove(), MainIDRelationsEntry::from_ids, GS, ID_KE, IDWALK_CB_LOOPBACK, ID::lib, LIB_TAG_DOIT, ID::name, NULL, MainIDRelations::relations_from_pointers, and ID::tag.
Referenced by BKE_library_make_local().
|
static |
Definition at line 1137 of file lib_id.c.
Referenced by BKE_lib_libblock_session_uuid_ensure().
| IDTypeInfo IDType_ID_LINK_PLACEHOLDER |
Definition at line 93 of file lib_id.c.
Referenced by id_type_init().
|
static |
Definition at line 90 of file lib_id.c.
Referenced by BKE_library_make_local(), id_us_ensure_real(), and id_us_min().