1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-28 05:34:47 +01:00

Optimization

This commit is contained in:
Martin Tůma 2021-03-19 08:42:20 +01:00
parent fa1025ea15
commit 0a87c06b0d
3 changed files with 15 additions and 11 deletions

View File

@ -340,17 +340,21 @@ bool LBLFile::loadRasterTable(Handle &hdl, quint32 offset, quint32 size,
return true; return true;
} }
QImage LBLFile::readImage(Handle &hdl, quint32 id) const QPixmap LBLFile::image(Handle &hdl, quint32 id) const
{ {
QPixmap pm;
if (id >= _imgCount) if (id >= _imgCount)
return QImage(); return pm;
if (!seek(hdl, _imgOffset + _rasters[id].offset)) if (!seek(hdl, _imgOffset + _rasters[id].offset))
return QImage(); return pm;
QByteArray ba; QByteArray ba;
ba.resize(_rasters[id].size); ba.resize(_rasters[id].size);
if (!read(hdl, ba.data(), _rasters[id].size)) if (!read(hdl, ba.data(), _rasters[id].size))
return QImage(); return pm;
return QImage::fromData(ba); pm.loadFromData(ba, "jpeg");
return pm;
} }

View File

@ -1,7 +1,7 @@
#ifndef LBLFILE_H #ifndef LBLFILE_H
#define LBLFILE_H #define LBLFILE_H
#include <QImage> #include <QPixmap>
#include "common/textcodec.h" #include "common/textcodec.h"
#include "subfile.h" #include "subfile.h"
#include "label.h" #include "label.h"
@ -33,7 +33,7 @@ public:
bool capitalize = true) const; bool capitalize = true) const;
quint8 imageIdSize() const {return _imgOffsetIdSize;} quint8 imageIdSize() const {return _imgOffsetIdSize;}
QImage readImage(Handle &hdl, quint32 id) const; QPixmap image(Handle &hdl, quint32 id) const;
private: private:
struct Image { struct Image {

View File

@ -226,13 +226,13 @@ void RasterTile::drawPolygons(QPainter *painter)
QSize size(QRectF(tl, br).toRect().size()); QSize size(QRectF(tl, br).toRect().size());
SubFile::Handle hdl(poly.raster.lbl()); SubFile::Handle hdl(poly.raster.lbl());
QImage img(poly.raster.lbl()->readImage(hdl, poly.raster.id())); QPixmap pm(poly.raster.lbl()->image(hdl, poly.raster.id()));
qreal sx = (qreal)size.width() / (qreal)img.width(); qreal sx = (qreal)size.width() / (qreal)pm.width();
qreal sy = (qreal)size.height() / (qreal)img.height(); qreal sy = (qreal)size.height() / (qreal)pm.height();
painter->save(); painter->save();
painter->scale(sx, sy); painter->scale(sx, sy);
painter->drawImage(QPointF(tl.x() / sx, tl.y() / sy), img); painter->drawPixmap(QPointF(tl.x() / sx, tl.y() / sy), pm);
painter->restore(); painter->restore();
//painter->setPen(Qt::blue); //painter->setPen(Qt::blue);