UI: File Browser Thumbnail View SVG Icons
Use the new SVG Icons for large document and folder images when in thumbnail view in File Browser. Pull Request: https://projects.blender.org/blender/blender/pulls/123754
This commit is contained in:
committed by
Harley Acheson
parent
5998bab73f
commit
1d47e3276b
@@ -641,29 +641,45 @@ static void file_draw_preview(const FileList *files,
|
||||
|
||||
if (!is_loading) {
|
||||
/* Don't show outer document image if loading - too flashy. */
|
||||
IMMDrawPixelsTexState state = immDrawPixelsTexSetup(GPU_SHADER_3D_IMAGE_COLOR);
|
||||
immDrawPixelsTexTiled_scaling(&state,
|
||||
float(xco),
|
||||
float(yco),
|
||||
imb->x,
|
||||
imb->y,
|
||||
GPU_RGBA8,
|
||||
true,
|
||||
imb->byte_buffer.data,
|
||||
scale,
|
||||
scale,
|
||||
1.0f,
|
||||
1.0f,
|
||||
document_img_col);
|
||||
if (is_icon) {
|
||||
/* Draw large folder or document icon. */
|
||||
const int icon = (file->typeflag & FILE_TYPE_DIR) ? ICON_FILE_FOLDER_LARGE : ICON_FILE_LARGE;
|
||||
uchar icon_col[4];
|
||||
rgba_float_to_uchar(icon_col, document_img_col);
|
||||
float icon_x = float(xco) + (file->typeflag & FILE_TYPE_DIR ? 0.0f : ex * -0.142f);
|
||||
float icon_y = float(yco) + (file->typeflag & FILE_TYPE_DIR ? ex * -0.11f : 0.0f);
|
||||
UI_icon_draw_ex(icon_x,
|
||||
icon_y,
|
||||
icon,
|
||||
icon_aspect / 4.0f / UI_SCALE_FAC,
|
||||
document_img_col[3],
|
||||
0.0f,
|
||||
icon_col,
|
||||
false,
|
||||
UI_NO_ICON_OVERLAY_TEXT);
|
||||
}
|
||||
else {
|
||||
IMMDrawPixelsTexState state = immDrawPixelsTexSetup(GPU_SHADER_3D_IMAGE_COLOR);
|
||||
immDrawPixelsTexTiled_scaling(&state,
|
||||
float(xco),
|
||||
float(yco),
|
||||
imb->x,
|
||||
imb->y,
|
||||
GPU_RGBA8,
|
||||
true,
|
||||
imb->byte_buffer.data,
|
||||
scale,
|
||||
scale,
|
||||
1.0f,
|
||||
1.0f,
|
||||
document_img_col);
|
||||
}
|
||||
}
|
||||
|
||||
GPU_blend(GPU_BLEND_ALPHA);
|
||||
|
||||
if (icon && is_icon) {
|
||||
/* Small icon in the middle of large image, scaled to fit container and UI scale */
|
||||
float icon_x, icon_y;
|
||||
const float icon_size = 16.0f / icon_aspect * UI_SCALE_FAC;
|
||||
float icon_opacity = 0.3f;
|
||||
float icon_opacity = 0.4f;
|
||||
uchar icon_color[4] = {0, 0, 0, 255};
|
||||
if (rgb_to_grayscale(document_img_col) < 0.5f) {
|
||||
icon_color[0] = 255;
|
||||
@@ -676,12 +692,12 @@ static void file_draw_preview(const FileList *files,
|
||||
UI_GetThemeColor4ubv(TH_TEXT, icon_color);
|
||||
}
|
||||
|
||||
icon_x = xco + (ex / 2.0f) - (icon_size / 2.0f);
|
||||
icon_y = yco + (ey / 2.0f) - (icon_size * ((file->typeflag & FILE_TYPE_DIR) ? 0.78f : 0.75f));
|
||||
icon_x = xco + (file->typeflag & FILE_TYPE_DIR ? ex * 0.31f : ex * 0.178f);
|
||||
icon_y = yco + (file->typeflag & FILE_TYPE_DIR ? ex * 0.11f : ex * 0.15f);
|
||||
UI_icon_draw_ex(icon_x,
|
||||
icon_y,
|
||||
is_loading ? ICON_TEMP : icon,
|
||||
icon_aspect / UI_SCALE_FAC,
|
||||
icon_aspect / UI_SCALE_FAC / (file->typeflag & FILE_TYPE_DIR ? 1.5f : 2.0f),
|
||||
icon_opacity,
|
||||
0.0f,
|
||||
icon_color,
|
||||
@@ -735,7 +751,9 @@ static void file_draw_preview(const FileList *files,
|
||||
UI_NO_ICON_OVERLAY_TEXT);
|
||||
}
|
||||
}
|
||||
else if (icon && ((!is_icon && !(file->typeflag & FILE_TYPE_FTFONT)) || is_loading)) {
|
||||
else if (icon && icon_aspect < 2.0f &&
|
||||
((!is_icon && !(file->typeflag & FILE_TYPE_FTFONT)) || is_loading))
|
||||
{
|
||||
/* Smaller, fainter icon at bottom-left for preview image thumbnail, but not for fonts. */
|
||||
float icon_x, icon_y;
|
||||
const uchar dark[4] = {0, 0, 0, 255};
|
||||
@@ -783,6 +801,8 @@ static void file_draw_preview(const FileList *files,
|
||||
|
||||
/* Contrasting outline around some preview types. */
|
||||
if (show_outline) {
|
||||
GPU_blend(GPU_BLEND_ALPHA);
|
||||
|
||||
GPUVertFormat *format = immVertexFormat();
|
||||
uint pos = GPU_vertformat_attr_add(format, "pos", GPU_COMP_F32, 2, GPU_FETCH_FLOAT);
|
||||
immBindBuiltinProgram(GPU_SHADER_3D_UNIFORM_COLOR);
|
||||
@@ -1145,7 +1165,7 @@ void file_draw_list(const bContext *C, ARegion *region)
|
||||
bool do_drag;
|
||||
uchar text_col[4];
|
||||
const bool draw_columnheader = (params->display == FILE_VERTICALDISPLAY);
|
||||
const float thumb_icon_aspect = std::min(64.0f / float(params->thumbnail_size), 2.0f);
|
||||
const float thumb_icon_aspect = std::min(64.0f / float(params->thumbnail_size), 4.0f);
|
||||
|
||||
numfiles = filelist_files_ensure(files);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user