Krita Source Code Documentation
Loading...
Searching...
No Matches
ThumbnailsStroke Struct Reference
+ Inheritance diagram for ThumbnailsStroke:

Signals

void sigThumbnailGenerated (KisNodeSP node, int maxSize, int seqNo, const QImage &thumb)
 
- Signals inherited from KisIdleTaskStrokeStrategy
void sigIdleTaskFinished ()
 

Public Member Functions

void initStrokeCallback () override
 
 ThumbnailsStroke (KisImageSP image, int maxSize, const QMap< KisNodeWSP, ThumbnailRecord > &cache)
 
- Public Member Functions inherited from KisIdleTaskStrokeStrategy
KisStrokeStrategycreateLodClone (int levelOfDetail) override
 
QWeakPointer< boost::none_t > idleTaskCookie ()
 
 KisIdleTaskStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
 ~KisIdleTaskStrokeStrategy ()
 
- Public Member Functions inherited from KisRunnableBasedStrokeStrategy
void doStrokeCallback (KisStrokeJobData *data) override
 
 KisRunnableBasedStrokeStrategy (const KisRunnableBasedStrokeStrategy &rhs)
 
 KisRunnableBasedStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
KisRunnableStrokeJobsInterfacerunnableJobsInterface () const
 
 ~KisRunnableBasedStrokeStrategy ()
 
- Public Member Functions inherited from KisSimpleStrokeStrategy
virtual void cancelStrokeCallback ()
 
KisStrokeJobDatacreateCancelData () override
 
KisStrokeJobStrategycreateCancelStrategy () override
 
KisStrokeJobStrategycreateDabStrategy () override
 
KisStrokeJobDatacreateFinishData () override
 
KisStrokeJobStrategycreateFinishStrategy () override
 
KisStrokeJobDatacreateInitData () override
 
KisStrokeJobStrategycreateInitStrategy () override
 
KisStrokeJobDatacreateResumeData () override
 
KisStrokeJobStrategycreateResumeStrategy () override
 
KisStrokeJobDatacreateSuspendData () override
 
KisStrokeJobStrategycreateSuspendStrategy () override
 
 KisSimpleStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
virtual void resumeStrokeCallback ()
 
virtual void suspendStrokeCallback ()
 
- Public Member Functions inherited from KisStrokeStrategy
qreal balancingRatioOverride () const
 
bool canForgetAboutMe () const
 
bool clearsRedoOnStart () const
 
KisLodPreferences currentLodPreferences () const
 
bool forceLodModeIfPossible () const
 
QString id () const
 
bool isAsynchronouslyCancellable () const
 
bool isExclusive () const
 
 KisStrokeStrategy (const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
 
KUndo2MagicString name () const
 
bool needsExplicitCancel () const
 
virtual void notifyUserEndedStroke ()
 
virtual void notifyUserStartedStroke ()
 
bool requestsOtherStrokesToEnd () const
 
void setForceLodModeIfPossible (bool forceLodModeIfPossible)
 
void setMutatedJobsInterface (KisStrokesQueueMutatedJobInterface *mutatedJobsInterface, KisStrokeId strokeId)
 
bool supportsWrapAroundMode () const
 
virtual void tryCancelCurrentStrokeJobAsync ()
 tryCancelCurrentStrokeJobAsync is called by the strokes queue when the stroke is being cancelled. The stroke strategy may or may not handle this request and cancel the currently running long action.
 
virtual ~KisStrokeStrategy ()
 

Private Attributes

QMap< KisNodeWSP, ThumbnailRecord > m_cache
 
int m_maxSize
 
KisNodeSP m_root
 

Additional Inherited Members

- Public Types inherited from KisSimpleStrokeStrategy
enum  JobType {
  JOB_INIT = 0 , JOB_CANCEL , JOB_FINISH , JOB_DOSTROKE ,
  JOB_SUSPEND , JOB_RESUME , NJOBS
}
 
- Static Public Member Functions inherited from KisIdleTaskStrokeStrategy
static int preferredIdleTaskMaximumTime ()
 
static int preferredIdleWatcherInterval ()
 
- Static Public Member Functions inherited from KisSimpleStrokeStrategy
static QLatin1String jobTypeToString (JobType type)
 
- Protected Member Functions inherited from KisIdleTaskStrokeStrategy
void finishStrokeCallback () override
 
- Protected Member Functions inherited from KisSimpleStrokeStrategy
void enableJob (JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
 
 KisSimpleStrokeStrategy (const KisSimpleStrokeStrategy &rhs)
 
- Protected Member Functions inherited from KisStrokeStrategy
void addMutatedJob (KisStrokeJobData *data)
 
void addMutatedJobs (const QVector< KisStrokeJobData * > list)
 
 KisStrokeStrategy (const KisStrokeStrategy &rhs)
 
void setAsynchronouslyCancellable (bool value)
 
void setBalancingRatioOverride (qreal value)
 
void setCanForgetAboutMe (bool value)
 
void setClearsRedoOnStart (bool value)
 
void setExclusive (bool value)
 
void setNeedsExplicitCancel (bool value)
 
void setRequestsOtherStrokesToEnd (bool value)
 
void setSupportsWrapAroundMode (bool value)
 

Detailed Description

Definition at line 24 of file KisLayerThumbnailCache.cpp.

Constructor & Destructor Documentation

◆ ThumbnailsStroke()

ThumbnailsStroke::ThumbnailsStroke ( KisImageSP image,
int maxSize,
const QMap< KisNodeWSP, ThumbnailRecord > & cache )
inline

Definition at line 29 of file KisLayerThumbnailCache.cpp.

30 : KisIdleTaskStrokeStrategy(QLatin1String("layer-thumbnails-stroke"), kundo2_i18n("Update layer thumbnails"))
31 , m_root(image->root())
32 , m_maxSize(maxSize)
33 , m_cache(cache)
34 {
35 // thread-safety!
36 m_cache.detach();
37 }
KisIdleTaskStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
KUndo2MagicString kundo2_i18n(const char *text)
QMap< KisNodeWSP, ThumbnailRecord > m_cache

References m_cache.

Member Function Documentation

◆ initStrokeCallback()

void ThumbnailsStroke::initStrokeCallback ( )
inlineoverridevirtual

Reimplemented from KisIdleTaskStrokeStrategy.

Definition at line 39 of file KisLayerThumbnailCache.cpp.

40 {
42
45
47 recursiveApplyNodes(m_root, [&jobs, this] (KisNodeSP node) {
48
49
50 if (!node->parent()) return;
51 if (node->isFakeNode()) return;
52
53 bool shouldRegenerateThumbnail = false;
54
55 auto it = m_cache.find(node);
56
57 if (it != m_cache.end()) {
58 ThumbnailRecord rec = *it;
59
60 if (rec.seqNo != node->thumbnailSeqNo() ||
61 rec.maxSize != m_maxSize) {
62
63 shouldRegenerateThumbnail = true;
64 }
65 } else {
66 shouldRegenerateThumbnail = true;
67 }
68
69 if (shouldRegenerateThumbnail) {
70 addJobConcurrent(jobs, [node, this] () mutable {
71 QImage image = node->createThumbnail(m_maxSize, m_maxSize, Qt::KeepAspectRatio);
72 this->sigThumbnailGenerated(node, node->thumbnailSeqNo(), m_maxSize, image);
73 });
74 }
75 });
76
78 }
KisRunnableStrokeJobsInterface * runnableJobsInterface() const
virtual void addRunnableJobs(const QVector< KisRunnableStrokeJobDataBase * > &list)=0
void recursiveApplyNodes(NodePointer node, Functor func)
void addJobConcurrent(QVector< Job * > &jobs, Func func)
virtual QImage createThumbnail(qint32 w, qint32 h, Qt::AspectRatioMode aspectRatioMode=Qt::IgnoreAspectRatio)
virtual int thumbnailSeqNo() const
virtual bool isFakeNode() const
KisNodeWSP parent
Definition kis_node.cpp:86
void sigThumbnailGenerated(KisNodeSP node, int maxSize, int seqNo, const QImage &thumb)

References KritaUtils::addJobConcurrent(), KisRunnableStrokeJobsInterface::addRunnableJobs(), KisBaseNode::createThumbnail(), KisIdleTaskStrokeStrategy::initStrokeCallback(), KisBaseNode::isFakeNode(), m_cache, m_maxSize, m_root, KisNode::parent, KisLayerUtils::recursiveApplyNodes(), KisRunnableBasedStrokeStrategy::runnableJobsInterface(), sigThumbnailGenerated(), and KisBaseNode::thumbnailSeqNo().

◆ sigThumbnailGenerated

void ThumbnailsStroke::sigThumbnailGenerated ( KisNodeSP node,
int maxSize,
int seqNo,
const QImage & thumb )
signal

Member Data Documentation

◆ m_cache

QMap<KisNodeWSP, ThumbnailRecord> ThumbnailsStroke::m_cache
private

Definition at line 86 of file KisLayerThumbnailCache.cpp.

◆ m_maxSize

int ThumbnailsStroke::m_maxSize
private

Definition at line 85 of file KisLayerThumbnailCache.cpp.

◆ m_root

KisNodeSP ThumbnailsStroke::m_root
private

Definition at line 84 of file KisLayerThumbnailCache.cpp.


The documentation for this struct was generated from the following file: