1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2025-06-27 03:29:16 +02:00

Read the image size only when actually needed

This commit is contained in:
2021-10-04 21:00:29 +02:00
parent 06dac47550
commit 3cfa5456e9
8 changed files with 19 additions and 55 deletions

View File

@ -2,38 +2,37 @@
#include <QDesktopServices>
#include <QFileInfo>
#include <QMouseEvent>
#include "data/imageinfo.h"
#include "thumbnail.h"
static QSize thumbnailSize(const ImageInfo &img, int limit)
static QSize thumbnailSize(const QSize &size, int limit)
{
int width, height;
if (img.size().width() > img.size().height()) {
width = qMin(img.size().width(), limit);
qreal ratio = img.size().width() / (qreal)img.size().height();
if (size.width() > size.height()) {
width = qMin(size.width(), limit);
qreal ratio = size.width() / (qreal)size.height();
height = (int)(width / ratio);
} else {
height = qMin(img.size().height(), limit);
qreal ratio = img.size().height() / (qreal)img.size().width();
height = qMin(size.height(), limit);
qreal ratio = size.height() / (qreal)size.width();
width = (int)(height / ratio);
}
return QSize(width, height);
}
Thumbnail::Thumbnail(const ImageInfo &img, int size, QWidget *parent)
Thumbnail::Thumbnail(const QString &path, int limit, QWidget *parent)
: QLabel(parent)
{
QImageReader reader(img.path());
QImageReader reader(path);
reader.setAutoTransform(true);
reader.setScaledSize(thumbnailSize(img, size));
reader.setScaledSize(thumbnailSize(reader.size(), limit));
setPixmap(QPixmap::fromImage(reader.read()));
setCursor(Qt::PointingHandCursor);
setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
_path = QFileInfo(img.path()).absoluteFilePath();
_path = QFileInfo(path).absoluteFilePath();
}
void Thumbnail::mousePressEvent(QMouseEvent *event)

View File

@ -8,7 +8,7 @@ class ImageInfo;
class Thumbnail : public QLabel
{
public:
Thumbnail(const ImageInfo &img, int size, QWidget *parent = 0);
Thumbnail(const QString &path, int limit, QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *event);

View File

@ -5,13 +5,12 @@
#include <QList>
#include <QVector>
#include "common/kv.h"
#include "data/imageinfo.h"
class ToolTip
{
public:
const QList<KV<QString, QString> > &list() const {return _list;}
const QVector<ImageInfo> &images() const {return _images;}
const QVector<QString> &images() const {return _images;}
bool isEmpty() const
{
@ -31,14 +30,14 @@ public:
{
_list.append(KV<QString, QString>(key, value));
}
void setImages(const QVector<ImageInfo> &images)
void setImages(const QVector<QString> &images)
{
_images = images;
}
private:
QList<KV<QString, QString> > _list;
QVector<ImageInfo> _images;
QVector<QString> _images;
};
#endif // TOOLTIP_H