40#define DEBUG_NODE_ACTION(message, type, leaf, rect) \
41 qDebug() << message << type << ":" << leaf->node()->name() << rect << "rendered:" << leaf->shouldBeRendered()
43#define DEBUG_NODE_ACTION(message, type, leaf, rect)
63 if (!layer->
visible())
return true;
66 warnImage <<
"ObligeChild mechanism has been activated for "
67 "an adjustment layer! Do nothing...";
72 const QRect originalUpdateRect =
76 originalDevice->
clear(originalUpdateRect);
82 if(applyRect.isNull())
return true;
96 const QRect filterRect = selection ? applyRect & selection->
selectedRect() : applyRect;
99 if (!filter)
return false;
107 if (!filterRect.isEmpty()) {
177 while(!leafStack.isEmpty()) {
194 if (currentLeaf->isRoot()) {
205 currentLeaf->accept(originalVisitor);
206 currentLeaf->projectionPlane()->recalculate(applyRect, currentLeaf->node(), item.
m_renderFlags);
221 if (currentLeaf->shouldBeRendered()) {
222 currentLeaf->accept(originalVisitor);
228 if(currentLeaf->dependsOnLowerNodes()) {
229 if (currentLeaf->shouldBeRendered()) {
230 currentLeaf->accept(originalVisitor);
231 currentLeaf->projectionPlane()->recalculate(applyRect, currentLeaf->node(), item.
m_renderFlags);
237 if (currentLeaf->shouldBeRendered()) {
254 Q_ASSERT(currentLeaf->projection()->defaultBounds()->currentLevelOfDetail() ==
263 warnImage <<
"BUG: The walker hasn't reached the root layer!";
265 warnImage <<
" An inconsistency in the walkers occurred!";
266 warnImage <<
" Please report a bug describing how you got this message.";
278 KisPaintDeviceSP parentOriginal = currentLeaf->parent()->lazyDestinationForSubtreeComposition();
280 if (parentOriginal) {
281 if (useTempProjection) {
306 Q_UNUSED(useTempProjection);
307 Q_UNUSED(topmostLeaf);
319 if (!leaf->visible())
return true;
322 leaf->projectionPlane()->apply(&gc,
rect);
332 KisBaseRectsWalker::CloneNotificationsVector::iterator it;
334 for(it = vector.begin(); it != vector.end(); ++it) {
void doNotifyClones(KisBaseRectsWalker &walker)
KisPaintDeviceSP m_finalProjection
bool compositeWithProjection(KisProjectionLeafSP leaf, const QRect &rect)
void startMerge(KisBaseRectsWalker &walker, bool notifyClones=true)
KisPaintDeviceSP m_currentProjection
void writeProjection(KisProjectionLeafSP topmostLeaf, bool useTempProjection, const QRect &rect)
KisPaintDeviceSP m_cachedPaintDevice
void setupProjection(KisProjectionLeafSP currentLeaf, const QRect &rect, bool useTempProjection)
QRect requestedRect() const
int levelOfDetail() const
KisNodeSP startNode() const
CloneNotificationsVector & cloneNotifications()
bool needRectVaries() const
static KisFilterRegistry * instance()
void process(const KisPaintDeviceSP src, KisPaintDeviceSP dst, KisSelectionSP selection, const QRect &applyRect, const KisFilterConfigurationSP config, KoUpdater *progressUpdater=0) const
virtual KisFilterConfigurationSP filter() const
virtual bool visit(KisNode *node)=0
const KoColorSpace * colorSpace() const
void prepareClone(KisPaintDeviceSP src)
static void copyAreaOptimized(const QPoint &dstPt, KisPaintDeviceSP src, KisPaintDeviceSP dst, const QRect &originalSrcRect)
bool visit(KisSelectionMask *) override
bool visit(KisPaintLayer *) override
~KisUpdateOriginalVisitor() override
bool visit(KisExternalLayer *) override
bool visit(KisAdjustmentLayer *layer) override
bool visit(KisGeneratorLayer *) override
bool visit(KisNode *) override
KisPaintDeviceSP m_projection
bool visit(KisFilterMask *) override
bool visit(KisGroupLayer *) override
KisUpdateOriginalVisitor(const QRect &updateRect, KisPaintDeviceSP projection)
bool visit(KisTransparencyMask *) override
bool visit(KisTransformMask *) override
bool visit(KisColorizeMask *) override
bool visit(KisCloneLayer *) override
const T value(const QString &id) const
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
#define KIS_ASSERT_RECOVER_NOOP(cond)
#define DEBUG_NODE_ACTION(message, type, leaf, rect)
virtual bool visible(bool recursive=false) const
KisRenderPassFlags m_renderFlags
KisProjectionLeafSP m_leaf
KisLayerProjectionPlaneSP projectionPlane
KisBusyProgressIndicator * busyProgressIndicator
KisSelectionSP fetchComposedInternalSelection(const QRect &rect) const
KisPaintDeviceSP original() const override
QRect selectedRect() const