/
githubmirror
/
Files
Обзор
Документация
Войти
/
githubmirror
/
Files
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Files.App/Utils/Storage/Helpers/FileThumbnailHelper.cs
64 строки
2 KB
Saravanan G
Feature: Added thumbnail generation for items in the Windows Fonts folder (#17843)
14 июн 2026, 17:20
Не верифицирован
14 июн 2026, 17:20
dfa9250
Код
Авторство
О чём код?
// Copyright (c) Files Community // Licensed under the MIT License. using Files.Shared.Helpers; using System.IO; using Windows.Storage.FileProperties; namespace Files.App.Utils.Storage { public static class FileThumbnailHelper { /// <summary> /// Returns icon or thumbnail for given file or folder /// </summary> public static async Task<byte[]?> GetIconAsync(string path, uint requestedSize, bool isFolder, IconOptions iconOptions) { var size = iconOptions.HasFlag(IconOptions.UseCurrentScale) ? requestedSize * App.AppModel.AppWindowDPI : requestedSize; // Ensure size is at least 1 to prevent layout errors size = Math.Max(1, size); if (!isFolder && !iconOptions.HasFlag(IconOptions.ReturnIconOnly) && !iconOptions.HasFlag(IconOptions.ReturnOnlyIfCached)) { var extension = Path.GetExtension(path); //Restrict to only %windir%\fonts if (FileExtensionHelpers.IsFontFile(extension) && PathHelpers.IsInSystemFontsFolder(path)) { var winrtThumbnail = await FontFileHelper.GetWinRTThumbnailAsync(path, (uint)size); if (winrtThumbnail is not null) return winrtThumbnail; if (!extension.Equals(".fon", StringComparison.OrdinalIgnoreCase)) { var fontThumbnail = await STATask.Run(() => FontFileHelper.GenerateFontThumbnail(path, (int)size), App.Logger); if (fontThumbnail is not null) return fontThumbnail; } } } var resolvedPath = path is not null && path.StartsWith(@"\\?\", StringComparison.Ordinal) ? MtpHelpers.ResolveMtpShellPath(path) ?? path : path; return await STATask.Run(() => Win32Helper.GetIcon(resolvedPath, (int)size, isFolder, iconOptions), App.Logger); } /// <summary> /// Returns overlay for given file or folder /// /// </summary> /// <param name="path"></param> /// <param name="isFolder"></param> /// <returns></returns> public static async Task<byte[]?> GetIconOverlayAsync(string path, bool isFolder) => await STATask.Run(() => Win32Helper.GetIconOverlay(path, isFolder), App.Logger); [Obsolete] public static async Task<byte[]?> LoadIconFromPathAsync(string filePath, uint thumbnailSize, ThumbnailMode thumbnailMode, ThumbnailOptions thumbnailOptions, bool isFolder = false) { var result = await GetIconAsync(filePath, thumbnailSize, isFolder, IconOptions.None); return result; } } }