Blender V4.3
file_draw.cc File Reference
#include <cerrno>
#include <cmath>
#include <cstring>
#include <string>
#include <fmt/format.h>
#include "MEM_guardedalloc.h"
#include "AS_asset_representation.hh"
#include "BLI_blenlib.h"
#include "BLI_fileops_types.h"
#include "BLI_math_color.h"
#include "BLI_utildefines.h"
#include "BIF_glutil.hh"
#include "BKE_blendfile.hh"
#include "BKE_context.hh"
#include "BKE_report.hh"
#include "BLO_readfile.hh"
#include "BLT_translation.hh"
#include "BLF_api.hh"
#include "IMB_imbuf.hh"
#include "IMB_imbuf_types.hh"
#include "IMB_metadata.hh"
#include "IMB_thumbs.hh"
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
#include "RNA_access.hh"
#include "RNA_prototypes.hh"
#include "ED_asset.hh"
#include "ED_fileselect.hh"
#include "ED_screen.hh"
#include "UI_interface.hh"
#include "UI_interface_icons.hh"
#include "UI_resources.hh"
#include "UI_view2d.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "GPU_immediate.hh"
#include "GPU_immediate_util.hh"
#include "GPU_state.hh"
#include "filelist.hh"
#include "file_intern.hh"

Go to the source code of this file.

Classes

struct  FileTooltipData
 

Functions

void ED_file_path_button (bScreen *screen, const SpaceFile *sfile, FileSelectParams *params, uiBlock *block)
 
static FileTooltipDatafile_tooltip_data_create (const SpaceFile *sfile, const FileDirEntry *file)
 
static void file_draw_tooltip_custom_func (bContext &, uiTooltipData &tip, void *argN)
 
static std::string file_draw_asset_tooltip_func (bContext *, void *argN, const char *)
 
static void draw_tile_background (const rcti *draw_rect, int colorid, int shade)
 
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 uiButfile_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)
 
static void file_draw_string (int sx, int sy, const char *string, float width, int height, eFontStyle_Align align, const uchar col[4])
 
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)
 
void file_calc_previews (const bContext *C, ARegion *region)
 
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 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 renamebutton_cb (bContext *C, void *, char *oldname)
 
static void draw_background (FileLayout *layout, View2D *v2d)
 
static void draw_dividers (FileLayout *layout, View2D *v2d)
 
static void draw_columnheader_background (const FileLayout *layout, const View2D *v2d)
 
static void draw_columnheader_columns (const FileSelectParams *params, FileLayout *layout, const View2D *v2d, const uchar text_col[4])
 
static const char * filelist_get_details_column_string (FileAttributeColumnType column, FileDirEntry *file, const bool compact, const bool update_stat_strings)
 
static void draw_details_columns (const FileSelectParams *params, const FileLayout *layout, FileDirEntry *file, const rcti *tile_draw_rect, const uchar text_col[4])
 
static rcti tile_draw_rect_get (const View2D *v2d, const FileLayout *layout, const eFileDisplayType display, const int file_idx, const int padx)
 
void file_draw_list (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 file_draw_invalid_library_hint (const bContext *, const SpaceFile *sfile, ARegion *region, const char *blendfile_path, ReportList *reports)
 
bool file_draw_hint_if_invalid (const bContext *C, const SpaceFile *sfile, ARegion *region)
 

Function Documentation

◆ draw_background()

◆ draw_columnheader_background()

◆ draw_columnheader_columns()

◆ draw_details_columns()

◆ draw_dividers()

◆ draw_tile_background()

static void draw_tile_background ( const rcti * draw_rect,
int colorid,
int shade )
static

◆ ED_file_path_button()

◆ file_add_icon_but()

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 )
static

◆ file_add_preview_drag_but()

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

◆ file_but_enable_drag()

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

◆ file_calc_previews()

void file_calc_previews ( const bContext * C,
ARegion * region )

◆ file_draw_asset_tooltip_func()

static std::string file_draw_asset_tooltip_func ( bContext * ,
void * argN,
const char *  )
static

Definition at line 335 of file file_draw.cc.

References blender::ed::asset::asset_tooltip().

Referenced by file_add_icon_but(), and file_add_preview_drag_but().

◆ file_draw_hint_if_invalid()

◆ file_draw_invalid_asset_library_hint()

◆ file_draw_invalid_library_hint()

◆ file_draw_list()

void file_draw_list ( const bContext * C,
ARegion * region )

Definition at line 1113 of file file_draw.cc.

References ATTRIBUTE_COLUMN_PADDING, FileLayout::attribute_columns, BLF_batch_draw_begin(), BLF_batch_draw_end(), BLI_assert, BLI_rcti_translate(), CHECK_ALL, COLUMN_NAME, copy_v4_v4_uchar(), CTX_wm_manager(), CTX_wm_space_file(), CTX_wm_window(), FileLayout::curr_size, draw_background(), draw_columnheader_background(), draw_columnheader_columns(), draw_details_columns(), draw_dividers(), draw_tile_background(), ED_fileselect_get_active_params(), ED_fileselect_get_layout(), ED_fileselect_layout_numfiles(), ED_fileselect_layout_offset(), file, file_add_icon_but(), file_add_preview_drag_but(), FILE_ATTR_ANY_LINK, FILE_ATTR_HIDDEN, file_but_enable_drag(), file_draw_preview(), file_draw_string(), file_draw_tooltip_custom_func(), FILE_IMGDISPLAY, FILE_LAYOUT_HOR, FILE_MAX_LIBEXTRA, file_params_rename_end(), FILE_SEL_EDITING, FILE_SEL_HIGHLIGHTED, FILE_SEL_SELECTED, file_tooltip_data_create(), FILE_VERTICALDISPLAY, filelist_cache_previews_done(), filelist_cache_previews_running(), filelist_cache_previews_update(), filelist_entry_select_get(), filelist_file(), filelist_file_cache_block(), filelist_file_cache_slidingwindow_set(), filelist_file_get_full_path(), filelist_files_ensure(), filelist_geticon(), filelist_geticon_image(), filelist_getimage(), filelist_is_ready(), FILENAME_IS_CURRPAR, SpaceFile::files, FileLayout::flag, FileLayout::flow_columns, ICON_DEFAULT_HEIGHT_SCALE, ICON_DEFAULT_WIDTH_SCALE, IFACE_, int, MEM_freeN(), min_ii(), NC_SPACE, ND_SPACE_FILE_PARAMS, ND_SPACE_FILE_PREVIEW, params, SpaceFile::previews_timer, renamebutton_cb(), round_fl_to_int(), FileLayout::rows, FileLayout::textheight, TH_BACK, TH_HILITE, TH_TEXT, FileLayout::tile_border_x, FileLayout::tile_border_y, tile_draw_rect_get(), FileLayout::tile_h, FileLayout::tile_w, UI_block_begin(), UI_block_draw(), UI_block_end(), UI_BTYPE_LABEL, UI_BTYPE_TEXT, UI_but_active_only(), UI_BUT_DRAG_FULL_BUT, UI_but_dragflag_enable(), UI_but_flag_disable(), UI_but_flag_enable(), UI_but_func_rename_set(), UI_but_func_tooltip_custom_set(), UI_BUT_NO_UTF8, UI_BUT_UNDO, UI_CNR_NONE, UI_draw_roundbox_corner_set(), UI_EMBOSS, UI_fontstyle_draw_simple(), UI_fontstyle_string_width(), UI_GetThemeColor4ubv(), UI_SCALE_FAC, UI_style_get(), UI_STYLE_TEXT_CENTER, UI_STYLE_TEXT_LEFT, UI_UNIT_X, UI_UNIT_Y, uiDefBut(), UNUSED_VARS_NDEBUG, uiStyle::widget, FileAttributeColumn::width, FileLayout::width, WM_event_add_notifier_ex(), WM_event_timer_add_notifier(), WM_event_timer_remove_notifier(), rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by file_main_region_draw().

◆ file_draw_preview()

◆ file_draw_string()

◆ file_draw_string_multiline()

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 )
static
Parameters
r_sx,r_syThe lower right corner of the last line drawn, plus the height of the last line. This is the cursor position on completion to allow drawing more text behind that.

Definition at line 454 of file file_draw.cc.

References uiFontStyleDraw_Params::align, BLF_boundbox(), BLF_disable(), BLF_enable(), BLF_WORD_WRAP, BLF_wordwrap(), BLI_rcti_size_y(), len, result, UI_fontstyle_draw_ex(), UI_style_get(), UI_STYLE_TEXT_LEFT, uiFontStyle::uifont_id, uiStyle::widget, rcti::xmax, rcti::xmin, rcti::ymax, and rcti::ymin.

Referenced by file_draw_invalid_asset_library_hint(), and file_draw_invalid_library_hint().

◆ file_draw_tooltip_custom_func()

◆ file_tooltip_data_create()

static FileTooltipData * file_tooltip_data_create ( const SpaceFile * sfile,
const FileDirEntry * file )
static

◆ filelist_get_details_column_string()

static const char * filelist_get_details_column_string ( FileAttributeColumnType column,
FileDirEntry * file,
const bool compact,
const bool update_stat_strings )
static

◆ renamebutton_cb()

◆ tile_draw_rect_get()

static rcti tile_draw_rect_get ( const View2D * v2d,
const FileLayout * layout,
const eFileDisplayType display,
const int file_idx,
const int padx )
static