Qt 5.10 Book Examples
ImageProvider.cpp
Go to the documentation of this file.
1 // ======================================================================
2 // ImageProvider.cpp
3 // ======================================================================
4 // This file is a part of the book
5 // "Qt 5.10 Professional programming with C++"
6 // http://qt-book.com
7 // ======================================================================
8 // Copyright (c) 2017 by Max Schlee
9 // ======================================================================
10 
11 #include "ImageProvider.h"
12 
13 // ----------------------------------------------------------------------
15  : QQuickImageProvider(QQuickImageProvider::Image)
16 {
17 }
18 
19 // ----------------------------------------------------------------------
20 QImage ImageProvider::brightness(const QImage& imgOrig, int n)
21 {
22  QImage imgTemp = imgOrig.convertToFormat(QImage::Format_ARGB32);
23  qint32 nHeight = imgTemp.height();
24  qint32 nWidth = imgTemp.width();
25 
26  for (qint32 y = 0; y < nHeight; ++y) {
27  QRgb* tempLine = reinterpret_cast<QRgb*>(imgTemp.scanLine(y));
28 
29  for (qint32 x = 0; x < nWidth; ++x) {
30  int r = qRed(*tempLine) + n;
31  int g = qGreen(*tempLine) + n;
32  int b = qBlue(*tempLine) + n;
33  int a = qAlpha(*tempLine);
34 
35  *tempLine++ = qRgba(r > 255 ? 255 : r < 0 ? 0 : r,
36  g > 255 ? 255 : g < 0 ? 0 : g,
37  b > 255 ? 255 : b < 0 ? 0 : b,
38  a
39  );
40  }
41  }
42 
43  return imgTemp;
44 }
45 
46 // ----------------------------------------------------------------------
47 QImage ImageProvider::requestImage(const QString& strId, QSize* ps, const QSize& /*requestedSize*/)
48 {
49  QStringList lst = strId.split(";");
50  bool bOk = false;
51  int nBrightness = lst.last().toInt(&bOk);
52  QImage img = brightness(QImage(":/" + lst.first()), nBrightness);
53 
54  if (ps) {
55  *ps = img.size();
56  }
57 
58  return img;
59 }
QImage requestImage(const QString &, QSize *, const QSize &)