summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2022-04-30 21:09:59 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2022-05-26 18:41:21 +0200
commit63ed194365a6fe456c2150b83e24d8f801e49126 (patch)
treeadcd652c981c3fa210dd7e13e80076b15df66080
parent0f80de3f115f1eba42917d2d7e7d1e645b022c4d (diff)
Fix image scale/crop in recipe list.
-rw-r--r--src/mainwindow.cc26
1 files changed, 18 insertions, 8 deletions
diff --git a/src/mainwindow.cc b/src/mainwindow.cc
index f5c9d9d..cb68039 100644
--- a/src/mainwindow.cc
+++ b/src/mainwindow.cc
@@ -33,6 +33,7 @@
#include <QLabel>
#include <QPixmap>
#include <QListWidget>
+#include <QPainter>
#include "database.h"
#include "viewer.h"
@@ -94,10 +95,10 @@ void MainWindow::readDatabase()
{
QListWidgetItem* listItem = new QListWidgetItem();
listItem->setText(QString::fromUtf8(item.title.data()));
+
+ QImage image;
if(!item.image.empty())
{
- QIcon icon;
- QImage image;
if(item.image.substr(0, 4) == "/9j/") // Image is base64 encoded
{
QByteArray data = QByteArray::fromBase64(QByteArray(item.image.data(), item.image.size()));
@@ -107,18 +108,27 @@ void MainWindow::readDatabase()
{
image = QImage::fromData((const uchar*)item.image.data(), item.image.size());
}
- icon.addPixmap(QPixmap::fromImage(image));
- listItem->setIcon(icon);
+ //image = image.scaled(128, 128, Qt::KeepAspectRatioByExpanding);
+ int h = image.height();
+ int w = image.width();
+ if(h > w)
+ {
+ image = image.copy({0, (h - w)/2, w, w});
+ }
+ else
+ {
+ image = image.copy({(w - h)/2, 0, h, h});
+ }
}
else
{
- QIcon icon;
- QImage image(QSize({1,1}), QImage::Format_RGBA8888);
+ image = QImage(QSize({64,64}), QImage::Format_RGBA8888);
image.fill(0);
- icon.addPixmap(QPixmap::fromImage(image));
- listItem->setIcon(icon);
}
listItem->setData(Qt::UserRole, item.id);
+
+ icon.addPixmap(QPixmap::fromImage(image));
+ listItem->setIcon(icon);
listWidget->addItem(listItem);
}
}