summary refs log tree commit diff
path: root/src/BlurhashProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/BlurhashProvider.cpp')
-rw-r--r--src/BlurhashProvider.cpp35
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(); }