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 119 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 122 of file kis_image.cc.

126 : q(_q)
127 , lockedForReadOnly(false)
128 , width(w)
129 , height(h)
130 , colorSpace(c ? c : KoColorSpaceRegistry::instance()->rgb8())
132 , isolateLayer(false)
133 , isolateGroup(false)
135 , legacyUndoAdapter(undoStore.data(), _q)
137 , signalRouter(_q)
138 , animationInterface(_animationInterface)
139 , scheduler(_q, _q)
140 , axesCenter(QPointF(0.5, 0.5))
141 {
142 {
143 KisImageConfig cfg(true);
144 if (cfg.enableProgressReporting()) {
146 }
147
148 // Each of these lambdas defines a new factory function.
150 [=](bool forgettable) {
151 return KisLodSyncPair(
154 });
155
157 [=]() {
159
164
165 return std::make_pair(suspend, resume);
166 });
167
169 [this] () {
170 undoStore->purgeRedoState();
171 });
172
174 [this] () {
175
177
178 bool addedUIUpdateRequestSuccessfully = false;
179
180 for (auto it = std::make_reverse_iterator(projectionUpdatesFilters.end());
181 it != std::make_reverse_iterator(projectionUpdatesFilters.begin());
182 ++it) {
183
186
187 if (iface) {
189 addedUIUpdateRequestSuccessfully = true;
190 break;
191 }
192 }
193
194 KIS_SAFE_ASSERT_RECOVER_NOOP(addedUIUpdateRequestSuccessfully);
195 });
196 }
197
198 connect(q, SIGNAL(sigImageModified()), KisMemoryStatisticsServer::instance(), SLOT(notifyImageChanged()));
199 connect(undoStore.data(), SIGNAL(historyStateChanged()), &signalRouter, SLOT(emitImageModifiedNotification()));
200 }
PythonPluginManager * instance
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
The KisDumbUndoStore class doesn't actually save commands, so you cannot undo or redo!
KisCompositeProgressProxy compositeProgressProxy
Definition kis_image.cc:278
KisImageAnimationInterface * animationInterface
Definition kis_image.cc:274
KisUpdateScheduler scheduler
Definition kis_image.cc:275
KisImageGlobalSelectionManagementInterface globalSelectionInterface
Definition kis_image.cc:247
KisPostExecutionUndoAdapter postExecutionUndoAdapter
Definition kis_image.cc:263
KisLegacyUndoAdapter legacyUndoAdapter
Definition kis_image.cc:262
QScopedPointer< KisUndoStore > undoStore
Definition kis_image.cc:261
const KoColorSpace * colorSpace
Definition kis_image.cc:244
QVector< KisProjectionUpdatesFilterSP > projectionUpdatesFilters
Definition kis_image.cc:271
KisImageSignalRouter signalRouter
Definition kis_image.cc:273
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, connect(), 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 202 of file kis_image.cc.

202 {
210
217 if (rootLayer->image() == q) {
219 }
220
221 if (rootLayer->graphListener() == q) {
223 }
224
226
230 delete animationInterface;
231 }
KisGroupLayerSP rootLayer
Definition kis_image.cc:249
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 1346 of file kis_image.cc.

1350{
1351 const KoColorSpace *srcColorSpace = this->colorSpace;
1352
1353 if (!dstColorSpace || *srcColorSpace == *dstColorSpace) return;
1354
1355 const KUndo2MagicString actionName =
1356 convertLayers ?
1357 kundo2_i18n("Convert Image Color Space") :
1358 kundo2_i18n("Convert Projection Color Space");
1359
1360 KisImageSignalVector emitSignals;
1361 emitSignals << ColorSpaceChangedSignal;
1362
1363 KisProcessingApplicator::ProcessingFlags flags = KisProcessingApplicator::NO_UI_UPDATES;
1364 if (convertLayers) {
1366 }
1367
1368 KisProcessingApplicator applicator(q, this->rootLayer,
1369 flags,
1370 emitSignals, actionName);
1371
1372 applicator.applyCommand(
1373 new KisImagePrivate::SetImageProjectionColorSpace(dstColorSpace,
1374 KisImageWSP(q),
1377
1378 applicator.applyVisitor(
1380 srcColorSpace, dstColorSpace,
1381 renderingIntent, conversionFlags),
1383
1384 applicator.applyCommand(
1385 new KisImagePrivate::SetImageProjectionColorSpace(srcColorSpace,
1386 KisImageWSP(q),
1389
1390
1391 applicator.end();
1392}
@ 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 1922 of file kis_image.cc.

1923{
1924 KisImageConfig imageConfig(true);
1925 int patchWidth = imageConfig.updatePatchWidth();
1926 int patchHeight = imageConfig.updatePatchHeight();
1927
1928 for (int y = 0; y < rc.height(); y += patchHeight) {
1929 for (int x = 0; x < rc.width(); x += patchWidth) {
1930 QRect patchRect(x, y, patchWidth, patchHeight);
1931 patchRect &= rc;
1932
1934 }
1935 }
1936}
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 2358 of file kis_image.cc.

2363{
2364 if (rects.isEmpty()) return;
2365
2366 scheduler.updateProjection(node, rects, cropRect, flags);
2367}
void updateProjection(KisNodeSP node, const QVector< QRect > &rects, const QRect &cropRect, KisProjectionUpdateFlags flags)

◆ tryCancelCurrentStrokeAsync()

bool KisImage::KisImagePrivate::tryCancelCurrentStrokeAsync ( )

Definition at line 2117 of file kis_image.cc.

2118{
2120}

Member Data Documentation

◆ allowMasksOnRootNode

bool KisImage::KisImagePrivate::allowMasksOnRootNode = false

Definition at line 281 of file kis_image.cc.

◆ animationInterface

KisImageAnimationInterface* KisImage::KisImagePrivate::animationInterface

Definition at line 274 of file kis_image.cc.

◆ annotations

vKisAnnotationSP KisImage::KisImagePrivate::annotations

Definition at line 265 of file kis_image.cc.

◆ axesCenter

QPointF KisImage::KisImagePrivate::axesCenter

Definition at line 280 of file kis_image.cc.

◆ colorSpace

const KoColorSpace* KisImage::KisImagePrivate::colorSpace

Definition at line 244 of file kis_image.cc.

◆ compositeProgressProxy

KisCompositeProgressProxy KisImage::KisImagePrivate::compositeProgressProxy

Definition at line 278 of file kis_image.cc.

◆ compositions

QList<KisLayerCompositionSP> KisImage::KisImagePrivate::compositions

Definition at line 252 of file kis_image.cc.

◆ deselectedGlobalSelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::deselectedGlobalSelectionMask

Definition at line 248 of file kis_image.cc.

◆ disableDirtyRequests

QAtomicInt KisImage::KisImagePrivate::disableDirtyRequests

Definition at line 276 of file kis_image.cc.

◆ disabledUpdatesCookies

QStack<KisProjectionUpdatesFilterCookie> KisImage::KisImagePrivate::disabledUpdatesCookies

Definition at line 272 of file kis_image.cc.

◆ disableUIUpdateSignals

QAtomicInt KisImage::KisImagePrivate::disableUIUpdateSignals

Definition at line 267 of file kis_image.cc.

◆ globalSelectionInterface

KisImageGlobalSelectionManagementInterface KisImage::KisImagePrivate::globalSelectionInterface

Definition at line 247 of file kis_image.cc.

◆ height

qint32 KisImage::KisImagePrivate::height

Definition at line 239 of file kis_image.cc.

◆ isolateGroup

bool KisImage::KisImagePrivate::isolateGroup

Definition at line 256 of file kis_image.cc.

◆ isolateLayer

bool KisImage::KisImagePrivate::isolateLayer

Definition at line 255 of file kis_image.cc.

◆ isolationRootNode

KisNodeSP KisImage::KisImagePrivate::isolationRootNode

Definition at line 254 of file kis_image.cc.

◆ legacyUndoAdapter

KisLegacyUndoAdapter KisImage::KisImagePrivate::legacyUndoAdapter

Definition at line 262 of file kis_image.cc.

◆ lockCount

quint32 KisImage::KisImagePrivate::lockCount = 0

Definition at line 235 of file kis_image.cc.

◆ lockedForReadOnly

bool KisImage::KisImagePrivate::lockedForReadOnly

Definition at line 236 of file kis_image.cc.

◆ overlaySelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::overlaySelectionMask

Definition at line 251 of file kis_image.cc.

◆ postExecutionUndoAdapter

KisPostExecutionUndoAdapter KisImage::KisImagePrivate::postExecutionUndoAdapter

Definition at line 263 of file kis_image.cc.

◆ projectionUpdatesFilters

QVector<KisProjectionUpdatesFilterSP> KisImage::KisImagePrivate::projectionUpdatesFilters

Definition at line 271 of file kis_image.cc.

◆ proofingConfig

KisProofingConfigurationSP KisImage::KisImagePrivate::proofingConfig

Definition at line 245 of file kis_image.cc.

◆ q

KisImage* KisImage::KisImagePrivate::q

Definition at line 233 of file kis_image.cc.

◆ rootLayer

KisGroupLayerSP KisImage::KisImagePrivate::rootLayer

Definition at line 249 of file kis_image.cc.

◆ savedDisabledUIUpdates

KisLocklessStack<QRect> KisImage::KisImagePrivate::savedDisabledUIUpdates

Definition at line 268 of file kis_image.cc.

◆ scheduler

KisUpdateScheduler KisImage::KisImagePrivate::scheduler

Definition at line 275 of file kis_image.cc.

◆ signalRouter

KisImageSignalRouter KisImage::KisImagePrivate::signalRouter

Definition at line 273 of file kis_image.cc.

◆ targetOverlaySelectionMask

KisSelectionMaskSP KisImage::KisImagePrivate::targetOverlaySelectionMask

Definition at line 250 of file kis_image.cc.

◆ undoStore

QScopedPointer<KisUndoStore> KisImage::KisImagePrivate::undoStore

Definition at line 261 of file kis_image.cc.

◆ width

qint32 KisImage::KisImagePrivate::width

Definition at line 238 of file kis_image.cc.

◆ wrapAroundModeAxis

WrapAroundAxis KisImage::KisImagePrivate::wrapAroundModeAxis = WRAPAROUND_BOTH

Definition at line 259 of file kis_image.cc.

◆ wrapAroundModePermitted

bool KisImage::KisImagePrivate::wrapAroundModePermitted = false

Definition at line 258 of file kis_image.cc.

◆ xres

double KisImage::KisImagePrivate::xres = 1.0

Definition at line 241 of file kis_image.cc.

◆ yres

double KisImage::KisImagePrivate::yres = 1.0

Definition at line 242 of file kis_image.cc.


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