diff --git a/src/JdenticonProvider.cpp b/src/JdenticonProvider.cpp
index 5495b2d3..c76e2b23 100644
--- a/src/JdenticonProvider.cpp
+++ b/src/JdenticonProvider.cpp
@@ -19,6 +19,25 @@
#include "Utils.h"
#include "jdenticoninterface.h"
+static QPixmap
+clipRadius(QPixmap img, double radius)
+{
+ QPixmap out(img.size());
+ out.fill(Qt::transparent);
+
+ QPainter painter(&out);
+ painter.setRenderHint(QPainter::Antialiasing, true);
+ painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
+
+ QPainterPath ppath;
+ ppath.addRoundedRect(img.rect(), radius, radius, Qt::SizeMode::RelativeSize);
+
+ painter.setClipPath(ppath);
+ painter.drawPixmap(img.rect(), img);
+
+ return out;
+}
+
JdenticonResponse::JdenticonResponse(const QString &key,
bool crop,
double radius,
@@ -37,19 +56,20 @@ void
JdenticonResponse::run()
{
m_pixmap.fill(Qt::transparent);
- QPainter painter{&m_pixmap};
+
+ QPainter painter;
+ painter.begin(&m_pixmap);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setRenderHint(QPainter::SmoothPixmapTransform, true);
- QPainterPath ppath;
- ppath.addRoundedRect(m_pixmap.rect(), m_radius, m_radius);
-
- painter.setClipPath(ppath);
-
QSvgRenderer renderer{
jdenticonInterface_->generate(m_key, m_requestedSize.width()).toUtf8()};
renderer.render(&painter);
+ painter.end();
+
+ m_pixmap = clipRadius(m_pixmap, m_radius);
+
emit finished();
}
@@ -64,7 +84,7 @@ getJdenticonInterface()
bool plugins = pluginsDir.cd("plugins");
if (plugins) {
- for (QString fileName : pluginsDir.entryList(QDir::Files)) {
+ for (const QString &fileName : pluginsDir.entryList(QDir::Files)) {
QPluginLoader pluginLoader(pluginsDir.absoluteFilePath(fileName));
QObject *plugin = pluginLoader.instance();
if (plugin) {
|