git repos / SagoImageBrowser

blame: thumbnailworker.cpp

normal view · raw

cec3b5da Poul Sander 2026-02-19 19:17 1
#include "thumbnailworker.h"
cec3b5da Poul Sander 2026-02-19 19:17 2
#include <QImageReader>
cec3b5da Poul Sander 2026-02-19 19:17 3
6fcd6c90 Poul Sander 2026-02-19 21:12 4
ThumbnailWorker::ThumbnailWorker(const QString &path,
6fcd6c90 Poul Sander 2026-02-19 21:12 5
                                 int row,
6fcd6c90 Poul Sander 2026-02-19 21:12 6
                                 std::atomic_bool *cancelFlag)
6fcd6c90 Poul Sander 2026-02-19 21:12 7
    : m_path(path),
6fcd6c90 Poul Sander 2026-02-19 21:12 8
      m_row(row),
6fcd6c90 Poul Sander 2026-02-19 21:12 9
      m_cancelFlag(cancelFlag)
cec3b5da Poul Sander 2026-02-19 19:17 10
{
cec3b5da Poul Sander 2026-02-19 19:17 11
    setAutoDelete(true);
cec3b5da Poul Sander 2026-02-19 19:17 12
}
cec3b5da Poul Sander 2026-02-19 19:17 13
cec3b5da Poul Sander 2026-02-19 19:17 14
void ThumbnailWorker::run()
cec3b5da Poul Sander 2026-02-19 19:17 15
{
6fcd6c90 Poul Sander 2026-02-19 21:12 16
    if (*m_cancelFlag)
6fcd6c90 Poul Sander 2026-02-19 21:12 17
        return;
6fcd6c90 Poul Sander 2026-02-19 21:12 18
cec3b5da Poul Sander 2026-02-19 19:17 19
    QImageReader reader(m_path);
cec3b5da Poul Sander 2026-02-19 19:17 20
    reader.setAutoTransform(true);
cec3b5da Poul Sander 2026-02-19 19:17 21
cec3b5da Poul Sander 2026-02-19 19:17 22
    QImage image = reader.read();
6fcd6c90 Poul Sander 2026-02-19 21:12 23
6fcd6c90 Poul Sander 2026-02-19 21:12 24
    if (*m_cancelFlag)
6fcd6c90 Poul Sander 2026-02-19 21:12 25
        return;
cec3b5da Poul Sander 2026-02-19 19:17 26
cec3b5da Poul Sander 2026-02-19 19:17 27
    if (!image.isNull())
cec3b5da Poul Sander 2026-02-19 19:17 28
    {
b614a581 Poul Sander 2026-02-19 21:18 29
        // Scale to cover the 128x128 area, then center-crop
b614a581 Poul Sander 2026-02-19 21:18 30
        QImage scaled = image.scaled(128, 128,
b614a581 Poul Sander 2026-02-19 21:18 31
                                     Qt::KeepAspectRatioByExpanding,
b614a581 Poul Sander 2026-02-19 21:18 32
                                     Qt::SmoothTransformation);
b614a581 Poul Sander 2026-02-19 21:18 33
        int x = (scaled.width()  - 128) / 2;
b614a581 Poul Sander 2026-02-19 21:18 34
        int y = (scaled.height() - 128) / 2;
b614a581 Poul Sander 2026-02-19 21:18 35
        QImage thumb = scaled.copy(x, y, 128, 128);
6fcd6c90 Poul Sander 2026-02-19 21:12 36
        emit finished(m_row, thumb);
cec3b5da Poul Sander 2026-02-19 19:17 37
    }
cec3b5da Poul Sander 2026-02-19 19:17 38
}
1970-01-01 00:00 39