Blender
V3.3
|
Go to the source code of this file.
Classes | |
struct | BPathForeachPathData |
Functions | |
Helpers to handle common cases from <tt>IDTypeInfo</tt>'s <tt>foreach_path</tt> functions. | |
bool | BKE_bpath_foreach_path_fixed_process (struct BPathForeachPathData *bpath_data, char *path) |
bool | BKE_bpath_foreach_path_dirfile_fixed_process (struct BPathForeachPathData *bpath_data, char *path_dir, char *path_file) |
bool | BKE_bpath_foreach_path_allocated_process (struct BPathForeachPathData *bpath_data, char **path) |
High level features. | |
void | BKE_bpath_missing_files_check (struct Main *bmain, struct ReportList *reports) |
void | BKE_bpath_missing_files_find (struct Main *bmain, const char *searchpath, struct ReportList *reports, bool find_all) |
void | BKE_bpath_relative_rebase (struct Main *bmain, const char *basedir_src, const char *basedir_dst, struct ReportList *reports) |
void | BKE_bpath_relative_convert (struct Main *bmain, const char *basedir, struct ReportList *reports) |
void | BKE_bpath_absolute_convert (struct Main *bmain, const char *basedir, struct ReportList *reports) |
void * | BKE_bpath_list_backup (struct Main *bmain, eBPathForeachFlag flag) |
void | BKE_bpath_list_restore (struct Main *bmain, eBPathForeachFlag flag, void *path_list_handle) |
void | BKE_bpath_list_free (void *path_list_handle) |
Core <tt>foreach_path</tt> API. | |
enum | eBPathForeachFlag { BKE_BPATH_FOREACH_PATH_ABSOLUTE = (1 << 0) , BKE_BPATH_FOREACH_PATH_SKIP_LINKED = (1 << 1) , BKE_BPATH_FOREACH_PATH_SKIP_PACKED = (1 << 2) , BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN = (1 << 3) , BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES = (1 << 5) , BKE_BPATH_FOREACH_PATH_SKIP_MULTIFILE = (1 << 8) , BKE_BPATH_FOREACH_PATH_RELOAD_EDITED = (1 << 9) } |
typedef enum eBPathForeachFlag | eBPathForeachFlag |
typedef bool(* | BPathForeachPathFunctionCallback) (struct BPathForeachPathData *bpath_data, char *r_path_dst, const char *path_src) |
typedef struct BPathForeachPathData | BPathForeachPathData |
void | BKE_bpath_foreach_path_id (BPathForeachPathData *bpath_data, struct ID *id) |
void | BKE_bpath_foreach_path_main (BPathForeachPathData *bpath_data) |
FILE_MAX
size, or allocated char buffers not bigger than FILE_MAX
. Definition in file BKE_bpath.h.
typedef struct BPathForeachPathData BPathForeachPathData |
Storage for common data needed across the BPath 'foreach_path' code.
typedef bool(* BPathForeachPathFunctionCallback) (struct BPathForeachPathData *bpath_data, char *r_path_dst, const char *path_src) |
Callback used to iterate over an ID's file paths.
path
s parameters should be considered as having a maximal FILE_MAX
string length.true
if the path has been changed, and in that case, result should be written into r_path_dst
. Definition at line 69 of file BKE_bpath.h.
typedef enum eBPathForeachFlag eBPathForeachFlag |
enum eBPathForeachFlag |
Enumerator | |
---|---|
BKE_BPATH_FOREACH_PATH_ABSOLUTE | Flags controlling the behavior of the generic BPath API. Ensures the |
BKE_BPATH_FOREACH_PATH_SKIP_LINKED | Skip paths of linked IDs. |
BKE_BPATH_FOREACH_PATH_SKIP_PACKED | Skip paths when their matching data is packed. |
BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN | Resolve tokens within a virtual filepath to a single, concrete, filepath. |
BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES | |
BKE_BPATH_FOREACH_PATH_SKIP_MULTIFILE | Flags not affecting the generic BPath API. Those may be used by specific IDTypeInfo This is needed for directory manipulation callbacks which might otherwise modify the same directory multiple times. |
BKE_BPATH_FOREACH_PATH_RELOAD_EDITED | Reload data (when the path is edited).
|
Definition at line 27 of file BKE_bpath.h.
void BKE_bpath_absolute_convert | ( | struct Main * | bmain, |
const char * | basedir, | ||
struct ReportList * | reports | ||
) |
Make all relative file paths in given bmain absolute, using given basedir as root.
Definition at line 564 of file bpath.c.
References absolute_convert_foreach_path_cb(), and bpath_absolute_relative_convert().
Referenced by BLO_write_file(), make_paths_absolute_exec(), and blender::bke::tests::TEST_F().
bool BKE_bpath_foreach_path_allocated_process | ( | struct BPathForeachPathData * | bpath_data, |
char ** | path | ||
) |
Run the callback on a path, replacing the content of the string as needed.
path | A pointer to a MEM-allocated string. If modified, it will be freed and replaced by a new allocated string. |
Definition at line 175 of file bpath.c.
References BPathForeachPathData::absolute_base_path, BLI_path_abs(), BLI_strdup(), BLI_strncpy(), BPathForeachPathData::callback_function, FILE_MAX, and MEM_freeN.
Referenced by text_foreach_path().
bool BKE_bpath_foreach_path_dirfile_fixed_process | ( | struct BPathForeachPathData * | bpath_data, |
char * | path_dir, | ||
char * | path_file | ||
) |
Run the callback on a (directory + file) path, replacing the content of the two strings as needed.
path_dir | A fixed, FILE_MAXDIR-sized char buffer. |
path_file | A fixed, FILE_MAXFILE-sized char buffer. |
Definition at line 149 of file bpath.c.
References BPathForeachPathData::absolute_base_path, BLI_join_dirfile(), BLI_path_abs(), BLI_split_dirfile(), BLI_strncpy(), BPathForeachPathData::callback_function, FILE_MAX, FILE_MAXDIR, and FILE_MAXFILE.
Referenced by seq_foreach_path_callback().
bool BKE_bpath_foreach_path_fixed_process | ( | struct BPathForeachPathData * | bpath_data, |
char * | path | ||
) |
Run the callback on a path, replacing the content of the string as needed.
path | A fixed, FILE_MAX-sized char buffer. |
Definition at line 121 of file bpath.c.
References BPathForeachPathData::absolute_base_path, BLI_path_abs(), BLI_strncpy(), BPathForeachPathData::callback_function, and FILE_MAX.
Referenced by BKE_bpath_foreach_path_id(), brush_foreach_path(), cache_file_foreach_path(), image_foreach_path(), library_foreach_path(), mesh_foreach_path(), movie_clip_foreach_path(), node_foreach_path(), object_foreach_path(), object_foreach_path_pointcache(), seq_foreach_path_callback(), sound_foreach_path(), vfont_foreach_path(), and volume_foreach_path().
void BKE_bpath_foreach_path_id | ( | BPathForeachPathData * | bpath_data, |
struct ID * | id | ||
) |
Run bpath_data.callback_function
on all paths contained in id
.
Definition at line 80 of file bpath.c.
References BPathForeachPathData::absolute_base_path, BKE_BPATH_FOREACH_PATH_ABSOLUTE, BKE_bpath_foreach_path_fixed_process(), BKE_bpath_foreach_path_id(), BKE_BPATH_FOREACH_PATH_SKIP_LINKED, BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES, BKE_idtype_get_info_from_id(), BLI_assert, BPathForeachPathData::bmain, BPathForeachPathData::flag, IDTypeInfo::foreach_path, id, bNodeTree::id, ID_BLEND_PATH, ID_IS_LINKED, LibraryWeakReference::library_filepath, ID::library_weak_reference, ntreeFromID(), and NULL.
Referenced by BKE_bpath_foreach_path_id(), BKE_bpath_foreach_path_main(), and lib_id_library_local_paths().
void BKE_bpath_foreach_path_main | ( | BPathForeachPathData * | bpath_data | ) |
Run bpath_data.callback_function
on all paths of all IDs in bmain
.
Definition at line 112 of file bpath.c.
References BKE_bpath_foreach_path_id(), BPathForeachPathData::bmain, FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, and id.
Referenced by BKE_bpath_list_backup(), BKE_bpath_list_restore(), BKE_bpath_missing_files_check(), BKE_bpath_missing_files_find(), BKE_bpath_relative_rebase(), bpath_absolute_relative_convert(), bpy_blend_paths(), clean_paths(), and has_external_files().
void* BKE_bpath_list_backup | ( | struct Main * | bmain, |
eBPathForeachFlag | flag | ||
) |
Temp backup of paths from all IDs in given bmain.
Definition at line 619 of file bpath.c.
References BKE_bpath_foreach_path_main(), bpath_list_append(), and MEM_callocN.
Referenced by BKE_blendfile_write_partial(), BLO_write_file(), and blender::bke::tests::TEST_F().
Free the temp backup of paths in path_list_handle.
Definition at line 641 of file bpath.c.
References BLI_assert, BLI_freelistN(), BLI_listbase_is_empty(), and MEM_freeN.
Referenced by BKE_blendfile_write_partial(), BLO_write_file(), and blender::bke::tests::TEST_F().
void BKE_bpath_list_restore | ( | struct Main * | bmain, |
eBPathForeachFlag | flag, | ||
void * | path_list_handle | ||
) |
Restore the temp backup of paths from path_list_handle into all IDs in given bmain.
Definition at line 631 of file bpath.c.
References BKE_bpath_foreach_path_main(), and bpath_list_restore().
Referenced by BKE_blendfile_write_partial(), BLO_write_file(), and blender::bke::tests::TEST_F().
void BKE_bpath_missing_files_check | ( | struct Main * | bmain, |
struct ReportList * | reports | ||
) |
Check for missing files.
Definition at line 220 of file bpath.c.
References BKE_BPATH_FOREACH_PATH_ABSOLUTE, BKE_bpath_foreach_path_main(), BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN, BKE_BPATH_FOREACH_PATH_SKIP_PACKED, BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES, and check_missing_files_foreach_path_cb().
Referenced by report_missing_files_exec().
void BKE_bpath_missing_files_find | ( | struct Main * | bmain, |
const char * | searchpath, | ||
struct ReportList * | reports, | ||
bool | find_all | ||
) |
Recursively search into given search directory, for all file paths of all IDs in given bmain, and replace existing paths as needed.
searchpath | The root directory in which the new filepaths should be searched for. |
find_all | If true , also search for files which current path is still valid, if false skip those still valid paths. |
Definition at line 368 of file bpath.c.
References BKE_BPATH_FOREACH_PATH_ABSOLUTE, BKE_bpath_foreach_path_main(), BKE_BPATH_FOREACH_PATH_RELOAD_EDITED, BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN, BKE_main_blendfile_path(), data, BPathFind_Data::find_all, missing_files_find_foreach_path_cb(), NULL, and BPathFind_Data::reports.
Referenced by find_missing_files_exec().
void BKE_bpath_relative_convert | ( | struct Main * | bmain, |
const char * | basedir, | ||
struct ReportList * | reports | ||
) |
Make all absolute file paths in given bmain relative to given basedir.
Definition at line 559 of file bpath.c.
References bpath_absolute_relative_convert(), and relative_convert_foreach_path_cb().
Referenced by BLO_write_file(), make_paths_relative_exec(), and blender::bke::tests::TEST_F().
void BKE_bpath_relative_rebase | ( | struct Main * | bmain, |
const char * | basedir_src, | ||
const char * | basedir_dst, | ||
struct ReportList * | reports | ||
) |
Rebase all relative file paths in given bmain from basedir_src to basedir_dst.
Definition at line 439 of file bpath.c.
References BKE_bpath_foreach_path_main(), BKE_BPATH_FOREACH_PATH_SKIP_LINKED, BKE_BPATH_FOREACH_PATH_SKIP_MULTIFILE, BKE_reportf(), BLI_assert, data, NULL, relative_rebase_foreach_path_cb(), RPT_INFO, and RPT_WARNING.
Referenced by BLO_write_file(), and blender::bke::tests::TEST_F().