File indexing completed on 2024-04-28 04:05:03

0001 /*
0002     SPDX-FileCopyrightText: 2010 Stefan Majewsky <majewsky@gmx.net>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-only
0005 */
0006 
0007 #ifndef KGAMERENDEREDITEM_H
0008 #define KGAMERENDEREDITEM_H
0009 
0010 // own
0011 #include "kdegames_export.h"
0012 #include "kgamerendererclient.h"
0013 // Qt
0014 #include <QGraphicsItem>
0015 // Std
0016 #include <memory>
0017 
0018 class KGameRenderedItemPrivate;
0019 
0020 /**
0021  * @class KGameRenderedItem kgamerendereditem.h <KGameRenderedItem>
0022  * @short A QGraphicsPixmapItem which reacts to theme changes automatically.
0023  *
0024  * This class is a QGraphicsPixmapItem which retrieves its pixmap from a
0025  * KGameRenderer, and updates it automatically when the KGameRenderer changes
0026  * the theme.
0027  * @since 4.6
0028  */
0029 class KDEGAMES_EXPORT KGameRenderedItem : public QGraphicsPixmapItem, public KGameRendererClient
0030 {
0031 public:
0032     /// Creates a new KGameRenderedItem which renders the sprite with the
0033     /// given @a spriteKey as provided by the given @a renderer.
0034     KGameRenderedItem(KGameRenderer *renderer, const QString &spriteKey, QGraphicsItem *parent = nullptr);
0035     ~KGameRenderedItem() override;
0036 
0037 protected:
0038     void receivePixmap(const QPixmap &pixmap) override;
0039 
0040 private:
0041     friend class KGameRenderedItemPrivate;
0042     std::unique_ptr<KGameRenderedItemPrivate> const d_ptr;
0043     Q_DECLARE_PRIVATE(KGameRenderedItem)
0044 };
0045 
0046 #endif // KGAMERENDEREDITEM_H