Krita Source Code Documentation
Loading...
Searching...
No Matches
KisImage::KisImagePrivate Class Reference

Classes

struct  SetImageProjectionColorSpace
 

Public Member Functions

void convertImageColorSpaceImpl (const KoColorSpace *dstColorSpace, bool convertLayers, KoColorConversionTransformation::Intent renderingIntent, KoColorConversionTransformation::ConversionFlags conversionFlags)
 
 KisImagePrivate (KisImage *_q, qint32 w, qint32 h, const KoColorSpace *c, KisUndoStore *undo, KisImageAnimationInterface *_animationInterface)
 
void notifyProjectionUpdatedInPatches (const QRect &rc, QVector< KisRunnableStrokeJobData * > &jobs)
 
void requestProjectionUpdateImpl (KisNode *node, const QVector< QRect > &rects, const QRect &cropRect, KisProjectionUpdateFlags flags)
 
bool tryCancelCurrentStrokeAsync ()
 
 ~KisImagePrivate ()
 

Public Attributes

bool allowMasksOnRootNode = false
 
KisImageAnimationInterfaceanimationInterface
 
vKisAnnotationSP annotations
 
QPointF axesCenter
 
const KoColorSpacecolorSpace
 
KisCompositeProgressProxy compositeProgressProxy
 
QList< KisLayerCompositionSPcompositions
 
KisSelectionMaskSP deselectedGlobalSelectionMask
 
QAtomicInt disableDirtyRequests
 
QStack< KisProjectionUpdatesFilterCookiedisabledUpdatesCookies
 
QAtomicInt disableUIUpdateSignals
 
KisImageGlobalSelectionManagementInterface globalSelectionInterface
 
qint32 height
 
bool isolateGroup
 
bool isolateLayer
 
KisNodeSP isolationRootNode
 
KisLegacyUndoAdapter legacyUndoAdapter
 
quint32 lockCount = 0
 
bool lockedForReadOnly
 
KisSelectionMaskSP overlaySelectionMask
 
KisPostExecutionUndoAdapter postExecutionUndoAdapter
 
QVector< KisProjectionUpdatesFilterSPprojectionUpdatesFilters
 
KisProofingConfigurationSP proofingConfig
 
KisImageq
 
KisGroupLayerSP rootLayer
 
KisLocklessStack< QRect > savedDisabledUIUpdates
 
KisUpdateScheduler scheduler
 
KisImageSignalRouter signalRouter
 
KisSelectionMaskSP targetOverlaySelectionMask
 
QScopedPointer< KisUndoStoreundoStore
 
qint32 width
 
WrapAroundAxis wrapAroundModeAxis = WRAPAROUND_BOTH
 
bool wrapAroundModePermitted = false
 
double xres = 1.0
 
double yres = 1.0
 

Detailed Description

Definition at line 120 of file kis_image.cc.

Constructor & Destructor Documentation

◆ KisImagePrivate()

KisImage::KisImagePrivate::KisImagePrivate ( KisImage * _q,
qint32 w,
qint32 h,
const KoColorSpace * c,
KisUndoStore * undo,
KisImageAnimationInterface * _animationInterface )
inline

Definition at line 123 of file kis_image.cc.

127 : q(_q)
128 , lockedForReadOnly(false)
129 , width(w)
130 , height(h)
131 , colorSpace(c ? c : KoColorSpaceRegistry::instance()->rgb8())
133 , isolateLayer(false)
134 , isolateGroup(false)
136 , legacyUndoAdapter(undoStore.data(), _q)
138 , signalRouter(_q)
139 , animationInterface(_animationInterface)
140 , scheduler(_q, _q)
141 , axesCenter(QPointF(0.5, 0.5))
142 {
143 {
144 KisImageConfig cfg(true);
145 if (cfg.enableProgressReporting()) {
147 }
148
149 // Each of these lambdas defines a new factory function.
151 [=](bool forgettable) {
152 return KisLodSyncPair(
155 });
156
158 [=]() {
160
165
166 return std::make_pair(suspend, resume);
167 });
168
170 [this] () {
171 undoStore->purgeRedoState();
172 });
173
175 [this] () {
176
178
179 bool addedUIUpdateRequestSuccessfully = false;
180
181 for (auto it = std::make_reverse_iterator(projectionUpdatesFilters.end());
182 it != std::make_reverse_iterator(projectionUpdatesFilters.begin());
183 ++it) {
184
187
188 if (iface) {
190 addedUIUpdateRequestSuccessfully = true;
191 break;
192 }
193 }
194
195 KIS_SAFE_ASSERT_RECOVER_NOOP(addedUIUpdateRequestSuccessfully);
196 });
197 }
198
199 connect(q, SIGNAL(sigImageModified()), KisMemoryStatisticsServer::instance(), SLOT(notifyImageChanged()));
200 connect(undoStore.data(), SIGNAL(historyStateChanged()), &signalRouter, SLOT(emitImageModifiedNotification()));
201 }
PythonPluginManager * instance
The KisDumbUndoStore class doesn't actually save commands, so you cannot undo or redo!
KisCompositeProgressProxy compositeProgressProxy
Definition kis_image.cc:279
KisImageAnimationInterface * animationInterface
Definition kis_image.cc:275
KisUpdateScheduler scheduler
Definition kis_image.cc:276
KisImageGlobalSelectionManagementInterface globalSelectionInterface
Definition kis_image.cc:248
KisPostExecutionUndoAdapter postExecutionUndoAdapter
Definition kis_image.cc:264
KisLegacyUndoAdapter legacyUndoAdapter
Definition kis_image.cc:263
QScopedPointer< KisUndoStore > undoStore
Definition kis_image.cc:262
const KoColorSpace * colorSpace
Definition kis_image.cc:245
QVector< KisProjectionUpdatesFilterSP > projectionUpdatesFilters
Definition kis_image.cc:272
KisImageSignalRouter signalRouter
Definition kis_image.cc:274
void sigImageModified()
int currentLevelOfDetail() const
QRect bounds() const override
static QList< KisStrokeJobData * > createSuspendJobsData(KisImageWSP image)
static QList< KisStrokeJobData * > createResumeJobsData(KisImageWSP image)
static QList< KisStrokeJobData * > createJobsData(KisImageWSP image)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130
std::pair< KisStrokeStrategy *, QList< KisStrokeJobData * > > KisSuspendResumePair
std::pair< KisStrokeStrategy *, QList< KisStrokeJobData * > > KisLodSyncPair
KisWeakSharedPtr< KisImage > KisImageWSP
Definition kis_types.h:70
QAction * undo(const QObject *recvr, const char *slot, QObject *parent)
static KisMemoryStatisticsServer * instance()
void setPostSyncLod0GUIPlaneRequestForResumeCallback(const std::function< void()> &callback)
void setProgressProxy(KoProgressProxy *progressProxy)
void setSuspendResumeUpdatesStrokeStrategyFactory(const KisSuspendResumeStrategyPairFactory &factory)
void setLod0ToNStrokeStrategyFactory(const KisLodSyncStrokeStrategyFactory &factory)
void setPurgeRedoStateCallback(const std::function< void()> &callback)

References KisSuspendProjectionUpdatesStrokeStrategy::SuspendUpdatesFilterInterface::addExplicitUIUpdateRect(), KisImage::bounds(), compositeProgressProxy, KisSyncLodCacheStrokeStrategy::createJobsData(), KisSuspendProjectionUpdatesStrokeStrategy::createResumeJobsData(), KisSuspendProjectionUpdatesStrokeStrategy::createSharedData(), KisSuspendProjectionUpdatesStrokeStrategy::createSuspendJobsData(), KisImage::currentLevelOfDetail(), KisImageConfig::enableProgressReporting(), KisMemoryStatisticsServer::instance(), KIS_SAFE_ASSERT_RECOVER_NOOP, projectionUpdatesFilters, q, scheduler, KisUpdateScheduler::setLod0ToNStrokeStrategyFactory(), KisUpdateScheduler::setPostSyncLod0GUIPlaneRequestForResumeCallback(), KisUpdateScheduler::setProgressProxy(), KisUpdateScheduler::setPurgeRedoStateCallback(), KisUpdateScheduler::setSuspendResumeUpdatesStrokeStrategyFactory(), KisImage::sigImageModified(), signalRouter, and undoStore.

◆ ~KisImagePrivate()

KisImage::KisImagePrivate::~KisImagePrivate ( )
inline

First delete the nodes, while strokes and undo are still alive

Firstly we need to disconnect the nodes from the image, because some of the nodes (e.g. KisGroupLayer) may request the image back via defaultBouds() and/or animationInterface()

Stop animation interface. It may use the rootLayer.

Definition at line 203 of file kis_image.cc.

203 {
211
218 if (rootLayer->image() == q) {
220 }
221
222 if (rootLayer->graphListener() == q) {
224 }
225
227
231 delete animationInterface;
232 }
KisGroupLayerSP rootLayer
Definition kis_image.cc:250
KisImageWSP image
void setImage(KisImageWSP image) override
void setGraphListener(KisNodeGraphListener *graphListener)
Definition kis_node.cpp:289
KisNodeGraphListener * graphListener
Definition kis_node.cpp:87

References animationInterface, KisSharedPtr< T >::clear(), KisNode::graphListener, KisBaseNode::image, KIS_SAFE_ASSERT_RECOVER_NOOP, q, rootLayer, KisNode::setGraphListener(), and KisGroupLayer::setImage().

Member Function Documentation

◆ convertImageColorSpaceImpl()

void KisImage::KisImagePrivate::convertImageColorSpaceImpl ( const KoColorSpace * dstColorSpace,
bool convertLayers,
KoColorConversionTransformation::Intent renderingIntent,
KoColorConversionTransformation::ConversionFlags conversionFlags )

Definition at line 1402 of file kis_image.cc.

1406{
1407 const KoColorSpace *srcColorSpace = this->colorSpace;
1408
1409 if (!dstColorSpace || *srcColorSpace == *dstColorSpace) return;
1410
1411 const KUndo2MagicString actionName =
1412 convertLayers ?
1413 kundo2_i18n("Convert Image Color Space") :
1414 kundo2_i18n("Convert Projection Color Space");
1415
1416 KisImageSignalVector emitSignals;
1417 emitSignals << ColorSpaceChangedSignal;
1418
1419 KisProcessingApplicator::ProcessingFlags flags = KisProcessingApplicator::NO_UI_UPDATES;
1420 if (convertLayers) {
1422 }
1423
1424 KisProcessingApplicator applicator(q, this->rootLayer,
1425 flags,
1426 emitSignals, actionName);
1427
1428 applicator.applyCommand(
1429 new KisImagePrivate::SetImageProjectionColorSpace(dstColorSpace,
1430 KisImageWSP(q),
1433
1434 applicator.applyVisitor(
1436 srcColorSpace, dstColorSpace,
1437 renderingIntent, conversionFlags),
1439
1440 applicator.applyCommand(
1441 new KisImagePrivate::SetImageProjectionColorSpace(srcColorSpace,
1442 KisImageWSP(q),
1445
1446
1447 applicator.end();
1448}
@ ColorSpaceChangedSignal
KUndo2MagicString kundo2_i18n(const char *text)

References KisProcessingApplicator::applyCommand(), KisProcessingApplicator::applyVisitor(), KisStrokeJobData::BARRIER, colorSpace, ColorSpaceChangedSignal, KisStrokeJobData::CONCURRENT, KisProcessingApplicator::end(), KisCommandUtils::FlipFlopCommand::FINALIZING, KisCommandUtils::FlipFlopCommand::INITIALIZING, kundo2_i18n(), KisProcessingApplicator::NO_UI_UPDATES, q, KisProcessingApplicator::RECURSIVE, and rootLayer.

◆ notifyProjectionUpdatedInPatches()

void KisImage::KisImagePrivate::notifyProjectionUpdatedInPatches ( const QRect & rc,
QVector< KisRunnableStrokeJobData * > & jobs )

Definition at line 1978 of file kis_image.cc.

1979{
1980 KisImageConfig imageConfig(true);
1981 int patchWidth = imageConfig.updatePatchWidth();
1982 int patchHeight = imageConfig.updatePatchHeight();
1983
1984 for (int y = 0; y < rc.height(); y += patchHeight) {
1985 for (int x = 0; x < rc.width(); x += patchWidth) {
1986 QRect patchRect(x, y, patchWidth, patchHeight);
1987 patchRect &= rc;
1988
1990 }
1991 }
1992}
void notifyProjectionUpdated(const QRect &rc) override
void addJobConcurrent(QVector< Job * > &jobs, Func func)

References KritaUtils::addJobConcurrent(), KisImage::notifyProjectionUpdated(), KisImageConfig::updatePatchHeight(), and KisImageConfig::updatePatchWidth().

◆ requestProjectionUpdateImpl()

void KisImage::KisImagePrivate::requestProjectionUpdateImpl ( KisNode * node,
const QVector< QRect > & rects,
const QRect & cropRect,
KisProjectionUpdateFlags flags )

Definition at line 2414 of file kis_image.cc.

2419{
2420 if (rects.isEmpty()) return;
2421
2422 scheduler.updateProjection(node, rects, cropRect, flags);
2423}
void updateProjection(KisNodeSP node, const QVector< QRect > &rects, const QRect &cropRect, KisProjectionUpdateFlags flags)

◆ tryCancelCurrentStrokeAsync()

bool KisImage::KisImagePrivate::tryCancelCurrentStrokeAsync ( )

Definition at line 2173 of file kis_image.cc.

2174{
2176}

Member Data Documentation

◆ allowMasksOnRootNode

bool KisImage::KisImagePrivate::allowMasksOnRootNode = false

Definition at line 282 of file kis_image.cc.

◆ animationInterface

KisImageAnimationInterface* KisImage::KisImagePrivate::animationInterface

Definition at line 275 of file kis_image.cc.

◆ annotations

vKisAnnotationSP KisImage::KisImagePrivate::annotations

Definition at line 266 of file kis_image.cc.

◆ axesCenter

QPointF KisImage::KisImagePrivate::axesCenter

Definition at line 281 of file kis_image.cc.

◆ colorSpace

const KoColorSpace* KisImage::KisImagePrivate::colorSpace

Definition at line 245 of file kis_image.cc.

◆ compositeProgressProxy

KisCompositeProgressProxy KisImage::KisImagePrivate::compositeProgressProxy

Definition at line 279 of file kis_image.cc.

◆ compositions

QList<KisLayerCompositionSP> KisImage::KisImagePrivate::compositions

Definition at line 253 of file kis_image.cc.

◆ deselectedGlobalSelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::deselectedGlobalSelectionMask

Definition at line 249 of file kis_image.cc.

◆ disableDirtyRequests

QAtomicInt KisImage::KisImagePrivate::disableDirtyRequests

Definition at line 277 of file kis_image.cc.

◆ disabledUpdatesCookies

QStack<KisProjectionUpdatesFilterCookie> KisImage::KisImagePrivate::disabledUpdatesCookies

Definition at line 273 of file kis_image.cc.

◆ disableUIUpdateSignals

QAtomicInt KisImage::KisImagePrivate::disableUIUpdateSignals

Definition at line 268 of file kis_image.cc.

◆ globalSelectionInterface

KisImageGlobalSelectionManagementInterface KisImage::KisImagePrivate::globalSelectionInterface

Definition at line 248 of file kis_image.cc.

◆ height

qint32 KisImage::KisImagePrivate::height

Definition at line 240 of file kis_image.cc.

◆ isolateGroup

bool KisImage::KisImagePrivate::isolateGroup

Definition at line 257 of file kis_image.cc.

◆ isolateLayer

bool KisImage::KisImagePrivate::isolateLayer

Definition at line 256 of file kis_image.cc.

◆ isolationRootNode

KisNodeSP KisImage::KisImagePrivate::isolationRootNode

Definition at line 255 of file kis_image.cc.

◆ legacyUndoAdapter

KisLegacyUndoAdapter KisImage::KisImagePrivate::legacyUndoAdapter

Definition at line 263 of file kis_image.cc.

◆ lockCount

quint32 KisImage::KisImagePrivate::lockCount = 0

Definition at line 236 of file kis_image.cc.

◆ lockedForReadOnly

bool KisImage::KisImagePrivate::lockedForReadOnly

Definition at line 237 of file kis_image.cc.

◆ overlaySelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::overlaySelectionMask

Definition at line 252 of file kis_image.cc.

◆ postExecutionUndoAdapter

KisPostExecutionUndoAdapter KisImage::KisImagePrivate::postExecutionUndoAdapter

Definition at line 264 of file kis_image.cc.

◆ projectionUpdatesFilters

QVector<KisProjectionUpdatesFilterSP> KisImage::KisImagePrivate::projectionUpdatesFilters

Definition at line 272 of file kis_image.cc.

◆ proofingConfig

KisProofingConfigurationSP KisImage::KisImagePrivate::proofingConfig

Definition at line 246 of file kis_image.cc.

◆ q

KisImage* KisImage::KisImagePrivate::q

Definition at line 234 of file kis_image.cc.

◆ rootLayer

KisGroupLayerSP KisImage::KisImagePrivate::rootLayer

Definition at line 250 of file kis_image.cc.

◆ savedDisabledUIUpdates

KisLocklessStack<QRect> KisImage::KisImagePrivate::savedDisabledUIUpdates

Definition at line 269 of file kis_image.cc.

◆ scheduler

KisUpdateScheduler KisImage::KisImagePrivate::scheduler

Definition at line 276 of file kis_image.cc.

◆ signalRouter

KisImageSignalRouter KisImage::KisImagePrivate::signalRouter

Definition at line 274 of file kis_image.cc.

◆ targetOverlaySelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::targetOverlaySelectionMask

Definition at line 251 of file kis_image.cc.

◆ undoStore

QScopedPointer<KisUndoStore> KisImage::KisImagePrivate::undoStore

Definition at line 262 of file kis_image.cc.

◆ width

qint32 KisImage::KisImagePrivate::width

Definition at line 239 of file kis_image.cc.

◆ wrapAroundModeAxis

WrapAroundAxis KisImage::KisImagePrivate::wrapAroundModeAxis = WRAPAROUND_BOTH

Definition at line 260 of file kis_image.cc.

◆ wrapAroundModePermitted

bool KisImage::KisImagePrivate::wrapAroundModePermitted = false

Definition at line 259 of file kis_image.cc.

◆ xres

double KisImage::KisImagePrivate::xres = 1.0

Definition at line 242 of file kis_image.cc.

◆ yres

double KisImage::KisImagePrivate::yres = 1.0

Definition at line 243 of file kis_image.cc.


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