File indexing completed on 2024-05-19 04:29:14

0001 /*
0002  *  SPDX-FileCopyrightText: 2023 Dmitry Kazakov <dimula73@gmail.com>
0003  *
0004  *  SPDX-License-Identifier: GPL-2.0-or-later
0005  */
0006 #ifndef KISLAYERTHUMBNAILCACHE_H
0007 #define KISLAYERTHUMBNAILCACHE_H
0008 
0009 #include <kritaui_export.h>
0010 #include <QScopedPointer>
0011 #include "kis_types.h"
0012 
0013 class KisIdleTasksManager;
0014 
0015 
0016 class KRITAUI_EXPORT KisLayerThumbnailCache : public QObject
0017 {
0018     Q_OBJECT
0019 public:
0020     KisLayerThumbnailCache();
0021     ~KisLayerThumbnailCache();
0022 
0023     void setImage(KisImageSP image);
0024     void setIdleTaskManager(KisIdleTasksManager *manager);
0025     void setImage(KisImageSP image, KisIdleTasksManager *manager);
0026     void setMaxSize(int maxSize);
0027     int maxSize() const;
0028 
0029     QImage thumbnail(KisNodeSP node) const;
0030 
0031     void notifyNodeAdded(KisNodeSP node);
0032     void notifyNodeRemoved(KisNodeSP node);
0033 
0034     void startThumbnailsUpdate();
0035 
0036     void clear();
0037 
0038 Q_SIGNALS:
0039     void sigLayerThumbnailUpdated(KisNodeSP node);
0040 
0041 private Q_SLOTS:
0042     void slotThumbnailGenerated(KisNodeSP node, int seqNo, int maxSize, const QImage &thumb);
0043 private:
0044     void setIdleTaskManagerImpl(KisIdleTasksManager *manager);
0045 
0046 private:
0047     struct Private;
0048     QScopedPointer<Private> m_d;
0049 };
0050 
0051 #endif // KISLAYERTHUMBNAILCACHE_H