summary refs log tree commit diff
path: root/src/BlurhashProvider.cpp
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2020-03-05 21:07:18 +0000
committerGitHub <noreply@github.com>2020-03-05 21:07:18 +0000
commitfc2f08a186c2712ae50891fa4f09fda91f6c3b19 (patch)
treef0048dc4af5ce5d62b9ab7e186d52c4baeed2047 /src/BlurhashProvider.cpp
parentMerge pull request #131 from adasauce/shh (diff)
parentUpdate mtxclient in flatpak for blurhash (diff)
downloadnheko-fc2f08a186c2712ae50891fa4f09fda91f6c3b19.tar.xz
Merge pull request #137 from Nheko-Reborn/blurhash
Experimental Blurhash support
Diffstat (limited to 'src/BlurhashProvider.cpp')
-rw-r--r--src/BlurhashProvider.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/BlurhashProvider.cpp b/src/BlurhashProvider.cpp
new file mode 100644

index 00000000..08dc2d40 --- /dev/null +++ b/src/BlurhashProvider.cpp
@@ -0,0 +1,38 @@ +#include "BlurhashProvider.h" + +#include <algorithm> + +#include <QUrl> + +#include "blurhash.hpp" + +void +BlurhashResponse::run() +{ + 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(m_id.toUtf8()).toStdString(), + m_requestedSize.width(), + m_requestedSize.height(), + 4); + if (decoded.image.empty()) { + m_error = QStringLiteral("Failed decode!"); + emit finished(); + return; + } + + QImage image(decoded.image.data(), decoded.width, decoded.height, QImage::Format_RGB32); + + m_image = image.copy(); + emit finished(); +}