80 #define FILEDIR_NBR_ENTRIES_UNSET -1
93 folder = folderlist->
last;
100 folder = folderlist->
last;
116 previous_folder = folderlist->
last;
119 if (previous_folder && previous_folder->
foldername) {
137 if (!folderlist->
last) {
141 folder = folderlist->
last;
170 for (folder = folderlist->
first; folder; folder = folder->
next) {
183 for (
FolderList *folder = folderlistn.
first; folder; folder = folder->next) {
194 if (history->browse_mode == browse_mode) {
300 #define FILELIST_ENTRYCACHESIZE_DEFAULT 1024
445 #define SPECIAL_IMG_SIZE 256
446 #define SPECIAL_IMG_ROWS 1
447 #define SPECIAL_IMG_COLS 7
498 return sort_data->
inverted ? -val : val;
653 size1 = entry1->
st.st_size;
654 size2 = entry2->
st.st_size;
697 const char *sufix1, *sufix2;
699 if (!(sufix1 = strstr(entry1->
relpath,
".blend.gz"))) {
700 sufix1 = strrchr(entry1->
relpath,
'.');
702 if (!(sufix2 = strstr(entry2->
relpath,
".blend.gz"))) {
703 sufix2 = strrchr(entry2->
relpath,
'.');
723 void *sort_cb =
NULL;
725 switch (filelist->
sort) {
746 &(
struct FileSortData){.inverted = (filelist->flags & FL_SORT_INVERT) != 0});
757 if ((filelist->
sort !=
sort) || (was_invert_sort != invert_sort)) {
770 if (filename[0] ==
'.' && !
ELEM(filename[1],
'.',
'\0')) {
774 int len = strlen(filename);
775 if ((
len > 0) && (filename[
len - 1] ==
'~')) {
784 if (!hidden && sep) {
787 BLI_strncpy(tmp_filename, filename,
sizeof(tmp_filename));
788 sep = tmp_filename + (sep - filename);
812 if ((filename[0] ==
'.') && (filename[1] ==
'\0')) {
817 if (filename[0] ==
'.' && filename[1] ==
'.' && filename[2] ==
'\0') {
847 if (
filter->filter_search[0] ==
'\0') {
852 return fnmatch(
filter->filter_search,
file->relpath, FNM_CASEFOLD) == 0;
861 if (
filter->filter_search[0] ==
'\0') {
866 return fnmatch(
filter->filter_search,
file->name, FNM_CASEFOLD) == 0;
913 const char *id_group,
929 if (!(filter_id &
filter->filter_id)) {
944 const ID *local_id =
file->local_data.id;
945 return local_id ? local_id->
asset_data :
file->imported_asset_data;
951 if (!
filter->asset_catalog_filter) {
955 "prepare_filter_asset_library() should only be called when the file browser is "
956 "in asset browser mode");
989 filter->asset_catalog_filter, asset_data)) {
993 if (
filter->filter_search[0] ==
'\0') {
999 char filter_search[66];
1003 filter_search[string_length - 1] =
'\0';
1063 int num_filtered = 0;
1090 filtered_tmp =
MEM_mallocN(
sizeof(*filtered_tmp) * (
size_t)num_files, __func__);
1095 filtered_tmp[num_filtered++] =
file;
1117 const bool do_filter,
1118 const bool hide_dot,
1119 const bool hide_parent,
1122 const bool filter_assets_only,
1123 const char *filter_glob,
1124 const char *filter_search)
1183 const bUUID *catalog_id)
1205 if (library_a->
type != library_b->
type) {
1212 return (library_ptr_a !=
NULL) &&
1222 if (!asset_library_ref) {
1232 "filelist asset library");
1253 #ifdef WITH_HEADLESS
1336 const bool ignore_libdir)
1343 return is_main ? ICON_FILE_PARENT : ICON_NONE;
1346 return ICON_UGLYPACKAGE;
1349 return ICON_FILE_BLEND;
1365 for (
int i = 0; i <
ARRAY_SIZE(categories); i++) {
1368 char *target = fullpath;
1369 if (
file->redirection_path) {
1370 target =
file->redirection_path;
1376 for (; tfsm; tfsm = tfsm->
next) {
1379 return (tfsm->
icon == ICON_FILE_FOLDER) ? ICON_NONE : tfsm->
icon;
1388 return ICON_FILE_CACHE;
1396 return (is_main ||
file->preview_icon_id) ? ICON_FILE_BLEND : ICON_BLENDER;
1399 return ICON_FILE_BACKUP;
1402 return ICON_FILE_IMAGE;
1405 return ICON_FILE_MOVIE;
1408 return ICON_FILE_SCRIPT;
1411 return ICON_FILE_SOUND;
1414 return ICON_FILE_FONT;
1417 return ICON_FILE_BLANK;
1420 return ICON_FILE_3D;
1423 return ICON_FILE_3D;
1426 return ICON_FILE_3D;
1429 return ICON_FILE_VOLUME;
1432 return ICON_FILE_3D;
1435 return ICON_FILE_TEXT;
1438 return ICON_FILE_ARCHIVE;
1442 if (
ret != ICON_NONE) {
1446 return is_main ? ICON_FILE_BLANK : ICON_NONE;
1458 return file->preview_icon_id ?
file->preview_icon_id :
1482 const bool do_change)
1493 const bool do_change)
1518 const bool UNUSED(do_change))
1552 for (entry =
array->entries.first; entry; entry = entry_next) {
1553 entry_next = entry->
next;
1586 for (entry = filelist_intern->
entries.
first; entry; entry = entry_next) {
1587 entry_next = entry->
next;
1600 int removed_counter = 0;
1612 return removed_counter;
1668 if (preview_taskdata->
preview) {
1758 if (preview_in_memory) {
1807 cache->
size = cache_size;
1834 entry_next = entry->
next;
1852 if (new_size != cache->
size) {
1858 if (new_size != cache->
size) {
1866 cache->
size = new_size;
1869 entry_next = entry->
next;
1897 switch (filelist->
type) {
1943 const bool do_asset_library,
1944 const bool do_cache,
1945 const bool do_selection)
1965 if (do_asset_library) {
1971 const bool do_asset_library,
1972 const bool do_cache,
1973 const bool do_selection)
1995 if (do_asset_library) {
2022 printf(
"Attempting to delete empty filelist.\n");
2066 const char *relpath,
2095 name = (
char *)relpath;
2113 return filelist->
check_dir_fn(filelist, (
char *)path,
false);
2122 const bool is_valid_path = filelist->
check_dir_fn(filelist, r_dir, !allow_invalid);
2212 ret->asset_data =
ret->id->asset_data;
2236 const size_t cache_size = cache->
size;
2326 #define FILE_UID_UNSET 0
2340 return unset_uid != uid;
2355 while (
size < window_size &&
size < 8192) {
2366 const int start_index,
2375 for (i = 0, idx = start_index; i <
size; i++, idx++, cursor++) {
2400 for (i = 0; i <
size; i++, cursor++) {
2403 printf(
"%s: release cacheidx %d (%%p %%s)\n",
2419 const size_t cache_size = cache->
size;
2422 int start_index =
max_ii(0, index - (cache_size / 2));
2423 int end_index =
min_ii(entries_num, index + (cache_size / 2));
2427 if ((index < 0) || (index >= entries_num)) {
2433 if ((end_index - start_index) < cache_size) {
2434 if (start_index == 0) {
2435 end_index =
min_ii(entries_num, start_index + cache_size);
2437 else if (end_index == entries_num) {
2438 start_index =
max_ii(0, end_index - cache_size);
2442 BLI_assert((end_index - start_index) <= cache_size);
2451 (end_index <= cache->block_start_index)) {
2462 if (idx1 + size1 > cache_size) {
2463 size2 = idx1 + size1 - cache_size;
2501 if (idx1 + size1 > cache_size) {
2502 size2 = idx1 + size1 - cache_size;
2508 cache->
block_cursor = (idx1 + size1 + size2) % cache_size;
2511 if (end_index < cache->block_end_index) {
2517 printf(
"\tcache releasing: [%d:%d] (%d)\n",
2524 if (idx1 + size1 > cache_size) {
2525 size2 = idx1 + size1 - cache_size;
2536 if (start_index < cache->block_start_index) {
2549 idx1 = cache_size - size1;
2577 if ((idx1 + size1) > cache_size) {
2579 size1 = cache_size - idx1;
2609 int block_index = cache->
block_cursor + (index - start_index);
2610 int offs_max =
max_ii(end_index - index, index - start_index);
2611 for (i = 0; i <= offs_max; i++) {
2614 int offs_idx = index + offs;
2615 if (start_index <= offs_idx && offs_idx < end_index) {
2616 int offs_block_idx = (block_index + offs) % (
int)cache_size;
2619 }
while ((offs = -offs) < 0);
2659 bool changed =
false;
2734 const size_t a = strlen(
str);
2738 if (
a == 0 ||
b >=
a) {
2794 path,
".ttf",
".ttc",
".pfb",
".otf",
".otc",
".woff",
".woff2",
NULL)) {
2816 path,
".obj",
".mtl",
".3ds",
".fbx",
".glb",
".gltf",
".svg",
".stl",
NULL)) {
2843 return ICON_FILE_BLEND;
2845 return ICON_FILE_BACKUP;
2847 return ICON_FILE_IMAGE;
2849 return ICON_FILE_MOVIE;
2851 return ICON_FILE_SCRIPT;
2853 return ICON_FILE_SOUND;
2855 return ICON_FILE_FONT;
2857 return ICON_FILE_BLANK;
2861 return ICON_FILE_3D;
2863 return ICON_FILE_TEXT;
2865 return ICON_FILE_ARCHIVE;
2867 return ICON_FILE_VOLUME;
2869 return ICON_FILE_BLANK;
2888 const uint org_entry_flag = entry_flag;
2897 entry_flag &= ~flag;
2908 if (entry_flag != org_entry_flag) {
2917 else if (entry_flag) {
2943 for (current_file = sel->
first; current_file <= sel->last; current_file++) {
2977 BLI_assert(index >= 0 && index < filelist->filelist.entries_filtered_num);
2985 return selection_state != 0;
3038 const char *filter_glob,
3040 const char *main_name,
3041 const bool skip_currpar)
3044 int entries_num = 0;
3060 entry->
st = files[i].
s;
3063 char *target = full_path;
3144 const char *group_name)
3155 const bool prefix_relpath_with_group_name,
3157 const char *group_name)
3160 if (prefix_relpath_with_group_name) {
3167 if (datablock_info && datablock_info->
asset_data) {
3178 const bool prefix_relpath_with_group_name,
3180 const char *group_name)
3182 for (
LinkNode *ln = datablock_infos; ln; ln = ln->
next) {
3185 entries, datablock_info, prefix_relpath_with_group_name, idcode, group_name);
3192 const bool prefix_relpath_with_group_name)
3199 prefix_relpath_with_group_name,
3227 const int read_from_index,
3230 int navigate_to_parent_len = 0;
3234 navigate_to_parent_len = 1;
3238 return read_from_index + navigate_to_parent_len;
3262 const bool group_came_from_path = group !=
NULL;
3272 const bool use_indexer = !group_came_from_path;
3275 int read_from_index = 0;
3277 dir, &indexer_entries, &read_from_index, indexer_runtime->
user_data);
3280 entries,
options, read_from_index, &indexer_entries);
3282 return entries_read;
3289 if (libfiledata ==
NULL) {
3297 int navigate_to_parent_len = 0;
3301 navigate_to_parent_len = 1;
3305 int datablock_len = 0;
3306 if (group_came_from_path) {
3318 const char *group_name = ln->link;
3325 int group_datablock_len;
3329 entries, group_datablock_infos,
true, idcode, group_name);
3332 &indexer_entries, group_datablock_infos, idcode);
3335 datablock_len += group_datablock_len;
3351 int added_entries_len = group_len + datablock_len + navigate_to_parent_len;
3352 return added_entries_len;
3359 static void filelist_readjob_main_recursive(
Main *bmain,
FileList *filelist)
3364 int a, fake, idcode, ok, totlib, totbl;
3381 if (filelist->dir[0] == 0) {
3383 # ifdef WITH_FREESTYLE
3420 # ifdef WITH_FREESTYLE
3473 if (!filelist->has_func) {
3474 if (idcode ==
ID_OB) {
3479 else if (idcode ==
ID_SCE) {
3487 files->entry->poin =
id;
3493 if (
id->
lib && fake) {
3552 int from_entries_num,
3556 if (from_entries_num <= 0) {
3572 const int current_recursion_level,
3585 if (!is_lib && (current_recursion_level >=
max_recursion) &&
3620 int dirs_done_count = 0, dirs_todo_count = 1;
3640 int entries_num = 0;
3648 subdir = td_dir->
dir;
3659 BLI_strncpy(rel_subdir, subdir,
sizeof(rel_subdir));
3663 bool is_lib =
false;
3666 if (!skip_currpar) {
3681 subdir, &entries, list_lib_options, &indexer_runtime);
3682 if (entries_num > 0) {
3689 subdir, &entries, filter_glob, do_lib, job_params->
main_name, skip_currpar);
3692 for (entry = entries.
first; entry; entry = entry->
next) {
3719 *progress = (
float)dirs_done_count / (
float)dirs_todo_count;
3777 char r_library_root_path[
FILE_MAX])
3783 r_library_root_path);
3826 int entries_num = 0;
3987 int entries_num, new_entries_num = 0;
4012 if (new_entries_num) {
4089 short dummy_stop =
false;
4090 short dummy_do_update =
false;
4091 float dummy_progress = 0.0f;
typedef float(TangentPoint)[2]
void BKE_asset_metadata_free(struct AssetMetaData **asset_data)
struct PreviewImage * BKE_asset_metadata_preview_get_from_id(const struct AssetMetaData *asset_data, const struct ID *owner_id)
struct AssetLibrary AssetLibrary
struct AssetLibrary * BKE_asset_library_load(const char *library_path)
bool BKE_asset_library_find_suitable_root_path_from_main(const struct Main *bmain, char r_library_path[768])
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
struct ImBuf * BKE_icon_imbuf_get_buffer(int icon_id) ATTR_WARN_UNUSED_RESULT
int BKE_icon_imbuf_create(struct ImBuf *ibuf) ATTR_WARN_UNUSED_RESULT
bool BKE_icon_delete(int icon_id)
struct ImBuf * BKE_previewimg_to_imbuf(struct PreviewImage *prv, int size)
bool BKE_previewimg_is_finished(const struct PreviewImage *prv, int size)
const char * BKE_idtype_idcode_to_name(short idcode)
uint64_t BKE_idtype_idcode_to_idfilter(short idcode)
short BKE_idtype_idcode_from_name(const char *idtype_name)
#define FOREACH_MAIN_ID_END
void BKE_main_unlock(struct Main *bmain)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
void BKE_main_lock(struct Main *bmain)
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
struct ListBase * which_libbase(struct Main *bmain, short type)
const char * BKE_main_blendfile_path_from_global(void)
struct bUserAssetLibrary * BKE_preferences_asset_library_find_from_index(const struct UserDef *userdef, int index) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
char * BLF_display_name_from_file(const char *filepath)
#define BLI_assert_msg(a, msg)
File and directory operations.
eFileAttributes BLI_file_attributes(const char *path)
#define FILE_ATTR_ANY_LINK
bool BLI_is_file(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
unsigned int BLI_filelist_dir_contents(const char *dir, struct direntry **r_filelist)
bool BLI_is_dir(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_filelist_free(struct direntry *filelist, unsigned int nrentries)
bool BLI_file_alias_target(const char *filepath, char *r_targetpath) ATTR_WARN_UNUSED_RESULT
Some types for dealing with directories.
void BLI_ghash_clear(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_intcmp(const void *a, const void *b)
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_ptr_new_ex(const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
unsigned int BLI_ghashutil_inthash_p(const void *ptr)
GHash * BLI_ghash_new_ex(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info, unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghash_remove(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void * BLI_ghash_popkey(GHash *gh, const void *key, GHashKeyFreeFP keyfreefp) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void ** BLI_ghash_lookup_p(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
void BLI_ghash_clear_ex(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp, unsigned int nentries_reserve)
int BLI_linklist_count(const LinkNode *list) ATTR_WARN_UNUSED_RESULT
void BLI_linklist_freeN(LinkNode *list)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void void BLI_movelisttolist(struct ListBase *dst, struct ListBase *src) ATTR_NONNULL(1
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void BLI_listbase_sort_r(ListBase *listbase, int(*cmp)(void *, const void *, const void *), void *thunk) ATTR_NONNULL(1
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
void copy_vn_i(int *array_tar, int size, int val)
bool BLI_path_parent_dir_until_exists(char *path) ATTR_NONNULL()
bool BLI_path_extension_check_array(const char *str, const char **ext_array) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
const char * BLI_path_basename(const char *path) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
void BLI_path_normalize_dir(const char *relabase, char *dir) ATTR_NONNULL(2)
#define FILENAME_IS_CURRENT(_n)
#define FILENAME_IS_CURRPAR(_n)
bool BLI_path_extension_check_glob(const char *str, const char *ext_fnmatch) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_extension_replace(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
bool BLI_path_extension_check(const char *str, const char *ext) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_contains(const char *container_path, const char *containee_path) ATTR_WARN_UNUSED_RESULT
int BLI_path_slash_ensure(char *string) ATTR_NONNULL()
void BLI_path_rel(char *file, const char *relfile) ATTR_NONNULL()
const char * BLI_path_slash_rfind(const char *string) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_extension_check_n(const char *str,...) ATTR_NONNULL(1) ATTR_SENTINEL(0)
#define FILENAME_IS_PARENT(_n)
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
void * BLI_stack_push_r(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void * BLI_stack_peek(BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_stack_is_empty(const BLI_Stack *stack) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLI_stack_free(BLI_Stack *stack) ATTR_NONNULL()
void BLI_stack_discard(BLI_Stack *stack) ATTR_NONNULL()
#define BLI_stack_new(esize, descr)
size_t size_t char * BLI_sprintfN(const char *__restrict format,...) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_PRINTF_FORMAT(1
#define STRNCPY_RLEN(dst, src)
char * BLI_strcasestr(const char *s, const char *find) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_strcasecmp(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_strcmp_ignore_pad(const char *str1, const char *str2, char pad) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_strcasecmp_natural(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy_ensure_pad(char *__restrict dst, const char *__restrict src, char pad, size_t maxncpy) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
void * BLI_task_pool_user_data(TaskPool *pool)
void BLI_task_pool_cancel(TaskPool *pool)
TaskPool * BLI_task_pool_create_background(void *userdata, eTaskPriority priority)
void BLI_task_pool_free(TaskPool *pool)
void BLI_task_pool_push(TaskPool *pool, TaskRunFunction run, void *taskdata, bool free_taskdata, TaskFreeFunction freedata)
void BLI_thread_queue_push(ThreadQueue *queue, void *work)
void BLI_mutex_end(ThreadMutex *mutex)
void * BLI_thread_queue_pop_timeout(ThreadQueue *queue, int ms)
void BLI_mutex_init(ThreadMutex *mutex)
void BLI_thread_queue_free(ThreadQueue *queue)
bool BLI_thread_queue_is_empty(ThreadQueue *queue)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_thread_queue_nowait(ThreadQueue *queue)
void BLI_mutex_unlock(ThreadMutex *mutex)
void * BLI_thread_queue_pop(ThreadQueue *queue)
ThreadQueue * BLI_thread_queue_init(void)
pthread_mutex_t ThreadMutex
#define POINTER_FROM_INT(i)
#define POINTER_AS_UINT(i)
#define UNUSED_VARS_NDEBUG(...)
#define POINTER_FROM_UINT(i)
Compatibility-like things for windows.
void BLI_windows_get_default_root_dir(char root_dir[4])
external readfile function prototypes.
BlendHandle * BLO_blendhandle_from_file(const char *filepath, struct BlendFileReadReport *reports)
struct BlendHandle BlendHandle
bool BLO_library_path_explode(const char *path, char *r_dir, char **r_group, char **r_name)
struct LinkNode * BLO_blendhandle_get_datablock_info(BlendHandle *bh, int ofblocktype, bool use_assets_only, int *r_tot_info_items)
bool BLO_has_bfile_extension(const char *str)
struct LinkNode * BLO_blendhandle_get_linkable_groups(BlendHandle *bh)
void BLO_blendhandle_close(BlendHandle *bh)
#define ID_IS_LINKED(_id)
@ FILE_TYPE_BLENDER_BACKUP
@ FILE_ENTRY_PREVIEW_LOADING
@ FILE_ENTRY_INVALID_PREVIEW
eFileSel_Params_AssetCatalogVisibility
#define FILE_MAX_LIBEXTRA
const char datatoc_prvicons_png[]
int datatoc_prvicons_png_size
@ FILE_INDEXER_ENTRIES_LOADED
void ED_file_indexer_entries_clear(FileIndexerEntries *indexer_entries)
void ED_file_indexer_entries_extend_from_datablock_infos(FileIndexerEntries *indexer_entries, const LinkNode *datablock_infos, int idcode)
@ FS_CATEGORY_SYSTEM_BOOKMARKS
struct FSMenu * ED_fsmenu_get(void)
struct FSMenuEntry * ED_fsmenu_get_category(struct FSMenu *fsmenu, FSMenuCategory category)
struct FileSelectParams * ED_fileselect_get_active_params(const struct SpaceFile *sfile)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint order
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
bool IMB_isanim(const char *filepath)
struct ImBuf * IMB_ibImageFromMemory(const unsigned char *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
Contains defines and structs used throughout the imbuf module.
const char * imb_ext_movie[]
const char * imb_ext_audio[]
const char * imb_ext_image[]
void IMB_thumb_locks_release(void)
void IMB_thumb_path_unlock(const char *path)
struct ImBuf * IMB_thumb_manage(const char *filepath, ThumbSize size, ThumbSource source)
void IMB_thumb_path_lock(const char *path)
struct ImBuf * IMB_thumb_read(const char *filepath, ThumbSize size)
void IMB_thumb_locks_acquire(void)
void IMB_thumb_ensure_translations(void)
Read Guarded memory(de)allocation.
#define MEM_reallocN(vmemh, len)
Platform independent time functions.
int UI_icon_from_idcode(int idcode)
@ WM_JOB_TYPE_FILESEL_READDIR
void file_ensure_updated_catalog_filter_data(FileAssetCatalogFilterSettingsHandle *filter_settings_handle, const ::AssetLibrary *asset_library)
FileAssetCatalogFilterSettingsHandle * file_create_asset_catalog_filter_settings()
bool file_is_asset_visible_in_catalog_filter_settings(const FileAssetCatalogFilterSettingsHandle *filter_settings_handle, const AssetMetaData *asset_data)
void file_delete_asset_catalog_filter_settings(FileAssetCatalogFilterSettingsHandle **filter_settings_handle)
bool file_set_asset_catalog_filter_settings(FileAssetCatalogFilterSettingsHandle *filter_settings_handle, eFileSel_Params_AssetCatalogVisibility catalog_visibility, ::bUUID catalog_id)
Provides wrapper around system-specific atomic primitives, and some extensions (faked-atomic operatio...
ATOMIC_INLINE uint32_t atomic_add_and_fetch_uint32(uint32_t *p, uint32_t x)
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void sort(btMatrix3x3 &U, btVector3 &sigma, btMatrix3x3 &V, int t)
Helper function of 3X3 SVD for sorting singular values.
CCL_NAMESPACE_BEGIN struct Options options
SyclQueue void void size_t num_bytes void
const FileIndexerType file_indexer_noop
struct FileAssetCatalogFilterSettingsHandle FileAssetCatalogFilterSettingsHandle
int ED_file_icon(const FileDirEntry *file)
#define FILELIST_ENTRYCACHESIZE_DEFAULT
static bool filelist_readjob_should_recurse_into_entry(const int max_recursion, const bool is_lib, const int current_recursion_level, FileListInternEntry *entry)
void filelist_set_asset_catalog_filter_options(FileList *filelist, eFileSel_Params_AssetCatalogVisibility catalog_visibility, const bUUID *catalog_id)
void filelist_tag_force_reset(FileList *filelist)
static void filelist_readjob_list_lib_add_from_indexer_entries(ListBase *entries, const FileIndexerEntries *indexer_entries, const bool prefix_relpath_with_group_name)
ImBuf * filelist_geticon_image(struct FileList *filelist, const int index)
int filelist_files_num_entries(FileList *filelist)
static void filelist_readjob_list_lib_add_datablock(ListBase *entries, const BLODataBlockInfo *datablock_info, const bool prefix_relpath_with_group_name, const int idcode, const char *group_name)
static int compare_tiebreaker(const FileListInternEntry *entry1, const FileListInternEntry *entry2)
static bool is_filtered_file_relpath(const FileListInternEntry *file, const FileListFilter *filter)
static void filelist_readjob_list_lib_add_datablocks(ListBase *entries, LinkNode *datablock_infos, const bool prefix_relpath_with_group_name, const int idcode, const char *group_name)
void filelist_free(struct FileList *filelist)
static void filelist_readjob_load_asset_library_data(FileListReadJob *job_params, short *do_update)
bool filelist_is_ready(struct FileList *filelist)
static bool filelist_checkdir_lib(struct FileList *UNUSED(filelist), char *r_dir, const bool do_change)
static void filelist_cache_previews_clear(FileListEntryCache *cache)
void filelist_tag_needs_filtering(FileList *filelist)
void filelist_cache_previews_set(FileList *filelist, const bool use_previews)
static void filelist_readjob_asset_library(struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
static void prepare_filter_asset_library(const FileList *filelist, FileListFilter *filter)
static FileDirEntry * filelist_geticon_get_file(struct FileList *filelist, const int index)
void filelist_setsorting(struct FileList *filelist, const short sort, bool invert_sort)
static void filelist_cache_init(FileListEntryCache *cache, size_t cache_size)
int filelist_needs_reading(FileList *filelist)
static void filelist_cache_preview_runf(TaskPool *__restrict pool, void *taskdata)
#define FILEDIR_NBR_ENTRIES_UNSET
void folder_history_list_ensure_for_active_browse_mode(SpaceFile *sfile)
void filelist_sort(struct FileList *filelist)
void filelist_clear_ex(struct FileList *filelist, const bool do_asset_library, const bool do_cache, const bool do_selection)
struct FileListInternEntry FileListInternEntry
int filelist_geticon(struct FileList *filelist, const int index, const bool is_main)
static void filelist_clear_main_files(FileList *filelist, const bool do_asset_library, const bool do_cache, const bool do_selection)
static bool is_filtered_main(FileListInternEntry *file, const char *UNUSED(dir), FileListFilter *filter)
void filelist_entry_select_index_set(FileList *filelist, const int index, FileSelType select, uint flag, FileCheckType check)
struct FileListEntryPreviewTaskData FileListEntryPreviewTaskData
@ FL_FORCE_RESET_MAIN_FILES
static ImBuf * gSpecialFileImages[SPECIAL_IMG_MAX]
int filelist_file_find_path(struct FileList *filelist, const char *filename)
bool filelist_islibrary(struct FileList *filelist, char *dir, char **r_group)
@ SPECIAL_IMG_DRIVE_FIXED
@ SPECIAL_IMG_DRIVE_ATTACHED
@ SPECIAL_IMG_DRIVE_REMOTE
static void filelist_readjob_main_assets(struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
@ FILELIST_TAGS_USES_MAIN_DATA
@ FILELIST_TAGS_NO_THREADS
static void filelist_readjob_dir(struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
static AssetMetaData * filelist_file_internal_get_asset_data(const FileListInternEntry *file)
void filelist_clear_from_reset_tag(FileList *filelist)
const char * folderlist_peeklastdir(ListBase *folderlist)
static void filelist_direntryarr_free(FileDirEntryArr *array)
bool filelist_cache_previews_running(FileList *filelist)
static bool is_filtered_lib_type(FileListInternEntry *file, const char *root, FileListFilter *filter)
static void filelist_readjob_main(struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
void filelist_freelib(struct FileList *filelist)
static void filelist_cache_previews_push(FileList *filelist, FileDirEntry *entry, const int index)
static int compare_apply_inverted(int val, const struct FileSortData *sort_data)
static void parent_dir_until_exists_or_default_root(char *dir)
void filelist_setfilter_options(FileList *filelist, const bool do_filter, const bool hide_dot, const bool hide_parent, const uint64_t filter, const uint64_t filter_id, const bool filter_assets_only, const char *filter_glob, const char *filter_search)
static bool filelist_checkdir_dir(struct FileList *UNUSED(filelist), char *r_dir, const bool do_change)
struct FileListFilter FileListFilter
void filelist_entry_parent_select_set(FileList *filelist, FileSelType select, uint flag, FileCheckType check)
void filelist_entries_select_index_range_set(FileList *filelist, FileSelection *sel, FileSelType select, uint flag, FileCheckType check)
struct FileListEntryCache FileListEntryCache
void filelist_setlibrary(FileList *filelist, const AssetLibraryReference *asset_library_ref)
static int filelist_readjob_list_dir(const char *root, ListBase *entries, const char *filter_glob, const bool do_lib, const char *main_name, const bool skip_currpar)
static int filelist_readjob_list_lib(const char *root, ListBase *entries, const ListLibOptions options, FileIndexer *indexer_runtime)
static void filelist_cache_previews_free(FileListEntryCache *cache)
static void filelist_asset_library_path(const FileListReadJob *job_params, char r_library_root_path[FILE_MAX])
void folderlist_popdir(struct ListBase *folderlist, char *dir)
uint filelist_entry_select_index_get(FileList *filelist, const int index, FileCheckType check)
static uint64_t groupname_to_filter_id(const char *group)
BlendHandle * filelist_lib(struct FileList *filelist)
void folder_history_list_free(SpaceFile *sfile)
bool filelist_cache_previews_done(FileList *filelist)
static int groupname_to_code(const char *group)
void filelist_setdir(struct FileList *filelist, char *r_dir)
int folderlist_clear_next(struct SpaceFile *sfile)
static bool is_filtered_lib(FileListInternEntry *file, const char *root, FileListFilter *filter)
void filelist_clear(FileList *filelist)
static void filelist_readjob_main_assets_add_items(FileListReadJob *job_params, short *UNUSED(stop), short *do_update, float *UNUSED(progress))
FileList * filelist_new(short type)
void folderlist_pushdir(ListBase *folderlist, const char *dir)
struct FileListReadJob FileListReadJob
static void filelist_readjob_endjob(void *flrjv)
ListBase folder_history_list_duplicate(ListBase *listbase)
struct FolderList FolderList
static void filelist_file_release_entry(FileList *filelist, FileDirEntry *entry)
struct FileListIntern FileListIntern
static int filelist_intern_free_main_files(FileListIntern *filelist_intern)
static void filelist_cache_clear(FileListEntryCache *cache, size_t new_size)
ID * filelist_file_get_id(const FileDirEntry *file)
int ED_file_extension_icon(const char *path)
static void filelist_cache_preview_freef(TaskPool *__restrict UNUSED(pool), void *taskdata)
AssetLibrary * filelist_asset_library(FileList *filelist)
static int compare_extension(void *user_data, const void *a1, const void *a2)
static bool is_filtered_file(FileListInternEntry *file, const char *UNUSED(root), FileListFilter *filter)
static int compare_size(void *user_data, const void *a1, const void *a2)
void filelist_setrecursion(struct FileList *filelist, const int recursion_level)
static void filelist_readjob_lib(struct FileListReadJob *job_params, short *stop, short *do_update, float *progress)
static FileListInternEntry * filelist_readjob_list_lib_navigate_to_parent_entry_create(void)
bool filelist_cache_previews_update(FileList *filelist)
static void filelist_readjob_startjob(void *flrjv, short *stop, short *do_update, float *progress)
static bool is_filtered_asset(FileListInternEntry *file, FileListFilter *filter)
void folderlist_free(ListBase *folderlist)
static int compare_name(void *user_data, const void *a1, const void *a2)
static void filelist_entry_free(FileDirEntry *entry)
void filelist_settype(FileList *filelist, short type)
static void filelist_readjob_do(const bool do_lib, FileListReadJob *job_params, const short *stop, short *do_update, float *progress)
static void filelist_intern_entry_free(FileListInternEntry *entry)
int filelist_file_find_id(const FileList *filelist, const ID *id)
static void filelist_cache_free(FileListEntryCache *cache)
static bool filelist_contains_main(const FileList *filelist, const Main *bmain)
static void filelist_clear_asset_library(FileList *filelist)
struct FileIndexer FileIndexer
static int compare_direntry_generic(const FileListInternEntry *entry1, const FileListInternEntry *entry2)
static char * fileentry_uiname(const char *root, const char *relpath, const eFileSel_File_Types typeflag, char *buff)
bool filelist_uid_is_set(const FileUID uid)
void filelist_readjob_stop(FileList *filelist, wmWindowManager *wm)
struct FileListEntryPreview FileListEntryPreview
bool filelist_file_cache_block(struct FileList *filelist, const int index)
static void filelist_readjob_update(void *flrjv)
static FileDirEntry * filelist_file_create_entry(FileList *filelist, const int index)
static bool is_filtered_main_assets(FileListInternEntry *file, const char *UNUSED(dir), FileListFilter *filter)
static bool filelist_compare_asset_libraries(const AssetLibraryReference *library_a, const AssetLibraryReference *library_b)
void filelist_init_icons(void)
static ListBase folderlist_duplicate(ListBase *folderlist)
static void filelist_cache_preview_ensure_running(FileListEntryCache *cache)
static int filelist_geticon_ex(const FileDirEntry *file, const char *root, const bool is_main, const bool ignore_libdir)
static void filelist_file_cache_block_release(struct FileList *filelist, const int size, int cursor)
void filelist_file_cache_slidingwindow_set(FileList *filelist, size_t window_size)
static bool filelist_file_cache_block_create(FileList *filelist, const int start_index, const int size, int cursor)
static bool is_filtered_file_type(const FileListInternEntry *file, const FileListFilter *filter)
ImBuf * filelist_geticon_image_ex(const FileDirEntry *file)
uint filelist_entry_select_set(const FileList *filelist, const FileDirEntry *entry, FileSelType select, uint flag, FileCheckType check)
static bool is_hidden_dot_filename(const char *filename, const FileListInternEntry *file)
FileDirEntry * filelist_file(struct FileList *filelist, int index)
static bool filelist_checkdir_main_assets(struct FileList *UNUSED(filelist), char *UNUSED(r_dir), const bool UNUSED(do_change))
static int compare_date(void *user_data, const void *a1, const void *a2)
int ED_path_extension_type(const char *path)
bool filelist_pending(struct FileList *filelist)
int filelist_readjob_running(FileList *filelist, wmWindowManager *wm)
void filelist_filter(FileList *filelist)
static bool is_filtered_hidden(const char *filename, const FileListFilter *filter, const FileListInternEntry *file)
void filelist_tag_force_reset_mainfiles(FileList *filelist)
static void filelist_entry_clear(FileDirEntry *entry)
static bool is_filtered_file_name(const FileListInternEntry *file, const FileListFilter *filter)
static FileFolderHistory * folder_history_find(const SpaceFile *sfile, eFileBrowse_Mode browse_mode)
bool filelist_needs_reset_on_main_changes(const FileList *filelist)
int filelist_files_ensure(FileList *filelist)
static bool is_filtered_asset_library(FileListInternEntry *file, const char *root, FileListFilter *filter)
bool filelist_entry_is_selected(FileList *filelist, const int index)
static void filelist_readjob_recursive_dir_add_items(const bool do_lib, FileListReadJob *job_params, const short *stop, short *do_update, float *progress)
FileDirEntry * filelist_file_ex(struct FileList *filelist, const int index, const bool use_request)
static bool filelist_checkdir_main(struct FileList *filelist, char *r_dir, const bool do_change)
void filelist_setindexer(FileList *filelist, const FileIndexerType *indexer)
ImBuf * filelist_getimage(struct FileList *filelist, const int index)
ImBuf * filelist_file_getimage(const FileDirEntry *file)
static void folder_history_entry_free(SpaceFile *sfile, FileFolderHistory *history)
bool filelist_needs_force_reset(FileList *filelist)
static bool filelist_readjob_is_partial_read(const FileListReadJob *read_job)
static void filelist_readjob_append_entries(FileListReadJob *job_params, ListBase *from_entries, int from_entries_num, short *do_update)
bool filelist_is_dir(struct FileList *filelist, const char *path)
static int filelist_readjob_list_lib_populate_from_index(ListBase *entries, const ListLibOptions options, const int read_from_index, const FileIndexerEntries *indexer_entries)
void filelist_readjob_start(FileList *filelist, const int space_notifier, const bContext *C)
static bool is_filtered_id_file_type(const FileListInternEntry *file, const char *id_group, const char *name, const FileListFilter *filter)
static void filelist_readjob_free(void *flrjv)
static bool filelist_intern_entry_is_main_file(const FileListInternEntry *intern_entry)
static void filelist_intern_free(FileListIntern *filelist_intern)
uint filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
static bool asset_tag_matches_filter(const char *filter_search, const AssetMetaData *asset_data)
void filelist_uid_unset(FileUID *r_uid)
static bool file_is_blend_backup(const char *str)
static FileUID filelist_uid_generate(FileList *filelist)
void filelist_free_icons(void)
const char * filelist_dir(struct FileList *filelist)
static FileListInternEntry * filelist_readjob_list_lib_group_create(const int idcode, const char *group_name)
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
ccl_global const KernelWorkTile * tile
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken preview("preview", pxr::TfToken::Immortal)
static void update(bNodeTree *ntree)
unsigned __int64 uint64_t
User defined tag. Currently only used by assets, could be used more often at some point....
struct AssetMetaData * asset_data
struct ReportList * reports
struct FileDirEntry * next
struct LinkNode * entries
struct BLODataBlockInfo datablock_info
FileIndexerUpdateIndexFunc update_index
FileIndexerFinishedFunc filelist_finished
FileIndexerReadIndexFunc read_index
FileIndexerFreeUserDataFunc free_user_data
FileIndexerInitUserDataFunc init_user_data
const FileIndexerType * callbacks
ThreadQueue * previews_done
int * misc_entries_indices
FileDirEntry ** block_entries
FileListEntryPreview * preview
char filter_glob[FILE_MAXFILE]
FileAssetCatalogFilterSettingsHandle * asset_catalog_filter
PreviewImage * preview_image
eFileAttributes attributes
struct FileListInternEntry * next
struct FileListInternEntry::@527 local_data
struct FileListInternEntry * prev
AssetMetaData * imported_asset_data
FileListInternEntry ** filtered
struct FileList * filelist
struct FileList * tmp_filelist
struct AssetLibrary * asset_library
struct BlendHandle * libfiledata
bool(* check_dir_fn)(struct FileList *, char *, const bool)
bool(* filter_fn)(struct FileListInternEntry *, const char *, FileListFilter *)
AssetLibraryReference * asset_library_ref
struct FileListIntern filelist_intern
struct FileListEntryCache filelist_cache
void(* read_job_fn)(struct FileListReadJob *, short *, short *, float *)
const struct FileIndexerType * indexer
void(* prepare_filter_fn)(const struct FileList *, FileListFilter *)
FileListFilter filter_data
struct AssetMetaData * asset_data
ListBase folder_histories
Universally Unique Identifier according to RFC4122.
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_kill_type(struct wmWindowManager *wm, const void *owner, int job_type)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
bool WM_jobs_test(const wmWindowManager *wm, const void *owner, int job_type)
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_type)