90 #define FILEDIR_NBR_ENTRIES_UNSET -1
101 const char *prev_dir;
103 folder = folderlist->
last;
110 folder = folderlist->
last;
126 previous_folder = folderlist->
last;
129 if (previous_folder && previous_folder->
foldername) {
147 if (!folderlist->
last) {
151 folder = folderlist->
last;
181 for (folder = folderlist->
first; folder; folder = folder->
next) {
194 for (
FolderList *folder = folderlistn.
first; folder; folder = folder->next) {
205 if (history->browse_mode == browse_mode) {
312 #define FILELIST_ENTRYCACHESIZE_DEFAULT 1024
443 #define SPECIAL_IMG_SIZE 256
444 #define SPECIAL_IMG_ROWS 1
445 #define SPECIAL_IMG_COLS 7
462 const char *main_name,
469 const char *main_name,
476 const char *main_name,
483 const char *main_name,
504 return sort_data->
inverted ? -val : val;
574 name1 = entry1->
name;
575 name2 = entry2->
name;
602 name1 = entry1->
name;
603 name2 = entry2->
name;
621 size1 = entry1->
st.st_size;
622 size2 = entry2->
st.st_size;
630 name1 = entry1->
name;
631 name2 = entry2->
name;
669 const char *sufix1, *sufix2;
671 if (!(sufix1 = strstr(entry1->
relpath,
".blend.gz"))) {
672 sufix1 = strrchr(entry1->
relpath,
'.');
674 if (!(sufix2 = strstr(entry2->
relpath,
".blend.gz"))) {
675 sufix2 = strrchr(entry2->
relpath,
'.');
689 name1 = entry1->
name;
690 name2 = entry2->
name;
698 void *sort_cb =
NULL;
700 switch (filelist->
sort) {
721 &(
struct FileSortData){.inverted = (filelist->flags & FL_SORT_INVERT) != 0});
732 if ((filelist->
sort !=
sort) || (was_invert_sort != invert_sort)) {
745 if (filename[0] ==
'.' && !
ELEM(filename[1],
'.',
'\0')) {
749 int len = strlen(filename);
750 if ((
len > 0) && (filename[
len - 1] ==
'~')) {
759 if (!hidden && sep) {
762 BLI_strncpy(tmp_filename, filename,
sizeof(tmp_filename));
763 sep = tmp_filename + (sep - filename);
787 if ((filename[0] ==
'.') && (filename[1] ==
'\0')) {
792 if (filename[0] ==
'.' && filename[1] ==
'.' && filename[2] ==
'\0') {
845 if (is_filtered && (
filter->filter_search[0] !=
'\0')) {
846 if (fnmatch(
filter->filter_search,
file->relpath, FNM_CASEFOLD) != 0) {
856 const char *id_group,
877 if (is_filtered && id_group) {
883 if (!(filter_id &
filter->filter_id)) {
890 if (is_filtered && (
filter->filter_search[0] !=
'\0')) {
891 if (fnmatch(
filter->filter_search,
file->relpath, FNM_CASEFOLD) != 0) {
939 int num_filtered = 0;
962 filtered_tmp =
MEM_mallocN(
sizeof(*filtered_tmp) * (
size_t)num_files, __func__);
967 filtered_tmp[num_filtered++] =
file;
989 const bool do_filter,
991 const bool hide_parent,
994 const bool filter_assets_only,
995 const char *filter_glob,
996 const char *filter_search)
1051 if (library_a->
type != library_b->
type) {
1058 return (library_ptr_a !=
NULL) &&
1071 if (!asset_library) {
1081 "filelist asset library");
1102 #ifdef WITH_HEADLESS
1185 const bool ignore_libdir)
1192 return is_main ? ICON_FILE_PARENT : ICON_NONE;
1195 return ICON_UGLYPACKAGE;
1198 return ICON_FILE_BLEND;
1214 for (
int i = 0; i <
ARRAY_SIZE(categories); i++) {
1217 char *target = fullpath;
1218 if (
file->redirection_path) {
1219 target =
file->redirection_path;
1225 for (; tfsm; tfsm = tfsm->
next) {
1228 return (tfsm->
icon == ICON_FILE_FOLDER) ? ICON_NONE : tfsm->
icon;
1237 return ICON_FILE_CACHE;
1245 return ICON_FILE_BLEND;
1248 return ICON_FILE_BACKUP;
1251 return ICON_FILE_IMAGE;
1254 return ICON_FILE_MOVIE;
1257 return ICON_FILE_SCRIPT;
1260 return ICON_FILE_SOUND;
1263 return ICON_FILE_FONT;
1266 return ICON_FILE_BLANK;
1269 return ICON_FILE_3D;
1272 return ICON_FILE_3D;
1275 return ICON_FILE_3D;
1278 return ICON_FILE_VOLUME;
1281 return ICON_FILE_3D;
1284 return ICON_FILE_TEXT;
1287 return ICON_FILE_ARCHIVE;
1291 if (
ret != ICON_NONE) {
1295 return is_main ? ICON_FILE_BLANK : ICON_NONE;
1307 return file->preview_icon_id ?
file->preview_icon_id :
1326 const bool do_change)
1337 const bool do_change)
1362 const bool UNUSED(do_change))
1417 else if (entry->
entry) {
1433 for (entry =
array->entries.first; entry; entry = entry_next) {
1434 entry_next = entry->
next;
1443 array->entry_idx_start = -1;
1444 array->entry_idx_end = -1;
1469 for (entry = filelist_intern->
entries.
first; entry; entry = entry_next) {
1470 entry_next = entry->
next;
1505 else if (preview->
flags &
1544 if (preview !=
NULL) {
1618 preview->
index = index;
1628 preview_taskdata->
preview = preview;
1655 cache->
size = cache_size;
1680 entry_next = entry->
next;
1698 if (new_size != cache->
size) {
1704 if (new_size != cache->
size) {
1712 cache->
size = new_size;
1715 entry_next = entry->
next;
1743 switch (filelist->
type) {
1799 printf(
"Attempting to delete empty filelist.\n");
1833 const char *relpath,
1852 name = (
char *)relpath;
1870 return filelist->
check_dir_fn(filelist, (
char *)path,
false);
1882 const bool is_valid_path = filelist->
check_dir_fn(filelist, r_dir, !allow_invalid);
1965 memcpy(
ret->uuid, entry->
uuid,
sizeof(
ret->uuid));
1975 ret->asset_data =
ret->id->asset_data;
1997 const size_t cache_size = cache->
size;
2094 if (memcmp(entry->
uuid, uuid,
sizeof(entry->
uuid)) == 0) {
2110 while (
size < window_size &&
size < 8192) {
2121 const int start_index,
2130 for (i = 0, idx = start_index; i <
size; i++, idx++, cursor++) {
2155 for (i = 0; i <
size; i++, cursor++) {
2158 printf(
"%s: release cacheidx %d (%%p %%s)\n",
2175 const size_t cache_size = cache->
size;
2178 int start_index =
max_ii(0, index - (cache_size / 2));
2179 int end_index =
min_ii(nbr_entries, index + (cache_size / 2));
2183 if ((index < 0) || (index >= nbr_entries)) {
2189 if ((end_index - start_index) < cache_size) {
2190 if (start_index == 0) {
2191 end_index =
min_ii(nbr_entries, start_index + cache_size);
2193 else if (end_index == nbr_entries) {
2194 start_index =
max_ii(0, end_index - cache_size);
2198 BLI_assert((end_index - start_index) <= cache_size);
2207 (end_index <= cache->block_start_index)) {
2218 if (idx1 + size1 > cache_size) {
2219 size2 = idx1 + size1 - cache_size;
2257 if (idx1 + size1 > cache_size) {
2258 size2 = idx1 + size1 - cache_size;
2264 cache->
block_cursor = (idx1 + size1 + size2) % cache_size;
2267 if (end_index < cache->block_end_index) {
2273 printf(
"\tcache releasing: [%d:%d] (%d)\n",
2280 if (idx1 + size1 > cache_size) {
2281 size2 = idx1 + size1 - cache_size;
2292 if (start_index < cache->block_start_index) {
2305 idx1 = cache_size - size1;
2333 if ((idx1 + size1) > cache_size) {
2335 size1 = cache_size - idx1;
2365 for (i = 0; ((index + i) < end_index) || ((index - i) >= start_index); i++) {
2366 if ((index - i) >= start_index) {
2367 const int idx = (cache->
block_cursor + (index - start_index) - i) % cache_size;
2370 if ((index + i) < end_index) {
2371 const int idx = (cache->
block_cursor + (index - start_index) + i) % cache_size;
2412 bool changed =
false;
2471 const size_t a = strlen(
str);
2475 if (
a == 0 || b >=
a) {
2573 return ICON_FILE_BLEND;
2575 return ICON_FILE_BACKUP;
2577 return ICON_FILE_IMAGE;
2579 return ICON_FILE_MOVIE;
2581 return ICON_FILE_SCRIPT;
2583 return ICON_FILE_SOUND;
2585 return ICON_FILE_FONT;
2587 return ICON_FILE_BLANK;
2591 return ICON_FILE_3D;
2593 return ICON_FILE_TEXT;
2595 return ICON_FILE_ARCHIVE;
2597 return ICON_FILE_VOLUME;
2599 return ICON_FILE_BLANK;
2617 const uint org_entry_flag = entry_flag;
2626 entry_flag &= ~flag;
2637 if (entry_flag != org_entry_flag) {
2646 else if (entry_flag) {
2648 memcpy(key, entry->
uuid,
sizeof(entry->
uuid));
2673 for (current_file = sel->
first; current_file <= sel->last; current_file++) {
2706 BLI_assert(index >= 0 && index < filelist->filelist.nbr_entries_filtered);
2714 return selection_state != 0;
2771 const char *filter_glob,
2773 const char *main_name,
2774 const bool skip_currpar)
2777 int nbr_files, nbr_entries = 0;
2793 entry->
st = files[i].
s;
2796 char *target = full_path;
2868 int i, nitems, idcode = 0, nbr_entries = 0;
2882 if (libfiledata ==
NULL) {
2899 if (!skip_currpar) {
2907 for (i = 0, ln = (datablock_infos ? datablock_infos :
names); i < nitems; i++, ln = ln->
next) {
2909 const char *blockname = info ? info->
name : ln->
link;
2919 if (!(group && idcode)) {
2939 static void filelist_readjob_main_recursive(
Main *bmain,
FileList *filelist)
2944 int a, fake, idcode, ok, totlib, totbl;
2961 if (filelist->dir[0] == 0) {
2963 # ifdef WITH_FREESTYLE
3000 # ifdef WITH_FREESTYLE
3053 if (!filelist->has_func) {
3054 if (idcode ==
ID_OB) {
3059 else if (idcode ==
ID_SCE) {
3074 if (
id->
lib && fake) {
3111 const char *main_name,
3124 int nbr_done_dirs = 0, nbr_todo_dirs = 1;
3145 int nbr_entries = 0;
3146 bool is_lib = do_lib;
3150 int recursion_level;
3154 subdir = td_dir->
dir;
3155 recursion_level = td_dir->
level;
3156 skip_currpar = (recursion_level > 1);
3165 BLI_strncpy(rel_subdir, subdir,
sizeof(rel_subdir));
3175 subdir, &entries, filter_glob, do_lib, main_name, skip_currpar);
3178 for (entry = entries.
first; entry; entry = entry->
next) {
3198 if (max_recursion && (is_lib || (recursion_level <= max_recursion))) {
3202 else if (!is_lib && (recursion_level >= max_recursion) &&
3211 td_dir->
level = recursion_level + 1;
3230 *progress = (
float)nbr_done_dirs / (
float)nbr_todo_dirs;
3246 const char *main_name,
3257 const char *main_name,
3268 const char *main_name,
3283 const char *
UNUSED(main_name),
3298 int nbr_entries = 0;
3385 int nbr_entries, new_nbr_entries = 0;
3401 if (new_nbr_entries) {
3468 short dummy_stop =
false;
3469 short dummy_do_update =
false;
3470 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 Scene * CTX_data_scene(const bContext *C)
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
struct ImBuf * BKE_previewimg_to_imbuf(struct PreviewImage *prv, const int size)
bool BKE_previewimg_is_finished(const struct PreviewImage *prv, const int size)
bool BKE_icon_delete(const int icon_id)
const char * BKE_idtype_idcode_to_name(const short idcode)
short BKE_idtype_idcode_from_name(const char *idtype_name)
uint64_t BKE_idtype_idcode_to_idfilter(const short idcode)
#define FOREACH_MAIN_ID_END
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
#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
File and directory operations.
eFileAttributes BLI_file_attributes(const char *path)
#define FILE_ATTR_ANY_LINK
void BLI_filelist_free(struct direntry *filelist, const unsigned int nrentries)
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()
bool BLI_file_alias_target(const char *filepath, char *r_targetpath) ATTR_WARN_UNUSED_RESULT
Some types for dealing with directories.
GHash * BLI_ghash_new_ex(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info, const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
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
void BLI_ghash_clear_ex(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp, const unsigned int nentries_reserve)
#define BLI_ghashutil_uinthash_v4_p
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)
GHash * BLI_ghash_ptr_new_ex(const char *info, const unsigned int nentries_reserve) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
bool BLI_ghashutil_uinthash_v4_cmp(const void *a, const void *b)
void * BLI_ghash_lookup(GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
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
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
void copy_vn_i(int *array_tar, const int size, const 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)
void BLI_join_dirfile(char *__restrict dst, const size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
#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
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_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)
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_strcasecmp_natural(const char *s1, const char *s2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_strcmp_ignore_pad(const char *str1, const char *str2, const char pad) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
char * BLI_strncpy_ensure_pad(char *__restrict dst, const char *__restrict src, const char pad, size_t maxncpy) ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strdupcat(const char *__restrict str1, const char *__restrict str2) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
TaskPool * BLI_task_pool_create_background(void *userdata, TaskPriority priority)
void * BLI_task_pool_user_data(TaskPool *pool)
void BLI_task_pool_cancel(TaskPool *pool)
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)
external readfile function prototypes.
struct BlendHandle BlendHandle
BlendHandle * BLO_blendhandle_from_file(const char *filepath, struct ReportList *reports)
struct LinkNode * BLO_blendhandle_get_datablock_info(BlendHandle *bh, int ofblocktype, int *r_tot_info_items)
bool BLO_library_path_explode(const char *path, char *r_dir, char **r_group, char **r_name)
bool BLO_has_bfile_extension(const char *str)
struct LinkNode * BLO_blendhandle_get_linkable_groups(BlendHandle *bh)
void BLO_blendhandle_close(BlendHandle *bh)
@ FILE_TYPE_BLENDER_BACKUP
@ FILE_TYPE_APPLICATIONBUNDLE
@ FILE_ENTRY_INVALID_PREVIEW
@ FILE_ASSET_LIBRARY_CUSTOM
#define FILE_MAX_LIBEXTRA
int datatoc_prvicons_png_size
char datatoc_prvicons_png[]
@ 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 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 y
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
void IMB_freeImBuf(struct ImBuf *ibuf)
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[]
struct ImBuf * IMB_thumb_manage(const char *path, ThumbSize size, ThumbSource source)
void IMB_thumb_locks_release(void)
void IMB_thumb_path_unlock(const char *path)
void IMB_thumb_path_lock(const char *path)
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(const int idcode)
@ WM_JOB_TYPE_FILESEL_READDIR
#define ND_SPACE_FILE_LIST
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)
ATOMIC_INLINE void * atomic_cas_ptr(void **v, void *old, void *_new)
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.
int ED_file_icon(const FileDirEntry *file)
#define FILELIST_ENTRYCACHESIZE_DEFAULT
static void filelist_readjob_do(const bool do_lib, FileList *filelist, const char *main_name, const short *stop, short *do_update, float *progress, ThreadMutex *lock)
void filelist_tag_force_reset(FileList *filelist)
ImBuf * filelist_geticon_image(struct FileList *filelist, const int index)
static bool is_filtered_id_file(const FileListInternEntry *file, const char *id_group, const char *name, const FileListFilter *filter)
void filelist_free(struct FileList *filelist)
bool filelist_is_ready(struct FileList *filelist)
static bool filelist_checkdir_lib(struct FileList *UNUSED(filelist), char *r_dir, const bool do_change)
void filelist_readjob_stop(wmWindowManager *wm, Scene *owner_scene)
static void filelist_cache_previews_clear(FileListEntryCache *cache)
void filelist_cache_previews_set(FileList *filelist, const bool use_previews)
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)
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)
struct FileListInternEntry FileListInternEntry
int filelist_geticon(struct FileList *filelist, const int index, const bool is_main)
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)
static void filelist_readjob_main(Main *current_main, FileList *filelist, const char *main_name, short *stop, short *do_update, float *progress, ThreadMutex *lock)
struct FileListEntryPreviewTaskData FileListEntryPreviewTaskData
static ImBuf * gSpecialFileImages[SPECIAL_IMG_MAX]
bool filelist_islibrary(struct FileList *filelist, char *dir, char **r_group)
@ FILELIST_TAGS_USES_MAIN_DATA
@ FILELIST_TAGS_NO_THREADS
int filelist_file_findpath(struct FileList *filelist, const char *filename)
const char * folderlist_peeklastdir(ListBase *folderlist)
static void filelist_direntryarr_free(FileDirEntryArr *array)
bool filelist_cache_previews_running(FileList *filelist)
static void filelist_readjob_dir(Main *current_main, FileList *filelist, const char *main_name, short *stop, short *do_update, float *progress, ThreadMutex *lock)
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 ImBuf * filelist_geticon_image_ex(FileDirEntry *file)
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
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 void filelist_cache_previews_free(FileListEntryCache *cache)
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)
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)
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 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)
void filelist_readjob_start(FileList *filelist, const bContext *C)
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 int filelist_readjob_list_lib(const char *root, ListBase *entries, const bool skip_currpar)
bool filelist_cache_previews_update(FileList *filelist)
static void filelist_readjob_startjob(void *flrjv, short *stop, short *do_update, float *progress)
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_intern_entry_free(FileListInternEntry *entry)
static void filelist_cache_free(FileListEntryCache *cache)
static void filelist_readjob_main_assets(Main *current_main, FileList *filelist, const char *main_name, short *stop, short *do_update, float *progress, ThreadMutex *lock)
static int compare_direntry_generic(const FileListInternEntry *entry1, const FileListInternEntry *entry2)
FileDirEntry * filelist_entry_find_uuid(struct FileList *filelist, const int uuid[4])
@ SPECIAL_IMG_DRIVE_FIXED
@ SPECIAL_IMG_DRIVE_ATTACHED
@ SPECIAL_IMG_DRIVE_REMOTE
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 const char * fileentry_uiname(const char *root, const char *relpath, const eFileSel_File_Types typeflag, char *buff)
void filelist_clear(struct FileList *filelist)
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)
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 void filelist_filter_clear(FileList *filelist)
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)
void filelist_filter(FileList *filelist)
static bool is_filtered_hidden(const char *filename, const FileListFilter *filter, const FileListInternEntry *file)
static void filelist_entry_clear(FileDirEntry *entry)
static void filelist_readjob_lib(Main *current_main, FileList *filelist, const char *main_name, short *stop, short *do_update, float *progress, ThreadMutex *lock)
void filelist_setlibrary(FileList *filelist, const FileSelectAssetLibraryUID *asset_library)
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)
bool filelist_entry_is_selected(FileList *filelist, const int index)
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)
ImBuf * filelist_getimage(struct FileList *filelist, const int index)
static bool filelist_compare_asset_libraries(const FileSelectAssetLibraryUID *library_a, const FileSelectAssetLibraryUID *library_b)
ImBuf * filelist_file_getimage(const FileDirEntry *file)
static void folder_history_entry_free(SpaceFile *sfile, FileFolderHistory *history)
bool filelist_needs_force_reset(FileList *filelist)
bool filelist_is_dir(struct FileList *filelist, const char *path)
void filelist_clear_ex(struct FileList *filelist, const bool do_cache, const bool do_selection)
static void filelist_readjob_free(void *flrjv)
static void filelist_intern_free(FileListIntern *filelist_intern)
uint filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
static bool file_is_blend_backup(const char *str)
int filelist_needs_reading(struct FileList *filelist)
void filelist_free_icons(void)
const char * filelist_dir(struct FileList *filelist)
int filelist_readjob_running(wmWindowManager *wm, Scene *owner_scene)
DO_INLINE void filter(lfVector *V, fmatrix3x3 *S)
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 void update(bNodeTree *ntree)
unsigned __int64 uint64_t
struct AssetMetaData * asset_data
struct FileDirEntryRevision * next
struct FileDirEntryVariant * next
struct FileDirEntry * next
FileDirEntryRevision * entry
ThreadQueue * previews_done
int * misc_entries_indices
FileDirEntry ** block_entries
FileListEntryPreview * preview
PreviewImage * in_memory_preview
char filter_glob[FILE_MAXFILE]
PreviewImage * preview_image
struct FileListInternEntry::@503 local_data
eFileAttributes attributes
struct FileListInternEntry * next
struct FileListInternEntry * prev
AssetMetaData * imported_asset_data
FileListInternEntry ** filtered
struct FileList * filelist
struct FileList * tmp_filelist
struct BlendHandle * libfiledata
bool(* check_dir_fn)(struct FileList *, char *, const bool)
bool(* filter_fn)(struct FileListInternEntry *, const char *, FileListFilter *)
void(* read_job_fn)(Main *, struct FileList *, const char *, short *, short *, float *, ThreadMutex *)
struct FileListIntern filelist_intern
struct FileListEntryCache filelist_cache
FileListFilter filter_data
FileSelectAssetLibraryUID * asset_library
struct AssetMetaData * asset_data
ListBase folder_histories
__forceinline const avxb select(const avxb &m, const avxb &t, const avxb &f)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, void *owner, const char *name, int flag, int job_type)
bool WM_jobs_test(wmWindowManager *wm, 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 *))
void WM_jobs_kill_type(struct wmWindowManager *wm, 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)