git repos / SagoImageBrowser

blame: src/thumbnailcache.h

normal view · raw

ac476ca8 Poul Sander 2026-05-18 16:47 1
#pragma once
ac476ca8 Poul Sander 2026-05-18 16:47 2
80a9926d Poul Sander 2026-05-19 20:28 3
#include <QByteArray>
ac476ca8 Poul Sander 2026-05-18 16:47 4
#include <QString>
ac476ca8 Poul Sander 2026-05-18 16:47 5
#include <QImage>
ac476ca8 Poul Sander 2026-05-18 16:47 6
ac476ca8 Poul Sander 2026-05-18 16:47 7
class ThumbnailCache
ac476ca8 Poul Sander 2026-05-18 16:47 8
{
ac476ca8 Poul Sander 2026-05-18 16:47 9
public:
ac476ca8 Poul Sander 2026-05-18 16:47 10
    enum class Size
ac476ca8 Poul Sander 2026-05-18 16:47 11
    {
ac476ca8 Poul Sander 2026-05-18 16:47 12
        Normal = 128,
ac476ca8 Poul Sander 2026-05-18 16:47 13
        Large = 256,
ac476ca8 Poul Sander 2026-05-18 16:47 14
    };
ac476ca8 Poul Sander 2026-05-18 16:47 15
ac476ca8 Poul Sander 2026-05-18 16:47 16
    // Returns a non-null QImage if a valid cached thumbnail exists for sourcePath
80a9926d Poul Sander 2026-05-19 20:28 17
    // at the requested size. sourcePath must be the raw native OS byte string.
80a9926d Poul Sander 2026-05-19 20:28 18
    static QImage load(const QByteArray &sourcePath, Size size);
ac476ca8 Poul Sander 2026-05-18 16:47 19
ac476ca8 Poul Sander 2026-05-18 16:47 20
    // Atomically writes thumbImage to the cache with the required Freedesktop
80a9926d Poul Sander 2026-05-19 20:28 21
    // tEXt chunks. sourcePath must be the raw native OS byte string.
80a9926d Poul Sander 2026-05-19 20:28 22
    static void save(const QByteArray &sourcePath, Size size, const QImage &thumbImage);
ac476ca8 Poul Sander 2026-05-18 16:47 23
ac476ca8 Poul Sander 2026-05-18 16:47 24
    static QString cacheRoot();
ac476ca8 Poul Sander 2026-05-18 16:47 25
    static QString subdirFor(Size size);
80a9926d Poul Sander 2026-05-19 20:28 26
    // Canonical file:// URI built from raw byte path (correct percent-encoding)
80a9926d Poul Sander 2026-05-19 20:28 27
    static QByteArray canonicalUri(const QByteArray &absPath);
80a9926d Poul Sander 2026-05-19 20:28 28
    static QString hashedName(const QByteArray &canonicalUri);
80a9926d Poul Sander 2026-05-19 20:28 29
    static bool isInsideCache(const QByteArray &absPath);
ac476ca8 Poul Sander 2026-05-18 16:47 30
};
1970-01-01 00:00 31