Krita Source Code Documentation
Loading...
Searching...
No Matches
KisLayerThumbnailCache Class Reference

#include <KisLayerThumbnailCache.h>

+ Inheritance diagram for KisLayerThumbnailCache:

Classes

struct  Private
 

Signals

void sigLayerThumbnailUpdated (KisNodeSP node)
 

Public Member Functions

void clear ()
 
 KisLayerThumbnailCache ()
 
int maxSize () const
 
void notifyNodeAdded (KisNodeSP node)
 
void notifyNodeRemoved (KisNodeSP node)
 
void setIdleTaskManager (KisIdleTasksManager *manager)
 
void setImage (KisImageSP image)
 
void setImage (KisImageSP image, KisIdleTasksManager *manager)
 
void setMaxSize (int maxSize)
 
void startThumbnailsUpdate ()
 
QImage thumbnail (KisNodeSP node) const
 
 ~KisLayerThumbnailCache ()
 

Private Slots

void slotThumbnailGenerated (KisNodeSP node, int seqNo, int maxSize, const QImage &thumb)
 

Private Member Functions

void setIdleTaskManagerImpl (KisIdleTasksManager *manager)
 

Private Attributes

QScopedPointer< Privatem_d
 

Detailed Description

Definition at line 18 of file KisLayerThumbnailCache.h.

Constructor & Destructor Documentation

◆ KisLayerThumbnailCache()

KisLayerThumbnailCache::KisLayerThumbnailCache ( )

Definition at line 102 of file KisLayerThumbnailCache.cpp.

103 : m_d(new Private())
104{
105}
QScopedPointer< Private > m_d

◆ ~KisLayerThumbnailCache()

KisLayerThumbnailCache::~KisLayerThumbnailCache ( )
default

Member Function Documentation

◆ clear()

void KisLayerThumbnailCache::clear ( )

Definition at line 206 of file KisLayerThumbnailCache.cpp.

207{
208 m_d->cache.clear();
209}

References m_d.

◆ maxSize()

int KisLayerThumbnailCache::maxSize ( ) const

Definition at line 155 of file KisLayerThumbnailCache.cpp.

156{
157 return m_d->maxSize;
158}

References m_d.

◆ notifyNodeAdded()

void KisLayerThumbnailCache::notifyNodeAdded ( KisNodeSP node)

Definition at line 196 of file KisLayerThumbnailCache.cpp.

197{
198 Q_UNUSED(node);
199 m_d->cleanupDeletedNodes();
200
201 if (m_d->image && m_d->taskGuard.isValid()) {
202 m_d->taskGuard.trigger();
203 }
204}

References m_d.

◆ notifyNodeRemoved()

void KisLayerThumbnailCache::notifyNodeRemoved ( KisNodeSP node)

Definition at line 190 of file KisLayerThumbnailCache.cpp.

191{
192 Q_UNUSED(node);
193 m_d->cleanupDeletedNodes();
194}

References m_d.

◆ setIdleTaskManager()

void KisLayerThumbnailCache::setIdleTaskManager ( KisIdleTasksManager * manager)

Definition at line 132 of file KisLayerThumbnailCache.cpp.

133{
134 setIdleTaskManagerImpl(manager);
135 if (m_d->image && m_d->taskGuard.isValid()) {
136 m_d->taskGuard.trigger();
137 }
138}
void setIdleTaskManagerImpl(KisIdleTasksManager *manager)

References m_d, and setIdleTaskManagerImpl().

◆ setIdleTaskManagerImpl()

void KisLayerThumbnailCache::setIdleTaskManagerImpl ( KisIdleTasksManager * manager)
private

Definition at line 109 of file KisLayerThumbnailCache.cpp.

110{
111 if (manager) {
112 m_d->taskGuard = manager->addIdleTaskWithGuard([this] (KisImageSP image) {
113 ThumbnailsStroke *stroke = new ThumbnailsStroke(image, m_d->maxSize, m_d->cache);
114 connect(stroke, SIGNAL(sigThumbnailGenerated(KisNodeSP, int, int, QImage)), this, SLOT(slotThumbnailGenerated(KisNodeSP, int, int, QImage)));
115 return stroke;
116 });
117 } else {
118 m_d->taskGuard = KisIdleTasksManager::TaskGuard();
119 }
120}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
TaskGuard addIdleTaskWithGuard(KisIdleTaskStrokeStrategyFactory factory)
Registers the factory for the idle task.
void slotThumbnailGenerated(KisNodeSP node, int seqNo, int maxSize, const QImage &thumb)

References KisIdleTasksManager::addIdleTaskWithGuard(), connect(), m_d, and slotThumbnailGenerated().

◆ setImage() [1/2]

void KisLayerThumbnailCache::setImage ( KisImageSP image)

Definition at line 122 of file KisLayerThumbnailCache.cpp.

123{
124 m_d->image = image;
125 m_d->cache.clear();
126
127 if (m_d->image && m_d->taskGuard.isValid()) {
128 m_d->taskGuard.trigger();
129 }
130}

References m_d.

◆ setImage() [2/2]

void KisLayerThumbnailCache::setImage ( KisImageSP image,
KisIdleTasksManager * manager )

Definition at line 140 of file KisLayerThumbnailCache.cpp.

141{
142 setIdleTaskManagerImpl(manager);
143 setImage(image);
144 // the update is triggered only by the second call, not the first one!
145}
void setImage(KisImageSP image)

References setIdleTaskManagerImpl(), and setImage().

◆ setMaxSize()

void KisLayerThumbnailCache::setMaxSize ( int maxSize)

Definition at line 147 of file KisLayerThumbnailCache.cpp.

148{
149 m_d->maxSize = maxSize;
150 if (m_d->image && m_d->taskGuard.isValid()) {
151 m_d->taskGuard.trigger();
152 }
153}

References m_d, and maxSize().

◆ sigLayerThumbnailUpdated

void KisLayerThumbnailCache::sigLayerThumbnailUpdated ( KisNodeSP node)
signal

◆ slotThumbnailGenerated

void KisLayerThumbnailCache::slotThumbnailGenerated ( KisNodeSP node,
int seqNo,
int maxSize,
const QImage & thumb )
privateslot

Definition at line 211 of file KisLayerThumbnailCache.cpp.

212{
213 if (node->image() != m_d->image) {
214 qWarning() << "KisLayerThumbnailCache::slotThumbnailGenerated: node does not belong to the attached image anymore!" << ppVar(node) << ppVar(m_d->image);
215 return;
216 }
217
218 m_d->cache[node] = {thumb, seqNo, maxSize};
219 Q_EMIT sigLayerThumbnailUpdated(node);
220}
void sigLayerThumbnailUpdated(KisNodeSP node)
#define ppVar(var)
Definition kis_debug.h:155
KisImageWSP image

References KisBaseNode::image, m_d, maxSize(), ppVar, and sigLayerThumbnailUpdated().

◆ startThumbnailsUpdate()

void KisLayerThumbnailCache::startThumbnailsUpdate ( )

◆ thumbnail()

QImage KisLayerThumbnailCache::thumbnail ( KisNodeSP node) const

Definition at line 160 of file KisLayerThumbnailCache.cpp.

161{
162 QImage image;
163
164 auto it = m_d->cache.find(node);
165 if (it != m_d->cache.end()) {
166 image = it->image;
167
168 if (it->maxSize > m_d->maxSize) {
169 image = image.scaled(m_d->maxSize, m_d->maxSize, Qt::KeepAspectRatio);
170 }
171 } else {
172 image = QImage(1, 1, QImage::Format_ARGB32);
173 image.fill(0);
174 }
175
176 return image;
177}

References m_d.

Member Data Documentation

◆ m_d

QScopedPointer<Private> KisLayerThumbnailCache::m_d
private

Definition at line 50 of file KisLayerThumbnailCache.h.


The documentation for this class was generated from the following files: