40 Q_UNUSED(levelOfDetail);
76 KisLockFrameGenerationLock &&frameGenerationLock)
82 m_d->frameId = frameId;
83 m_d->dirtyRegion = dirtyRegion;
84 m_d->interface = interface;
85 m_d->frameGenerationLock = std::move(frameGenerationLock);
109 m_d->interface = interface;
136 warnKrita <<
"KisRegenerateFrameStrokeStrategy::initStrokeCallback(): WARNING: trying to"
137 <<
"regenerate an external frame on a non-animated image, that will cause"
138 <<
"a useless consumption of memory";
141 m_d->saveAndResetUpdatesFilter();
143 m_d->interface->saveAndResetCurrentTime(
m_d->frameId, &
m_d->previousFrameId);
145 m_d->interface->blockFrameInvalidation(
true);
175 m_d->interface->notifyFrameReady();
176 m_d->interface->restoreCurrentTime(&
m_d->previousFrameId);
178 m_d->restoreUpdatesFilter();
180 m_d->interface->notifyFrameRegenerated();
181 m_d->interface->blockFrameInvalidation(
false);
192 m_d->interface->notifyFrameCancelled();
193 m_d->interface->restoreCurrentTime(&
m_d->previousFrameId);
195 m_d->restoreUpdatesFilter();
197 m_d->interface->blockFrameInvalidation(
false);
203 Q_UNUSED(levelOfDetail);
221 m_d->interface->restoreCurrentTime(&
m_d->previousFrameId);
223 m_d->restoreUpdatesFilter();
225 m_d->interface->blockFrameInvalidation(
false);
236 m_d->saveAndResetUpdatesFilter();
238 m_d->interface->saveAndResetCurrentTime(
m_d->frameId, &
m_d->previousFrameId);
240 m_d->interface->blockFrameInvalidation(
true);
250 const QRect cropRect = image->
bounds();
254 Q_FOREACH (
const QRect &rc, rects) {
void startMerge(KisBaseRectsWalker &walker, bool notifyClones=true)
void collectRects(KisNodeSP node, const QRect &requestedRect)
KisImageWSP image() const
bool hasAnimation() const
void disableUIUpdates() override
KisImageAnimationInterface * animationInterface() const
KisProjectionUpdatesFilterSP removeProjectionUpdatesFilter(KisProjectionUpdatesFilterCookie cookie) override
removes already installed filter from the stack of updates filers
KisProjectionUpdatesFilterCookie currentProjectionUpdatesFilter() const override
QVector< QRect > enableUIUpdates() override
QRect bounds() const override
KisProjectionUpdatesFilterCookie addProjectionUpdatesFilter(KisProjectionUpdatesFilterSP filter) override
KisStrokeJobData * createLodClone(int levelOfDetail) override
Data(KisNodeSP _root, const QRect &_rect, const QRect &_cropRect)
void initStrokeCallback() override
~KisRegenerateFrameStrokeStrategy() override
KisRegenerateFrameStrokeStrategy(int frameId, const KisRegion &dirtyRegion, bool isCancellable, KisImageAnimationInterface *interface, KisLockFrameGenerationLock &&frameGenerationLock)
void cancelStrokeCallback() override
void suspendStrokeCallback() override
static QList< KisStrokeJobData * > createJobsData(KisImageWSP image)
void finishStrokeCallback() override
const QScopedPointer< Private > m_d
void doStrokeCallback(KisStrokeJobData *data) override
KisStrokeStrategy * createLodClone(int levelOfDetail) override
void resumeStrokeCallback() override
void enableJob(JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
KisSimpleStrokeStrategy(const QLatin1String &id, const KUndo2MagicString &name=KUndo2MagicString())
KisStrokeJobData(Sequentiality sequentiality=SEQUENTIAL, Exclusivity exclusivity=NORMAL)
void setClearsRedoOnStart(bool value)
void setRequestsOtherStrokesToEnd(bool value)
void setCanForgetAboutMe(bool value)
KisSharedPtr< T > toStrongRef() const
toStrongRef returns a KisSharedPtr which may be dereferenced.
void * KisProjectionUpdatesFilterCookie
KisSharedPtr< KisNode > KisNodeSP
KUndo2MagicString kundo2_i18n(const char *text)
QVector< QRect > splitRectIntoPatches(const QRect &rc, const QSize &patchSize)
void restoreUpdatesFilter()
std::optional< KisLockFrameGenerationLock > frameGenerationLock
QStack< KisProjectionUpdatesFilterSP > prevUpdatesFilters
KisImageAnimationInterface * interface
void saveAndResetUpdatesFilter()