File indexing completed on 2024-04-28 04:05:02
0001 /* 0002 SPDX-FileCopyrightText: 2012 Viranch Mehta <viranch.mehta@gmail.com> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #ifndef KGAMEIMAGEPROVIDER_H 0008 #define KGAMEIMAGEPROVIDER_H 0009 0010 // Qt 0011 #include <QQuickImageProvider> 0012 #include <QSvgRenderer> 0013 0014 class KGameThemeProvider; 0015 0016 /** 0017 * @class KGameImageProvider 0018 * @short A QDeclarativeImageProvider that renders requested sprites and 0019 * returns corresponding pixmap to the QML view. 0020 * 0021 * This class is a QDeclarativeImageProvider that takes a KGameThemeProvider 0022 * in its constructor and uses it to get full path to SVGs. These theme 0023 * SVGs are read and requested sprite pixmap is extracted and given to 0024 * the QML image element that requests it. 0025 * 0026 * For porting KDE games to QML, there is a KGameItem QML component provided 0027 * by KGameCore QML plugin which is a small wrapper to request pixmaps from 0028 * this KGameImageProvider. See KGameItem's documentation for details. 0029 * @since 4.11 0030 */ 0031 class KGameImageProvider : public QQuickImageProvider 0032 { 0033 public: 0034 /// Construcs a new KGameImageProvider with the supplied KGameThemeProvider 0035 /// @param provider The KGameThemeProvider used to discover the game's 0036 /// themes. 0037 explicit KGameImageProvider(KGameThemeProvider *provider); 0038 0039 /// Reimplemented method that is called when a sprite pixmap is requested 0040 QImage requestImage(const QString &source, QSize *size, const QSize &requestedSize) override; 0041 0042 private: 0043 void reloadRenderer(); 0044 0045 QString m_themeName; 0046 KGameThemeProvider *m_provider; 0047 QSvgRenderer m_renderer; 0048 }; 0049 0050 #endif // KGAMEIMAGEPROVIDER_H