62 using SharedData = QHash<KisPaintDeviceSP, QSharedPointer<KisPaintDevice::LodDataStruct>>;
65 SharedDataSP sharedData(
new SharedData());
69 recursiveApplyNodes(imageRoot,
90 QVector<QRect> rects = splitRegionIntoPatches(region, optimalPatchSize());
92 Q_FOREACH (
const QRect &rc, rects) {
104 recursiveApplyNodes(imageRoot,
112 auto it = sharedData->begin();
113 auto end = sharedData->end();
115 for (; it != end; ++it) {
void uploadLodDataStruct(LodDataStruct *dst)
KisRegion regionForLodSyncing() const
LodDataStruct * createLodDataStruct(int lod)
void updateLodDataStruct(LodDataStruct *dst, const QRect &srcRect)
void enableJob(JobType type, bool enable=true, KisStrokeJobData::Sequentiality sequentiality=KisStrokeJobData::SEQUENTIAL, KisStrokeJobData::Exclusivity exclusivity=KisStrokeJobData::NORMAL)
void addMutatedJobs(const QVector< KisStrokeJobData * > list)
void setClearsRedoOnStart(bool value)
void setRequestsOtherStrokesToEnd(bool value)
void setCanForgetAboutMe(bool value)
void initStrokeCallback() override
KisSyncLodCacheStrokeStrategy(KisImageWSP image, bool forgettable)
static QList< KisStrokeJobData * > createJobsData(KisImageWSP image)
const QScopedPointer< Private > m_d
~KisSyncLodCacheStrokeStrategy() override
virtual void blockUpdates()=0
virtual void unblockUpdates()=0
QSharedPointer< T > toQShared(T *ptr)
KUndo2MagicString kundo2_i18n(const char *text)
void recursiveApplyNodes(NodePointer node, Functor func)
void addJobSequentialNoCancel(QVector< Job * > &jobs, Func func)
void addJobConcurrent(QVector< Job * > &jobs, Func func)
void addJobSequential(QVector< Job * > &jobs, Func func)
void makeContainerUnique(C &container)
void addJobBarrier(QVector< Job * > &jobs, Func func)
QVector< QRect > splitRegionIntoPatches(const KisRegion ®ion, const QSize &patchSize)
void addJobBarrierNoCancel(QVector< Job * > &jobs, Func func)
virtual KisPaintDeviceList getLodCapableDevices() const
virtual void syncLodCache()