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
ac476ca8 Poul Sander 2026-05-18 16:47 3
#include <QString>
ac476ca8 Poul Sander 2026-05-18 16:47 4
#include <QImage>
ac476ca8 Poul Sander 2026-05-18 16:47 5
ac476ca8 Poul Sander 2026-05-18 16:47 6
class ThumbnailCache
ac476ca8 Poul Sander 2026-05-18 16:47 7
{
ac476ca8 Poul Sander 2026-05-18 16:47 8
public:
ac476ca8 Poul Sander 2026-05-18 16:47 9
    enum class Size
ac476ca8 Poul Sander 2026-05-18 16:47 10
    {
ac476ca8 Poul Sander 2026-05-18 16:47 11
        Normal = 128,
ac476ca8 Poul Sander 2026-05-18 16:47 12
        Large = 256,
ac476ca8 Poul Sander 2026-05-18 16:47 13
    };
ac476ca8 Poul Sander 2026-05-18 16:47 14
ac476ca8 Poul Sander 2026-05-18 16:47 15
    // Returns a non-null QImage if a valid cached thumbnail exists for sourcePath
ac476ca8 Poul Sander 2026-05-18 16:47 16
    // at the requested size. Validity is determined by comparing the original
ac476ca8 Poul Sander 2026-05-18 16:47 17
    // file's mtime to the Thumb::MTime tEXt chunk in the cached PNG.
ac476ca8 Poul Sander 2026-05-18 16:47 18
    static QImage load(const QString &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
ac476ca8 Poul Sander 2026-05-18 16:47 21
    // tEXt chunks. No-op if sourcePath cannot be stat'ed.
ac476ca8 Poul Sander 2026-05-18 16:47 22
    static void save(const QString &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);
ac476ca8 Poul Sander 2026-05-18 16:47 26
    static QString canonicalUri(const QString &absPath);
ac476ca8 Poul Sander 2026-05-18 16:47 27
    static QString hashedName(const QString &canonicalUri);
ac476ca8 Poul Sander 2026-05-18 16:47 28
    static bool isInsideCache(const QString &absPath);
ac476ca8 Poul Sander 2026-05-18 16:47 29
};
1970-01-01 00:00 30