14#include <fmt/format.h>
55#include "RNA_prototypes.hh"
85 "File select parameters not set. The caller is expected to check this.");
88 &screen->
id, &RNA_FileSelectParams,
params);
154 bool free_imbuf = (thumb ==
nullptr);
164 if (
params->recursion_level > 0) {
191 char version_str[128] = {0};
199 thumb->
metadata,
"Thumb::Blender::Version", version_str,
sizeof(version_str));
206 SNPRINTF_UTF8(version_str,
"%d.%01d", version / 100, version % 100);
210 if (version_str[0]) {
212 fmt::format(
"Blender {}", version_str),
228 thumb->
metadata,
"Thumb::Image::Width", value1,
sizeof(value1)) &&
230 thumb->
metadata,
"Thumb::Image::Height", value2,
sizeof(value2)))
233 fmt::format(
"{} \u00D7 {}", value1, value2),
251 thumb->
metadata,
"Thumb::Video::Width", value1,
sizeof(value1)) &&
253 thumb->
metadata,
"Thumb::Video::Height", value2,
sizeof(value2)))
256 fmt::format(
"{} \u00D7 {}", value1, value2),
262 thumb->
metadata,
"Thumb::Video::Frames", value1,
sizeof(value1)) &&
265 thumb->
metadata,
"Thumb::Video::Duration", value3,
sizeof(value3)))
269 fmt::format(
"{} {} @ {} {}", value1,
N_(
"Frames"), value2,
N_(
"FPS")),
274 fmt::format(
"{} {}", value3,
N_(
"seconds")),
289 TIP_(
"The five boxing wizards jump quickly! 0123456789"));
294 bool is_today, is_yesterday;
295 std::string day_string;
297 nullptr, file->
time,
false, time_str, date_str, &is_today, &is_yesterday);
298 if (is_today || is_yesterday) {
299 day_string = (is_today ?
N_(
"Today") :
N_(
"Yesterday")) + std::string(
" ");
302 fmt::format(
"{}: {}{}{}",
305 (is_today || is_yesterday) ?
"" : date_str,
306 (is_today || is_yesterday) ? time_str :
""),
314 if (file->
size < 10000) {
319 fmt::format(
"{}: {} ({} {})",
N_(
"Size"),
size, size_full,
N_(
"bytes")),
326 fmt::format(
"{}: {}",
N_(
"Size"),
size),
335 const float scale = (512.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
337 image_data.
ibuf = thumb;
338 image_data.
width = short(
float(thumb->
x) * scale);
339 image_data.
height = short(
float(thumb->
y) * scale);
343 image_data.
border =
false;
352 float scale = (96.0f *
UI_SCALE_FAC) /
float(std::max(thumb->
x, thumb->
y));
353 image_data.ibuf = thumb;
354 image_data.width = short(
float(thumb->
x) * scale);
355 image_data.height = short(
float(thumb->
y) * scale);
356 image_data.border =
true;
358 image_data.premultiplied =
true;
362 if (thumb && free_imbuf) {
391 const ImBuf *preview_image,
408 if (import_method > -1) {
420 else if (preview_image) {
444 const rcti *tile_draw_rect,
453 const int x = tile_draw_rect->
xmin + padx;
454 const int y = tile_draw_rect->
ymin +
460 block,
ButType::Label, 0, icon,
x,
y, width, height,
nullptr, 0.0f, 0.0f, std::nullopt);
467 block,
ButType::Label, 0, icon,
x,
y, width, height,
nullptr, 0.0f, 0.0f, std::nullopt);
492 const uchar light[4] = {255, 255, 255, 255};
510 if (
string[0] ==
'\0' || width < 1) {
524 rect.
ymin = sy - height;
528 font_style_params.
align = align;
561 const uchar text_col[4],
567 if (
string[0] ==
'\0' || wrap_width < 1) {
573 int len = strlen(
string);
584 rect.
xmax = sx + wrap_width;
596 &style->
widget, &rect,
string,
len, text_col, &font_style_params,
nullptr,
nullptr, &
result);
601 *r_sy = rect.
ymin + line_height;
622 float scaledx, scaledy;
623 if (((ui_imbx > layout.
prv_w) || (ui_imby > layout.
prv_h)) ||
624 ((ui_imbx < layout.
prv_w) || (ui_imby < layout.
prv_h)))
643 return std::make_tuple(
int(scaledx),
int(scaledy), scale);
651 const rcti *tile_draw_rect,
652 const ImBuf *preview_image,
653 const int file_type_icon)
656 rcti drag_rect = *tile_draw_rect;
674 const ImBuf *drag_image = preview_image ? preview_image :
678 std::max(drag_image->
x, drag_image->
y);
684 const rcti *tile_draw_rect,
692 imb->
x, imb->
y, *layout);
696 const float ofs_x = (
float(layout->
prv_w) -
float(scaled_width)) / 2.0f;
697 const float ofs_y = (
float(layout->
prv_h) -
float(scaled_height)) / 2.0f;
698 const int xmin = tile_draw_rect->
xmin + layout->
prv_border_x + int(ofs_x + 0.5f);
703 float document_img_col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
708 document_img_col[3] *= 0.3f;
714 float(xmin),
float(ymin),
float(xmin + scaled_width),
float(ymin + scaled_height));
728 blender::gpu::TextureFormat::UNORM_8_8_8_8,
746 float border_color[4] = {1.0f, 1.0f, 1.0f, 0.15f};
750 border_color[0] = 0.0f;
751 border_color[1] = 0.0f;
752 border_color[2] = 0.0f;
758 float(xmin + scaled_width + 1),
759 float(ymin + scaled_height + 1));
767 const rcti *tile_draw_rect,
768 const int file_type_icon,
769 const float icon_aspect,
773 float document_img_col[4] = {1.0f, 1.0f, 1.0f, 1.0f};
782 document_img_col[3] *= 0.3f;
799 const float scale = 4.0f;
813 if (file_type_icon) {
815 float icon_opacity = 0.4f;
816 uchar icon_color[4] = {0, 0, 0, 255};
841 const float preview_icon_aspect,
844 uchar icon_color[4] = {0, 0, 0, 255};
850 const float aspect = preview_icon_aspect /
UI_SCALE_FAC;
854 ICON_PREVIEW_LOADING,
866 const rcti *tile_draw_rect,
867 const float preview_icon_aspect,
868 const int file_type_icon,
869 const bool has_special_file_image)
877 if (preview_icon_aspect < 2.0f) {
880 const uchar light[4] = {255, 255, 255, 255};
905 else if (file_type_icon) {
928 if (is_current_main_data) {
931 float icon_x, icon_y;
932 const uchar light[4] = {255, 255, 255, 255};
963 if (!
STREQ(orgname, newname)) {
967 RPT_ERROR,
"Could not rename: %s", errno ? strerror(errno) :
"unknown error");
1000 float col_alternating[4];
1005 for (
i = 2; (
i <= layout->
rows + 1);
i += 2) {
1027 uint vertex_len = 0;
1029 while (sx < v2d->cur.xmax) {
1034 if (vertex_len > 0) {
1036 float col_hi[3], col_lo[3];
1047 format,
"color", blender::gpu::VertAttrType::SFLOAT_32_32_32);
1053 while (sx < v2d->cur.xmax) {
1062 v1[0] =
v2[0] = sx + 1;
1094 const uchar text_col[4])
1140 sx += column->
width;
1167 const bool update_stat_strings)
1174 bool is_today, is_yesterday;
1177 nullptr, file->
time, compact, time, date, &is_today, &is_yesterday);
1179 if (!compact && (is_today || is_yesterday)) {
1210 const rcti *tile_draw_rect,
1211 const uchar text_col[4])
1214 const bool update_stat_strings = layout->
width != layout->
curr_size;
1222 sx += column->
width;
1235 tile_draw_rect->
ymax,
1243 sx += column->
width;
1249 int tile_pos_x, tile_pos_y;
1251 tile_pos_x += int(v2d->
tot.
xmin);
1252 tile_pos_y = int(v2d->
tot.
ymax - tile_pos_y);
1255 rect.
xmin = tile_pos_x;
1257 rect.
ymax = tile_pos_y;
1270 const int icon_ofs_x)
1274 rcti rect = tile_rect;
1280 rect.
xmin += icon_ofs_x + 1;
1300 int numfiles_layout;
1307 const float thumb_icon_aspect = std::min(64.0f /
float(
params->thumbnail_size), 4.0f);
1318 offset = std::max(offset, 0);
1324 numfiles_layout += layout->
rows;
1336 files,
min_ii(offset + (numfiles_layout / 2), numfiles - 1));
1366 for (
i = offset; (
i < numfiles) && (
i < offset + numfiles_layout);
i++) {
1401 bool has_special_file_image =
false;
1407 else if (preview_imb) {
1413 file, &tile_draw_rect, file_type_icon, thumb_icon_aspect, layout, is_hidden);
1414 has_special_file_image =
true;
1423 has_special_file_image);
1427 sfile, block, layout, file, path, &tile_draw_rect, preview_imb, file_type_icon);
1434 file->
asset->ensure_previewable();
1436 if (filelist_loading) {
1444 icon_ofs += layout->
prv_w + 2 * padx;
1450 const int drag_width = std::min(
1451 str_width + icon_ofs,
1453 if (drag_width > 0) {
1460 tile_draw_rect.
xmin,
1496 tile_draw_rect.
xmin + padx - 2,
1506 const int but_height =
1517 text_rect.
ymax - but_height,
1522 float(
sizeof(
params->renamefile)),
1569 const bool is_filtered =
params->filter_search[0] !=
'\0';
1571 uchar text_col_mod[4];
1574 text_col_mod[3] /= 2;
1577 const char *message = [&]() {
1579 return IFACE_(
"Loading...");
1582 return IFACE_(
"No results match the search filter");
1584 return IFACE_(
"No items");
1600 if (draw_columnheader) {
1605 if (numfiles != -1) {
1631 const char *message =
RPT_(
"Path to asset library does not exist:");
1639 sy -= line_height * 2.2f;
1644 const char *suggestion =
RPT_(
1645 "Asset Libraries are local directories that can contain .blend files with assets inside.\n"
1646 "Manage Asset Libraries from the File Paths section in Preferences");
1648 sx +
UI_UNIT_X, sy, suggestion, width -
UI_UNIT_X, line_height, text_col,
nullptr, &sy);
1674 const char *blendfile_path,
1689 const char *message =
RPT_(
"Unreadable Blender library file:");
1697 sy -= line_height * 2.2f;
1700 const short report_type = report->type;
1705 int icon = ICON_INFO;
1713 RPT_(report->message),
1727 const bool is_library_browser = !is_asset_browser &&
1730 if (is_asset_browser) {
1743 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, blender::gpu::TextureFormat 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_enable(int fontid, FontFlags flag)
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_batch_draw_end()
void BLF_wordwrap(int fontid, int wrap_width, BLFWrapMode mode=BLFWrapMode::Minimal)
void BLF_disable(int fontid, FontFlags flag)
#define BLI_assert_msg(a, msg)
File and directory operations.
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 void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
MINLINE float srgb_to_grayscale(const float rgb[3])
static constexpr int image_width
static constexpr int image_height
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)
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 BLI_STR_FORMAT_UINT64_GROUPED_SIZE
char * STRNCPY(char(&dst)[N], const char *src)
size_t BLI_str_format_uint64_grouped(char dst[BLI_STR_FORMAT_UINT64_GROUPED_SIZE], uint64_t num) ATTR_NONNULL(1)
#define SNPRINTF_UTF8(dst, format,...)
#define STRNCPY_UTF8(dst, src)
#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
@ FILE_ASSET_IMPORT_INSTANCE_COLLECTIONS_ON_LINK
@ FILE_ASSET_IMPORT_INSTANCE_COLLECTIONS_ON_APPEND
#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(GPUBlend blend)
void IMB_freeImBuf(ImBuf *ibuf)
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)
ImBuf * IMB_font_preview(const char *filepath, unsigned int width, const float color[4], const char *sample_text=nullptr)
Read Guarded memory(de)allocation.
void UI_but_flag_disable(uiBut *but, int flag)
void UI_but_drag_attach_image(uiBut *but, const ImBuf *imb, float scale)
uiBut * uiDefButR(uiBlock *block, ButType type, int retval, std::optional< blender::StringRef > str, int x, int y, short width, short height, PointerRNA *ptr, blender::StringRefNull propname, int index, float min, float max, std::optional< blender::StringRef > tip)
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)
uiBlock * UI_block_begin(const bContext *C, ARegion *region, std::string name, blender::ui::EmbossType emboss)
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_color_set(uiBut *but, const uchar color[4])
uiBut * uiDefIconBut(uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, std::optional< blender::StringRef > 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)
void UI_but_drag_set_image(uiBut *but, const char *path, int icon, const ImBuf *imb, float scale)
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)
float UI_text_clip_middle_ex(const uiFontStyle *fstyle, char *str, float okwidth, float minwidth, size_t max_len, char rpart_sep, bool clip_right_if_tight=true)
void UI_but_func_rename_set(uiBut *but, uiButHandleRenameFunc func, void *arg1)
void UI_but_drawflag_disable(uiBut *but, int flag)
void UI_block_draw(const bContext *C, uiBlock *block)
void UI_but_drag_set_asset(uiBut *but, const blender::asset_system::AssetRepresentation *asset, const AssetImportSettings &import_settings, int icon, int preview_icon)
int UI_fontstyle_string_width(const uiFontStyle *fs, const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1
void UI_fontstyle_draw_multiline_clipped(const uiFontStyle *fs, const rcti *rect, const char *str, const uchar col[4], eFontStyle_Align align)
bool UI_but_active_only(const bContext *C, ARegion *region, uiBlock *block, uiBut *but)
uiBut * uiDefIconTextButO_ptr(uiBlock *block, ButType type, wmOperatorType *ot, blender::wm::OpCallContext opcontext, int icon, blender::StringRef str, int x, int y, short width, short height, std::optional< blender::StringRef > tip)
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_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)
uiBut * uiDefBut(uiBlock *block, uiButTypeWithPointerType but_and_ptr_type, int retval, blender::StringRef str, int x, int y, short width, short height, void *poin, float min, float max, std::optional< blender::StringRef > tip)
uiBut * uiDefIconPreviewBut(uiBlock *block, ButType type, int retval, int icon, int x, int y, short width, short height, void *poin, float min, float max, std::optional< blender::StringRef > tip)
void UI_but_flag_enable(uiBut *but, int flag)
bool UI_but_flag_is_set(uiBut *but, int flag)
#define ICON_DEFAULT_HEIGHT
void UI_icon_draw(float x, float y, int icon_id)
#define ICON_DEFAULT_WIDTH_SCALE
#define UI_NO_ICON_OVERLAY_TEXT
#define PREVIEW_DRAG_DRAW_SIZE
#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)
#define ICON_DEFAULT_WIDTH
void UI_GetThemeColorShade3fv(int colorid, int offset, float col[3])
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColorShade4fv(int colorid, int offset, float col[4])
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)]
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static void file_draw_indicator_icons(const FileList *files, const FileDirEntry *file, const FileLayout *layout, const rcti *tile_draw_rect, const float preview_icon_aspect, const int file_type_icon, const bool has_special_file_image)
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])
static void file_but_tooltip_func_set(const SpaceFile *sfile, const FileDirEntry *file, uiBut *but)
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 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 file_type_icon)
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_special_image(const FileDirEntry *file, const rcti *tile_draw_rect, const int file_type_icon, const float icon_aspect, const FileLayout *layout, const bool dimmed)
static void file_draw_tooltip_custom_func(bContext &, uiTooltipData &tip, uiBut *, void *argN)
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, int padx, bool dimmed)
static void file_draw_asset_tooltip_custom_func(bContext &, uiTooltipData &tip, uiBut *, void *argN)
static void file_draw_string_mulitline_clipped(const rcti *rect, const char *string, eFontStyle_Align align, const uchar col[4])
static uiBut * file_add_overlay_icon_but(uiBlock *block, int pos_x, int pos_y, int icon)
static void file_draw_preview(const FileDirEntry *file, const rcti *tile_draw_rect, const ImBuf *imb, FileLayout *layout, const bool dimmed)
static void draw_columnheader_background(const FileLayout *layout, const View2D *v2d)
static void renamebutton_cb(bContext *C, void *, char *oldname)
static rcti tile_draw_rect_get(const View2D *v2d, const FileLayout *layout, const int file_idx)
void ED_file_path_button(bScreen *screen, const SpaceFile *sfile, FileSelectParams *params, uiBlock *block)
static rcti text_draw_rect_get(const View2D *v2d, const eFileDisplayType display_type, const FileLayout *layout, const int file_idx, const int icon_ofs_x)
static void draw_background(FileLayout *layout, View2D *v2d)
static const char * filelist_get_details_column_string(FileAttributeColumnType column, FileDirEntry *file, const bool compact, const bool update_stat_strings)
static std::tuple< int, int, float > preview_image_scaled_dimensions_get(const int image_width, const int image_height, const FileLayout &layout)
static void file_draw_string(int sx, int sy, const char *string, float width, int height, eFontStyle_Align align, const uchar col[4])
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_draw_loading_icon(const rcti *tile_draw_rect, const float preview_icon_aspect, const FileLayout *layout)
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)
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_geticon_file_type(FileList *filelist, int index, bool is_main)
bool filelist_file_cache_block(FileList *filelist, int index)
int filelist_files_num_entries(FileList *filelist)
void filelist_file_get_full_path(const FileList *filelist, const FileDirEntry *file, char r_filepath[1282])
bool filelist_islibrary(FileList *filelist, char *dir, char **r_group)
BlendHandle * filelist_lib(FileList *filelist)
ImBuf * filelist_get_preview_image(FileList *filelist, int index)
bool filelist_file_is_preview_pending(const FileList *filelist, const FileDirEntry *file)
bool filelist_cache_previews_running(FileList *filelist)
bool filelist_cache_previews_done(FileList *filelist)
ImBuf * filelist_geticon_special_file_image_ex(const FileDirEntry *file)
ID * filelist_file_get_id(const FileDirEntry *file)
bool filelist_cache_previews_update(FileList *filelist)
void filelist_file_cache_slidingwindow_set(FileList *filelist, size_t window_size)
ImBuf * filelist_file_get_preview_image(const FileDirEntry *file)
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)
eDirEntry_SelectFlag filelist_entry_select_get(FileList *filelist, FileDirEntry *entry, FileCheckType check)
VecBase< float, D > step(VecOp< float, D >, VecOp< float, D >) RET
void * MEM_mallocN(size_t len, const char *str)
void MEM_freeN(void *vmemh)
void asset_tooltip(const asset_system::AssetRepresentation &asset, uiTooltipData &tip, const bool include_name)
BIFIconID asset_preview_or_icon(const asset_system::AssetRepresentation &asset)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
bool use_instance_collections
eAssetImportMethod method
AssetLibraryReference asset_library_ref
FileSelectParams base_params
struct FileDirEntry::@257003076343006177237046347027064317037127117226 draw_data
AssetRepresentationHandle * asset
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
FileAssetSelectParams * asset_params
SpaceFile_Runtime * runtime
uiWidgetColors wcol_tooltip
void WM_event_add_notifier_ex(wmWindowManager *wm, const wmWindow *win, uint type, void *reference)
void WM_global_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)