9#include <QReadWriteLock>
11#include <QWriteLocker>
36 const int time =
source->defaultBounds()->currentTime();
47 const int time =
source->defaultBounds()->currentTime();
72 QReadLocker readLocker(&
m_d->lock);
73 cachedProjection =
m_d->cachedProjection;
76 if (!cachedProjection || !
m_d->checkCacheValid(
source, compositor)) {
79 QWriteLocker writeLocker(&
m_d->lock);
80 cachedProjection =
m_d->cachedProjection;
81 if (!cachedProjection ||
82 !
m_d->checkCacheValid(
source, compositor) ||
85 if (!cachedProjection) {
89 cachedProjection->
clear();
106 const int lod =
source->defaultBounds()->currentLevelOfDetail();
108 QScopedPointer<KisPaintDevice::LodDataStruct> data(cachedProjection->
createLodDataStruct(lod));
113 m_d->updateCacheMetrics(
source, compositor);
114 m_d->cachedProjection = cachedProjection;
118 return cachedProjection;
123 QWriteLocker writeLocker(&
m_d->lock);
124 m_d->cachedProjection = 0;
129 return m_d->cachedProjection;
KisMagneticGraph::vertex_descriptor source(typename KisMagneticGraph::edge_descriptor e, KisMagneticGraph g)
int channelHash() const
Calculates a pseudo-unique hash based on the relevant internal state of the channel.
KisPaintDeviceSP lodCapableDevice() const
KisPaintDeviceSP projection(KisPaintDeviceSP source)
const QScopedPointer< Private > m_d
QRect calculateExtent(const KisPaintDeviceSP device, int time)
void composite(const KisPaintDeviceSP sourceDevice, KisPaintDeviceSP targetDevice, const QRect &rect)
static KisOnionSkinCompositor * instance()
void uploadLodDataStruct(LodDataStruct *dst)
void setDefaultBounds(KisDefaultBoundsBaseSP bounds)
LodDataStruct * createLodDataStruct(int lod)
void updateLodDataStruct(LodDataStruct *dst, const QRect &srcRect)
const KoColorSpace * colorSpace() const
void convertTo(const KoColorSpace *dstColorSpace, KoColorConversionTransformation::Intent renderingIntent=KoColorConversionTransformation::internalRenderingIntent(), KoColorConversionTransformation::ConversionFlags conversionFlags=KoColorConversionTransformation::internalConversionFlags(), KUndo2Command *parentCommand=nullptr, KoUpdater *progressUpdater=nullptr)
The KisRasterKeyframeChannel is a concrete KisKeyframeChannel subclass that stores and manages KisRas...
bool contains(int time) const
void updateCacheMetrics(KisPaintDeviceSP source, KisOnionSkinCompositor *compositor)
KisPaintDeviceSP cachedProjection
bool checkCacheValid(KisPaintDeviceSP source, KisOnionSkinCompositor *compositor)