X-Git-Url: https://www.flypig.org.uk/git/?p=harbour-pedalo.git;a=blobdiff_plain;f=src%2Fimageprovider.cpp;fp=src%2Fimageprovider.cpp;h=431fd23b0a67dac7c4466a194305ee01954ba197;hp=0000000000000000000000000000000000000000;hb=7d6ca1150d70c17469e48d71920dfe6083e1a719;hpb=b6fbaf91f247acb49e874b036d0df84f1850328a diff --git a/src/imageprovider.cpp b/src/imageprovider.cpp new file mode 100644 index 0000000..431fd23 --- /dev/null +++ b/src/imageprovider.cpp @@ -0,0 +1,38 @@ +#include +#include +#include +#include +#include +#include "settings.h" + +#include "imageprovider.h" + +ImageProvider::ImageProvider(Settings const & settings) : QQuickImageProvider(QQuickImageProvider::Pixmap) { + imageDir = settings.getImageDir(); +} + +QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) { + QPixmap image; + QStringList parts = id.split('?'); + QPixmap sourcePixmap(imageDir + parts.at(0) + ".png"); + + if (size) { + *size = sourcePixmap.size(); + } + if (parts.length() > 1) { + if (QColor::isValidColor(parts.at(1))) { + QPainter painter(&sourcePixmap); + painter.setCompositionMode(QPainter::CompositionMode_SourceIn); + painter.fillRect(sourcePixmap.rect(), parts.at(1)); + painter.end(); + } + } + if (requestedSize.width() > 0 && requestedSize.height() > 0) { + image = sourcePixmap.scaled(requestedSize.width(), requestedSize.height(), Qt::IgnoreAspectRatio); + } + else { + image = sourcePixmap; + } + + return image; +}