Fix name used in app drawer
[harbour-pedalo.git] / src / imageprovider.cpp
1 #include <sailfishapp.h>
2 #include <QQuickImageProvider>
3 #include <QPainter>
4 #include <QColor>
5 #include <QDebug>
6 #include "settings.h"
7
8 #include "imageprovider.h"
9
10 ImageProvider::ImageProvider(Settings const & settings) : QQuickImageProvider(QQuickImageProvider::Pixmap) {
11 imageDir = settings.getImageDir();
12 }
13
14 QPixmap ImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize) {
15 QPixmap image;
16 QStringList parts = id.split('?');
17 QPixmap sourcePixmap(imageDir + parts.at(0) + ".png");
18 QPixmap alphaMask(sourcePixmap);
19
20 if (size) {
21 *size = sourcePixmap.size();
22 }
23 if (parts.length() > 1) {
24 if (QColor::isValidColor(parts.at(1))) {
25 QPainter painter(&sourcePixmap);
26 painter.setCompositionMode(QPainter::CompositionMode_SoftLight);
27 painter.fillRect(sourcePixmap.rect(), parts.at(1));
28
29 painter.setCompositionMode(QPainter::CompositionMode_DestinationIn);
30 painter.drawPixmap(sourcePixmap.rect(), alphaMask);
31 painter.end();
32 }
33 }
34 if (requestedSize.width() > 0 && requestedSize.height() > 0) {
35 image = sourcePixmap.scaled(requestedSize.width(), requestedSize.height(), Qt::IgnoreAspectRatio);
36 }
37 else {
38 image = sourcePixmap;
39 }
40
41 return image;
42 }