1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: 2006 Hamish Rodda <rodda@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-only |
6 | */ |
7 | |
8 | #ifndef KICONENGINE_H |
9 | #define KICONENGINE_H |
10 | |
11 | #include "kiconthemes_export.h" |
12 | #include <QIconEngine> |
13 | #include <QPointer> |
14 | |
15 | class KIconColors; |
16 | class KIconLoader; |
17 | class KIconEnginePrivate; |
18 | |
19 | /** |
20 | * @class KIconEngine kiconengine.h KIconEngine |
21 | * |
22 | * \short A class to provide rendering of KDE icons. |
23 | * |
24 | * Currently, this class is not much more than a wrapper around QIconEngine. |
25 | * However, it should not be difficult to extend with features such as SVG |
26 | * rendered icons. |
27 | * |
28 | * Icon themes specifying a KDE-Extensions string list setting, will limit |
29 | * themselves to checking these extensions exclusively, in the order specified |
30 | * in the setting. |
31 | * |
32 | * @author Hamish Rodda <rodda@kde.org> |
33 | */ |
34 | class KICONTHEMES_EXPORT KIconEngine : public QIconEngine // exported for kdelibs4support's KIcon and plasma integration |
35 | { |
36 | public: |
37 | /** |
38 | * Constructs an icon engine for a KDE named icon. |
39 | * |
40 | * @param iconName the name of the icon to load |
41 | * @param iconLoader The KDE icon loader that this engine is to use. |
42 | * @param overlays Add one or more overlays to the icon. See KIconLoader::Overlays. |
43 | * |
44 | * @sa KIconLoader |
45 | */ |
46 | KIconEngine(const QString &iconName, KIconLoader *iconLoader, const QStringList &overlays); |
47 | |
48 | /** |
49 | * \overload |
50 | */ |
51 | KIconEngine(const QString &iconName, KIconLoader *iconLoader); |
52 | |
53 | /** |
54 | * Constructs an icon engine for a KDE named icon with a specific palette. |
55 | * |
56 | * @param iconName the name of the icon to load |
57 | * @param colors defines the colors we want to be applied on this icon |
58 | * @param iconLoader The KDE icon loader that this engine is to use. |
59 | */ |
60 | KIconEngine(const QString &iconName, const KIconColors &colors, KIconLoader *iconLoader); |
61 | |
62 | /** |
63 | * Constructs an icon engine for a KDE named icon with a specific palette and overlays. |
64 | * |
65 | * @param iconName the name of the icon to load |
66 | * @param colors defines the colors we want to be applied on this icon |
67 | * @param iconLoader The KDE icon loader that this engine is to use. |
68 | * @param overlays Add one or more overlays to the icon. See KIconLoader::Overlays. |
69 | * |
70 | * @since 6.1 |
71 | */ |
72 | KIconEngine(const QString &iconName, const KIconColors &colors, KIconLoader *iconLoader, const QStringList &overlays); |
73 | |
74 | /** |
75 | * Destructor. |
76 | */ |
77 | ~KIconEngine() override; |
78 | |
79 | /// Reimplementation |
80 | QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) override; |
81 | /// Reimplementation |
82 | void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override; |
83 | /// Reimplementation |
84 | QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override; |
85 | QPixmap scaledPixmap(const QSize &size, QIcon::Mode mode, QIcon::State state, qreal scale) override; |
86 | |
87 | /// Reimplementation |
88 | QString iconName() override; |
89 | /// Reimplementation |
90 | QList<QSize> availableSizes(QIcon::Mode mode, QIcon::State state) override; |
91 | |
92 | bool isNull() override; |
93 | |
94 | QString key() const override; |
95 | QIconEngine *clone() const override; |
96 | bool read(QDataStream &in) override; |
97 | bool write(QDataStream &out) const override; |
98 | |
99 | private: |
100 | // TODO KF6: move those into the d-pointer |
101 | QPixmap createPixmap(const QSize &size, qreal scale, QIcon::Mode mode, QIcon::State state); |
102 | QString mIconName; |
103 | QStringList mOverlays; |
104 | KIconEnginePrivate *const d; |
105 | }; |
106 | |
107 | #endif |
108 | |