1 files changed, 22 insertions, 13 deletions
diff --git a/src/BlurhashProvider.cpp b/src/BlurhashProvider.cpp
index 87d1f51b..08dc2d40 100644
--- a/src/BlurhashProvider.cpp
+++ b/src/BlurhashProvider.cpp
@@ -6,24 +6,33 @@
#include "blurhash.hpp"
-QImage
-BlurhashProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize)
+void
+BlurhashResponse::run()
{
- QSize sz = requestedSize;
- if (sz.width() < 1 || sz.height() < 1)
- return QImage();
-
- if (size)
- *size = sz;
+ if (m_requestedSize.width() < 0 || m_requestedSize.height() < 0) {
+ m_error = QStringLiteral("Blurhash needs size request");
+ emit finished();
+ return;
+ }
+ if (m_requestedSize.width() == 0 || m_requestedSize.height() == 0) {
+ m_image = QImage(m_requestedSize, QImage::Format_RGB32);
+ m_image.fill(QColor(0, 0, 0));
+ emit finished();
+ return;
+ }
- auto decoded = blurhash::decode(
- QUrl::fromPercentEncoding(id.toUtf8()).toStdString(), sz.width(), sz.height(), 4);
+ auto decoded = blurhash::decode(QUrl::fromPercentEncoding(m_id.toUtf8()).toStdString(),
+ m_requestedSize.width(),
+ m_requestedSize.height(),
+ 4);
if (decoded.image.empty()) {
- *size = QSize();
- return QImage();
+ m_error = QStringLiteral("Failed decode!");
+ emit finished();
+ return;
}
QImage image(decoded.image.data(), decoded.width, decoded.height, QImage::Format_RGB32);
- return image.copy();
+ m_image = image.copy();
+ emit finished();
}
|