10#include <condition_variable>
18#include <unordered_map>
50 using Reader = std::function<bool(
const std::filesystem::path& file, uint32_t pixels,
Picture& picture)>;
53 std::chrono::milliseconds inUse = std::chrono::milliseconds(500));
62 IconID Get(
const std::filesystem::path& file, std::filesystem::file_time_type modified, uint32_t pixels);
65 size_t Count()
const {
return m_entries.size(); }
70 static std::string
Key(
const std::filesystem::path& file, std::filesystem::file_time_type modified, uint32_t pixels);
80 std::list<std::string>::iterator used;
81 std::chrono::steady_clock::time_point asked;
86 std::filesystem::path file;
97 void Forget(
const std::string& key);
100 ITextSystem& m_textSystem;
103 std::chrono::milliseconds m_inUse;
104 std::unordered_map<std::string, Entry> m_entries;
105 std::list<std::string> m_used;
109 std::condition_variable m_wake;
110 std::vector<Job> m_jobs;
111 std::vector<Done> m_done;
113 std::thread m_thread;
121 bool BitmapPixels(
void* bitmap, uint32_t& width, uint32_t& height, std::vector<uint8_t>& rgba);
FileThumbnails & operator=(const FileThumbnails &)=delete
static std::string Key(const std::filesystem::path &file, std::filesystem::file_time_type modified, uint32_t pixels)
What a thumbnail is kept by: the same for the same file, time and size.
FileThumbnails(ITextSystem &textSystem, size_t capacity=512, Reader reader=ShellReader(), std::chrono::milliseconds inUse=std::chrono::milliseconds(500))
size_t Reading()
How many of those are still being read.
FileThumbnails(const FileThumbnails &)=delete
std::function< bool(const std::filesystem::path &file, uint32_t pixels, Picture &picture)> Reader
Reads file's thumbnail, at most pixels square, keeping its shape.
Definition gui_file_thumbnails.h:50
IconID Get(const std::filesystem::path &file, std::filesystem::file_time_type modified, uint32_t pixels)
The thumbnail of the file file on the disk, last written at modified, at most pixels square (the icon...
static Reader ShellReader()
The Windows shell's thumbnails (IShellItemImageFactory, thumbnails only, never the type's icon); an e...
size_t Count() const
How many are kept, read or still being read.
Definition gui_file_thumbnails.h:65
Text and icon registration, measurement, rendering and editing.
Definition gui_text_system.h:178
IconID
Handle for an icon registered with ITextSystem::RegisterIconFromSVG / RegisterIconFromSVGFile.
Definition gui_style_text.h:15
@ Invalid
Definition gui_style_text.h:15
Definition gui_logging.h:24
RGBA pixels, rows from the top, straight alpha.
Definition gui_file_thumbnails.h:44
uint2 size
Definition gui_file_thumbnails.h:45
std::vector< uint8_t > rgba
Definition gui_file_thumbnails.h:46
Definition gui_base_types.h:75