14#include <fmt/format.h>
50#include "RNA_prototypes.hh"
80 "File select parameters not set. The caller is expected to check this.");
145 bool free_imbuf = (thumb ==
nullptr);
155 if (
params->recursion_level > 0) {
182 char version_str[128] = {0};
190 thumb->
metadata,
"Thumb::Blender::Version", version_str,
sizeof(version_str));
197 SNPRINTF(version_str,
"%d.%01d", version / 100, version % 100);
201 if (version_str[0]) {
203 fmt::format(
"Blender {}", version_str),
219 thumb->
metadata,
"Thumb::Image::Width", value1,
sizeof(value1)) &&
221 thumb->
metadata,
"Thumb::Image::Height", value2,
sizeof(value2)))
224 fmt::format(
"{} \u00D7 {}", value1, value2),
242 thumb->
metadata,
"Thumb::Video::Width", value1,
sizeof(value1)) &&
244 thumb->
metadata,
"Thumb::Video::Height", value2,
sizeof(value2)))
247 fmt::format(
"{} \u00D7 {}", value1, value2),
253 thumb->
metadata,
"Thumb::Video::Frames", value1,
sizeof(value1)) &&
256 thumb->
metadata,
"Thumb::Video::Duration", value3,
sizeof(value3)))
260 fmt::format(
"{} {} @ {} {}", value1,
N_(
"Frames"), value2,
N_(
"FPS")),
265 fmt::format(
"{} {}", value3,
N_(
"seconds")),
275 bool is_today, is_yesterday;
276 std::string day_string = (
"");
278 nullptr, file->
time,
false, time_str, date_str, &is_today, &is_yesterday);
279 if (is_today || is_yesterday) {
280 day_string = (is_today ?
N_(
"Today") :
N_(
"Yesterday")) + std::string(
" ");
283 fmt::format(
"{}: {}{}{}",
286 (is_today || is_yesterday) ?
"" : date_str,
287 (is_today || is_yesterday) ? time_str :
""),
295 if (file->
size < 10000) {
300 fmt::format(
"{}: {} ({} {})",
N_(
"Size"),
size, size_full,
N_(
"bytes")),
307 fmt::format(
"{}: {}",
N_(
"Size"),
size),
320 float scale = (96.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
321 image_data.ibuf = thumb;
322 image_data.width = short(
float(thumb->
x) * scale);
323 image_data.height = short(
float(thumb->
y) * scale);
324 image_data.border =
true;
326 image_data.premultiplied =
true;
330 if (thumb && free_imbuf) {
356 const ImBuf *preview_image,
376 else if (preview_image) {
389 const rcti *tile_draw_rect,
397 const int x = tile_draw_rect->
xmin;
401 block,
UI_BTYPE_LABEL, 0, icon,
x,
y, width, height,
nullptr, 0.0f, 0.0f,
nullptr);
426 if (
string[0] ==
'\0' || width < 1) {
440 rect.
ymin = sy - height;
444 font_style_params.
align = align;
459 const uchar text_col[4],
465 if (
string[0] ==
'\0' || wrap_width < 1) {
471 int len = strlen(
string);
482 rect.
xmax = sx + wrap_width;
494 &style->
widget, &rect,
string,
len, text_col, &font_style_params,
nullptr,
nullptr, &
result);
499 *r_sy = rect.
ymin + line_height;
517 const rcti *tile_draw_rect,
518 const ImBuf *preview_image,
523 rcti drag_rect = *tile_draw_rect;
553 const rcti *tile_draw_rect,
554 const float icon_aspect,
566 float ui_imbx, ui_imby;
567 float scaledx, scaledy;
580 if (((ui_imbx > layout->
prv_w) || (ui_imby > layout->
prv_h)) ||
581 (!is_icon && ((ui_imbx < layout->prv_w) || (ui_imby < layout->prv_h))))
583 if (imb->
x > imb->
y) {
586 scale = scaledx / imb->
x;
591 scale = scaledy / imb->
y;
606 xco = tile_draw_rect->
xmin +
int(dx);
613 float document_img_col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
627 document_img_col[3] *= 0.3f;
678 if (icon && is_icon) {
680 float icon_x, icon_y;
681 float icon_opacity = 0.4f;
682 uchar icon_color[4] = {0, 0, 0, 255};
698 is_loading ? ICON_TEMP : icon,
707 if (icon_aspect < 2.0f) {
710 const uchar light[4] = {255, 255, 255, 255};
750 if (is_current_main_data) {
753 float icon_x, icon_y;
754 const uchar light[4] = {255, 255, 255, 255};
775 float border_color[4] = {1.0f, 1.0f, 1.0f, 0.15f};
779 border_color[0] = 0.0f;
780 border_color[1] = 0.0f;
781 border_color[2] = 0.0f;
811 if (!
STREQ(orgname, newname)) {
846 float col_alternating[4];
851 for (i = 2; (i <= layout->
rows + 1); i += 2) {
875 while (sx < v2d->cur.xmax) {
880 if (vertex_len > 0) {
882 uchar col_hi[3], col_lo[3];
899 while (sx < v2d->cur.xmax) {
908 v1[0] =
v2[0] = sx + 1;
939 const uchar text_col[4])
1011 const bool update_stat_strings)
1018 bool is_today, is_yesterday;
1021 nullptr, file->
time, compact, time, date, &is_today, &is_yesterday);
1023 if (!compact && (is_today || is_yesterday)) {
1054 const rcti *tile_draw_rect,
1055 const uchar text_col[4])
1058 const bool update_stat_strings = layout->
width != layout->
curr_size;
1066 sx += column->
width;
1087 sx += column->
width;
1097 int tile_pos_x, tile_pos_y;
1100 tile_pos_y =
int(v2d->
tot.
ymax - tile_pos_y);
1103 rect.
xmin = tile_pos_x + padx;
1105 layout->
tile_w - (2 * padx) :
1107 rect.
ymax = tile_pos_y;
1125 int numfiles_layout;
1127 int column_width, textheight;
1134 const float thumb_icon_aspect = std::min(64.0f /
float(
params->thumbnail_size), 4.0f);
1153 numfiles_layout += layout->
rows;
1170 files,
min_ii(offset + (numfiles_layout / 2), numfiles - 1));
1200 for (i = offset; (i < numfiles) && (i < offset + numfiles_layout); i++) {
1223 rcti tile_bg_rect = tile_draw_rect;
1260 sfile, block, layout, file, path, &tile_draw_rect, imb, icon, scale);
1272 const int drag_width = std::min(str_width + icon_ofs,
1274 if (drag_width > 0) {
1279 tile_draw_rect.
xmin,
1280 tile_draw_rect.
ymin - 1,
1323 tile_draw_rect.
xmin + icon_ofs,
1329 float(
sizeof(
params->renamefile)),
1354 tile_draw_rect.
xmin + 1 + icon_ofs;
1374 const bool is_filtered =
params->filter_search[0] !=
'\0';
1376 uchar text_col_mod[4];
1379 text_col_mod[3] /= 2;
1382 const char *message = [&]() {
1384 return IFACE_(
"Loading...");
1387 return IFACE_(
"No results match the search filter");
1389 return IFACE_(
"No items");
1405 if (draw_columnheader) {
1410 if (numfiles != -1) {
1436 const char *message =
RPT_(
"Path to asset library does not exist:");
1444 sy -= line_height * 2.2f;
1449 const char *suggestion =
RPT_(
1450 "Asset Libraries are local directories that can contain .blend files with assets inside.\n"
1451 "Manage Asset Libraries from the File Paths section in Preferences");
1453 sx +
UI_UNIT_X, sy, suggestion, width -
UI_UNIT_X, line_height, text_col,
nullptr, &sy);
1479 const char *blendfile_path,
1494 const char *message =
RPT_(
"Unreadable Blender library file:");
1502 sy -= line_height * 2.2f;
1505 const short report_type = report->type;
1510 int icon = ICON_INFO;
1518 RPT_(report->message),
1532 const bool is_library_browser = !is_asset_browser &&
1535 if (is_asset_browser) {
1548 if (is_library_browser) {
Main runtime representation of an asset.
void immDrawPixelsTexTiled_scaling(IMMDrawPixelsTexState *state, float x, float y, int img_w, int img_h, eGPUTextureFormat gpu_format, bool use_filter, const void *rect, float scaleX, float scaleY, float xzoom, float yzoom, const float color[4])
IMMDrawPixelsTexState immDrawPixelsTexSetup(int builtin)
bool BKE_blendfile_is_readable(const char *path, ReportList *reports)
SpaceFile * CTX_wm_space_file(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
SpaceLink * CTX_wm_space_data(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
void BKE_reports_clear(ReportList *reports)
void BLF_batch_draw_begin()
void BLF_boundbox(int fontid, const char *str, size_t str_len, rcti *r_box, ResultBLF *r_info=nullptr) ATTR_NONNULL(2)
void BLF_disable(int fontid, int option)
void BLF_batch_draw_end()
void BLF_enable(int fontid, int option)
void BLF_wordwrap(int fontid, int wrap_width)
#define BLI_assert_msg(a, msg)
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
#define FILE_ATTR_ANY_LINK
void BLI_filelist_entry_size_to_string(const struct stat *st, uint64_t st_size_fallback, bool compact, char r_size[FILELIST_DIRENTRY_SIZE_LEN])
int BLI_rename(const char *from, const char *to) ATTR_NONNULL()
void BLI_filelist_entry_datetime_to_string(const struct stat *st, int64_t ts, bool compact, char r_time[FILELIST_DIRENTRY_TIME_LEN], char r_date[FILELIST_DIRENTRY_DATE_LEN], bool *r_is_today, bool *r_is_yesterday)
Some types for dealing with directories.
#define FILELIST_DIRENTRY_DATE_LEN
#define FILELIST_DIRENTRY_TIME_LEN
#define LISTBASE_FOREACH(type, var, list)
MINLINE int round_fl_to_int(float a)
MINLINE int min_ii(int a, int b)
MINLINE float rgb_to_grayscale(const float rgb[3])
void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
#define BLI_path_join(...)
#define FILENAME_IS_CURRPAR(_n)
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool BLI_path_make_safe_filename(char *filename) ATTR_NONNULL(1)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
void BLI_rcti_pad(struct rcti *rect, int pad_x, int pad_y)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
#define STRNCPY(dst, src)
#define SNPRINTF(dst, format,...)
#define BLI_STR_FORMAT_UINT64_GROUPED_SIZE
size_t BLI_str_format_uint64_grouped(char dst[BLI_STR_FORMAT_UINT64_GROUPED_SIZE], uint64_t num) ATTR_NONNULL(1)
#define UNUSED_VARS_NDEBUG(...)
Compatibility-like things for windows.
external readfile function prototypes.
short BLO_version_from_file(const char *filepath)
@ FILE_TYPE_BLENDER_BACKUP
@ FILE_BROWSE_MODE_ASSETS
#define FILE_MAX_LIBEXTRA
@ USER_SECTION_FILE_PATHS
int ED_fileselect_layout_numfiles(FileLayout *layout, ARegion *region)
FileSelectParams * ED_fileselect_get_active_params(const SpaceFile *sfile)
int ED_fileselect_layout_offset(FileLayout *layout, int x, int y)
FileLayout * ED_fileselect_get_layout(SpaceFile *sfile, ARegion *region)
bool ED_fileselect_is_asset_browser(const SpaceFile *sfile)
FileAssetSelectParams * ED_fileselect_get_asset_params(const SpaceFile *sfile)
void ED_fileselect_init_layout(SpaceFile *sfile, ARegion *region)
void ED_fileselect_clear(wmWindowManager *wm, SpaceFile *sfile)
void ED_fileselect_layout_tilepos(const FileLayout *layout, int tile, int *x, int *y)
int ED_fileselect_asset_import_method_get(const SpaceFile *sfile, const FileDirEntry *file)
void ED_region_tag_redraw(ARegion *region)
@ GPU_SHADER_3D_UNIFORM_COLOR
@ GPU_SHADER_3D_FLAT_COLOR
@ GPU_SHADER_3D_IMAGE_COLOR
@ GPU_BLEND_ALPHA_PREMULT
void GPU_blend(eGPUBlend blend)
Contains defines and structs used throughout the imbuf module.
ImBuf * IMB_thumb_read(const char *file_or_lib_path, ThumbSize size)
ImBuf * IMB_thumb_manage(const char *file_or_lib_path, ThumbSize size, ThumbSource source)
Read Guarded memory(de)allocation.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert Invert a color
void UI_but_flag_disable(uiBut *but, int flag)
void UI_but_drag_attach_image(uiBut *but, const ImBuf *imb, float scale)
void UI_fontstyle_draw_simple(const uiFontStyle *fs, float x, float y, const char *str, const uchar col[4])
void UI_but_func_tooltip_custom_set(uiBut *but, uiButToolTipCustomFunc func, void *arg, uiFreeArgFunc free_arg)
void UI_draw_icon_tri(float x, float y, char dir, const float[4])
void UI_tooltip_image_field_add(uiTooltipData &data, const uiTooltipImage &image_data)
void UI_but_func_tooltip_set(uiBut *but, uiButToolTipFunc func, void *arg, uiFreeArgFunc free_arg)
uiBut * uiDefBut(uiBlock *block, int type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_tooltip_text_field_add(uiTooltipData &data, std::string text, std::string suffix, const uiTooltipStyle style, const uiTooltipColorID color_id, const bool is_pad=false)
bool UI_but_is_utf8(const uiBut *but)
uiBut * uiDefIconTextButO_ptr(uiBlock *block, int type, wmOperatorType *ot, wmOperatorCallContext opcontext, int icon, blender::StringRef str, int x, int y, short width, short height, const char *tip)
uiBut * uiDefIconBut(uiBlock *block, int type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, const char *tip)
void UI_but_drag_set_image(uiBut *but, const char *path, int icon, const ImBuf *imb, float scale)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, eUIEmbossType emboss)
void UI_draw_roundbox_corner_set(int type)
void UI_fontstyle_draw_ex(const uiFontStyle *fs, const rcti *rect, const char *str, size_t str_len, const uchar col[4], const uiFontStyleDraw_Params *fs_params, int *r_xofs, int *r_yofs, ResultBLF *r_info)
const uiStyle * UI_style_get()
void UI_but_dragflag_enable(uiBut *but, int flag)
void UI_but_drag_set_path(uiBut *but, const char *path)
PointerRNA * UI_but_operator_ptr_ensure(uiBut *but)
void UI_block_func_set(uiBlock *block, uiButHandleFunc func, void *arg1, void *arg2)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
void UI_block_draw(const bContext *C, uiBlock *block)
int UI_fontstyle_string_width(const uiFontStyle *fs, const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
float UI_text_clip_middle_ex(const uiFontStyle *fstyle, char *str, float okwidth, float minwidth, size_t max_len, char rpart_sep)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
void UI_fontstyle_draw(const uiFontStyle *fs, const rcti *rect, const char *str, size_t str_len, const uchar col[4], const uiFontStyleDraw_Params *fs_params)
void UI_but_label_alpha_factor_set(uiBut *but, float alpha_factor)
void UI_but_func_complete_set(uiBut *but, uiButCompleteFunc func, void *arg)
void UI_but_drag_set_id(uiBut *but, ID *id)
void UI_draw_roundbox_aa(const rctf *rect, bool filled, float rad, const float color[4])
void UI_but_drag_set_asset(uiBut *but, const blender::asset_system::AssetRepresentation *asset, int import_method, int icon, const ImBuf *imb, float scale)
uiBut * uiDefButR(uiBlock *block, int type, int retval, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
void UI_but_funcN_set(uiBut *but, uiButHandleNFunc funcN, void *argN, void *arg2, uiButArgNFree func_argN_free_fn=MEM_freeN, uiButArgNCopy func_argN_copy_fn=MEM_dupallocN)
void UI_block_end(const bContext *C, uiBlock *block)
void UI_but_flag_enable(uiBut *but, int flag)
bool UI_but_flag_is_set(uiBut *but, int flag)
void UI_icon_draw(float x, float y, int icon_id)
#define ICON_DEFAULT_WIDTH_SCALE
#define UI_NO_ICON_OVERLAY_TEXT
#define ICON_DEFAULT_HEIGHT_SCALE
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], bool mono_border, const IconTextOverlay *text_overlay, const bool inverted=false)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
void UI_GetThemeColorShade3ubv(int colorid, int offset, unsigned char col[3])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
void UI_view2d_totRect_set(View2D *v2d, int width, int height)
#define ND_SPACE_FILE_PREVIEW
#define ND_SPACE_FILE_PARAMS
int pad[32 - sizeof(int)]
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
RAYTRACE_GROUP_SIZE additional_info("eevee_shared", "eevee_gbuffer_data", "eevee_global_ubo", "eevee_sampling_data", "eevee_utility_texture", "eevee_hiz_data", "draw_view") .specialization_constant(Type RAYTRACE_GROUP_SIZE in_sh_0_tx in_sh_2_tx screen_normal_tx GPU_RGBA8
static void file_add_preview_drag_but(const SpaceFile *sfile, uiBlock *block, FileLayout *layout, const FileDirEntry *file, const char *path, const rcti *tile_draw_rect, const ImBuf *preview_image, const int icon, const float scale)
static void draw_dividers(FileLayout *layout, View2D *v2d)
static void draw_details_columns(const FileSelectParams *params, const FileLayout *layout, FileDirEntry *file, const rcti *tile_draw_rect, const uchar text_col[4])
void file_calc_previews(const bContext *C, ARegion *region)
static void file_draw_invalid_asset_library_hint(const bContext *C, const SpaceFile *sfile, ARegion *region, FileAssetSelectParams *asset_params)
static void draw_tile_background(const rcti *draw_rect, int colorid, int shade)
static std::string file_draw_asset_tooltip_func(bContext *, void *argN, const char *)
static void draw_columnheader_columns(const FileSelectParams *params, FileLayout *layout, const View2D *v2d, const uchar text_col[4])
static FileTooltipData * file_tooltip_data_create(const SpaceFile *sfile, const FileDirEntry *file)
static void file_draw_string_multiline(int sx, int sy, const char *string, int wrap_width, int line_height, const uchar text_col[4], int *r_sx, int *r_sy)
bool file_draw_hint_if_invalid(const bContext *C, const SpaceFile *sfile, ARegion *region)
static void file_draw_preview(const FileList *files, const FileDirEntry *file, const rcti *tile_draw_rect, const float icon_aspect, const ImBuf *imb, const int icon, FileLayout *layout, const bool is_icon, const bool dimmed, const bool is_link, float *r_scale)
static void file_draw_tooltip_custom_func(bContext &, uiTooltipData &tip, void *argN)
static void draw_columnheader_background(const FileLayout *layout, const View2D *v2d)
static void renamebutton_cb(bContext *C, void *, char *oldname)
void ED_file_path_button(bScreen *screen, const SpaceFile *sfile, FileSelectParams *params, uiBlock *block)
static const char * filelist_get_details_column_string(FileAttributeColumnType column, FileDirEntry *file, const bool compact, const bool update_stat_strings)
static void file_draw_string(int sx, int sy, const char *string, float width, int height, eFontStyle_Align align, const uchar col[4])
static uiBut * file_add_icon_but(const SpaceFile *sfile, uiBlock *block, const char *, const FileDirEntry *file, const rcti *tile_draw_rect, int icon, int width, int height, bool dimmed)
void file_draw_list(const bContext *C, ARegion *region)
static void file_draw_invalid_library_hint(const bContext *, const SpaceFile *sfile, ARegion *region, const char *blendfile_path, ReportList *reports)
static void file_but_enable_drag(uiBut *but, const SpaceFile *sfile, const FileDirEntry *file, const char *path, const ImBuf *preview_image, int icon, float scale)
static rcti tile_draw_rect_get(const View2D *v2d, const FileLayout *layout, const eFileDisplayType display, const int file_idx, const int padx)
void file_path_to_ui_path(const char *path, char *r_path, int r_path_maxncpy)
bool file_attribute_column_type_enabled(const FileSelectParams *params, FileAttributeColumnType column, const FileLayout *layout)
void file_params_rename_end(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile, const FileDirEntry *rename_file)
void file_params_invoke_rename_postscroll(wmWindowManager *wm, wmWindow *win, SpaceFile *sfile)
int autocomplete_directory(bContext *C, char *str, void *arg_v)
#define FILE_LAYOUT_COMPACT(_layout)
void file_directory_enter_handle(bContext *C, void *arg_unused, void *arg_but)
#define ATTRIBUTE_COLUMN_PADDING
void file_draw_check_cb(bContext *C, void *arg1, void *arg2)
int filelist_files_num_entries(FileList *filelist)
ImBuf * filelist_getimage(FileList *filelist, const int index)
bool filelist_islibrary(FileList *filelist, char *dir, char **r_group)
BlendHandle * filelist_lib(FileList *filelist)
bool filelist_file_is_preview_pending(const FileList *filelist, const FileDirEntry *file)
bool filelist_cache_previews_running(FileList *filelist)
bool filelist_file_cache_block(FileList *filelist, const int index)
bool filelist_cache_previews_done(FileList *filelist)
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char r_filepath[])
int filelist_geticon(FileList *filelist, const int index, const bool is_main)
ID * filelist_file_get_id(const FileDirEntry *file)
bool filelist_cache_previews_update(FileList *filelist)
ImBuf * filelist_file_getimage(const FileDirEntry *file)
void filelist_file_cache_slidingwindow_set(FileList *filelist, size_t window_size)
bool filelist_is_dir(const FileList *filelist, const char *path)
int filelist_files_ensure(FileList *filelist)
FileDirEntry * filelist_file(FileList *filelist, int index)
bool filelist_is_ready(const FileList *filelist)
ImBuf * filelist_geticon_image(FileList *filelist, const int index)
eDirEntry_SelectFlag filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
void IMB_freeImBuf(ImBuf *)
void *(* MEM_mallocN)(size_t len, const char *str)
void MEM_freeN(void *vmemh)
std::string asset_tooltip(const asset_system::AssetRepresentation &asset, const bool include_name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
static void draw_background()
AssetLibraryReference asset_library_ref
FileSelectParams base_params
AssetRepresentationHandle * asset
struct FileDirEntry::@107237304145142027150067164132016042137132303223 draw_data
FileAttributeColumn attribute_columns[ATTRIBUTE_COLUMN_MAX]
int attribute_column_header_h
ImBufByteBuffer byte_buffer
ReportList is_blendfile_readable_reports
bool is_blendfile_readable
bool is_blendfile_status_set
struct FileLayout * layout
struct wmTimer * previews_timer
SpaceFile_Runtime * runtime
void WM_event_add_notifier_ex(wmWindowManager *wm, const wmWindow *win, uint type, void *reference)
void WM_reportf(eReportType type, const char *format,...)
void WM_report_banner_show(wmWindowManager *wm, wmWindow *win)
std::string WM_operatortype_name(wmOperatorType *ot, PointerRNA *properties)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
wmTimer * WM_event_timer_add_notifier(wmWindowManager *wm, wmWindow *win, const uint type, const double time_step)
void WM_event_timer_remove_notifier(wmWindowManager *wm, wmWindow *win, wmTimer *timer)