DtkGui
DTK Gui module
载入中...
搜索中...
未找到
xdgiconproxyengine_p.h
1// SPDX-FileCopyrightText: 2022-2023 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef XDGICONPROXYENGINE_H
6#define XDGICONPROXYENGINE_H
7
8#include <dtkgui_global.h>
9#include <QHash>
10
11#if XDG_ICON_VERSION_MAR >= 3
12#include <QIconEngine>
13
14#endif
15
16namespace DEEPIN_XDG_THEME {
17enum PaletteType {
18 Text,
19 Background,
20 Highlight,
21};
22typedef QMap<PaletteType, QString> PALETTE_MAP;
23};
24
25struct ScalableEntry;
26class QIconLoaderEngineEntry;
27class XdgIconLoaderEngine;
28DGUI_BEGIN_NAMESPACE
29
30#if (XDG_ICON_VERSION_MAR >= 3)
31class Q_DECL_HIDDEN XdgIconProxyEngine : public QIconEngine
32{
33public:
34 XdgIconProxyEngine(XdgIconLoaderEngine *proxy);
35 virtual ~XdgIconProxyEngine() override;
36
37 static quint64 entryCacheKey(const ScalableEntry *color_entry, const QIcon::Mode mode, const QIcon::State state);
38
39 QPixmap followColorPixmap(ScalableEntry *color_entry, const QSize &size, QIcon::Mode mode, QIcon::State state);
40
41 QPixmap pixmapByEntry(QIconLoaderEngineEntry *entry, const QSize &size, QIcon::Mode mode, QIcon::State state);
42 void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override;
43 QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
44 void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state) override;
45 void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state) override;
46 QString key() const override;
47 QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state) override;
48 QIconEngine *clone() const override;
49 bool read(QDataStream &in) override;
50 bool write(QDataStream &out) const override;
51 void virtual_hook(int id, void *data) override;
52
53private:
54 XdgIconLoaderEngine *engine;
55 QHash<quint64, DEEPIN_XDG_THEME::PALETTE_MAP> entryToColorScheme;
56 QIcon::Mode lastMode;
57};
58#endif
59
60DGUI_END_NAMESPACE
61
62#endif // XDGICONPROXYENGINE_H