OSDN Git Service

サムネイル生成を別スレッド化
[gefu/Gefu.git] / thumbnailworker.cpp
1 #include "thumbnailworker.h"
2
3 ThumbnailWorker::ThumbnailWorker(QObject *parent) :
4     QObject(parent)
5 {
6 }
7
8 void ThumbnailWorker::doWork()
9 {
10     QPixmap pixmap(m_path);
11     if (pixmap.isNull()) {
12         emit finished();
13         return;
14     }
15
16     if (pixmap.width() > m_size.width() || pixmap.height() > m_size.height()) {
17         double scaleX = 1.0 * m_size.width() / pixmap.width();
18         double scaleY = 1.0 * m_size.height() / pixmap.height();
19         double scaleFactor = (scaleX > scaleY) ? scaleY : scaleX;
20
21         pixmap = pixmap.scaled(pixmap.size() * scaleFactor,
22                                Qt::IgnoreAspectRatio,
23                                Qt::SmoothTransformation);
24     }
25
26     emit resultReady(m_path, pixmap);
27     emit finished();
28 }