22 if (!image)
return result;
31 for (
int frame = playbackRange.
start(); frame <= playbackRange.
end(); frame++) {
38 result.append(stillFrameRange.
start());
46 frame = stillFrameRange.
end();
61 if (!image)
return result;
70 for (
int frame = playbackRange.
start(); frame <= playbackRange.
end(); frame++) {
75 frame = skipRange.
end();
116 return calcDirtyFramesList(
m_d->cache,
m_d->range);
bool tryGlueSameFrames(const KisTimeSpan &range)
CacheStatus frameStatus(int time) const
KisAsyncAnimationRendererBase * createRenderer(KisImageSP image) override
create a renderer object linked to image
KisAsyncAnimationCacheRenderDialog(KisAnimationFrameCacheSP cache, const KisTimeSpan &range, int busyWait=200)
virtual ~KisAsyncAnimationCacheRenderDialog()
QList< int > calcDirtyFrames() const override
returns a list of frames that should be regenerated by the dialog
static int calcFirstDirtyFrame(KisAnimationFrameCacheSP cache, const KisTimeSpan &playbackRange, const KisTimeSpan &skipRange)
const QScopedPointer< Private > m_d
void initializeRendererForFrame(KisAsyncAnimationRendererBase *renderer, KisImageSP image, int frame) override
void setFrameCache(KisAnimationFrameCacheSP cache)
KisAsyncAnimationRenderDialogBase is a special class for rendering multiple frames of the image and p...
bool hasAnimation() const
KisImageAnimationInterface * animationInterface() const
bool contains(int time) const
static KisTimeSpan calculateIdenticalFramesRecursive(const KisNode *node, int time)
#define KIS_ASSERT_RECOVER_RETURN_VALUE(cond, val)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
KisAnimationFrameCacheSP cache
Private(KisAnimationFrameCacheSP _cache, const KisTimeSpan &_range)