10#include <klocalizedstring.h>
34 : offset(defaultBounds)
62 m_d->copyFrom->registerClone(
this);
71 rhs.
m_d->fallback->colorSpace(),
75 m_d->offset = rhs.
m_d->offset;
78 m_d->copyFrom->registerClone(
this);
85 m_d->copyFrom->unregisterClone(
this);
94 newLayer->
setX(newLayer->
x() +
x());
95 newLayer->
setY(newLayer->
y() +
y());
111 return node->inherits(
"KisMask");
121 if (!
m_d->copyFrom || !
m_d->copyFrom->projection())
return m_d->fallback;
125 retval =
m_d->copyFrom->projection();
130 retval =
m_d->copyFrom->original();
138 return m_d->offset->x() ||
m_d->offset->y();
143 return m_d->copyFrom ?
m_d->copyFrom->colorSpace() :
m_d->fallback->colorSpace();
148 const QRect&
rect)
const
150 QRect copyRect =
rect;
151 copyRect.translate(-
m_d->offset->x(), -
m_d->offset->y());
170 if (!dontInvalidateFrames) {
199 if (effectMasks.isEmpty())
return QRect();
207 (!rectVariesFlag &&
needRect == rc)) {
217 return m_d->offset->x();
221 return m_d->offset->y();
225 m_d->offset->setX(
x);
229 m_d->offset->setY(
y);
250 QRect resultRect =
rect;
253 if (
m_d->offset->x() ||
m_d->offset->y()) {
254 resultRect |=
rect.translated(-
m_d->offset->x(), -
m_d->offset->y());
270 return rect.translated(
m_d->offset->x(),
m_d->offset->y());
275 return v.visit(
this);
280 return visitor.
visit(
this, undoAdapter);
286 m_d->copyFrom->unregisterClone(
this);
289 m_d->copyFrom = fromLayer;
292 m_d->copyFrom->registerClone(
this);
298 return m_d->copyFrom;
318 Q_ASSERT(!
m_d->copyFrom);
319 m_d->copyFromInfo = info;
339 m_d->offset.syncLodCache();
float value(const T *src, size_t ch)
const KoColorSpace * colorSpace() const
QRect bounds() const override
QRect exactBounds() const
static void copyAreaOptimized(const QPoint &dstPt, KisPaintDeviceSP src, KisPaintDeviceSP dst, const QRect &originalSrcRect)
virtual void visit(KisNode *node, KisUndoAdapter *undoAdapter)=0
KisSharedPtr< T > toStrongRef() const
toStrongRef returns a KisSharedPtr which may be dereferenced.
QIcon loadIcon(const QString &name)
const QString & compositeOpId() const
void mergeNodeProperties(const KoProperties &properties)
const KoProperties & nodeProperties() const
virtual void notifyParentVisibilityChanged(bool value)
void setCompositeOpId(const QString &compositeOpId)
virtual bool visible(bool recursive=false) const
void setCopyType(CopyLayerType type)
const KoColorSpace * colorSpace() const override
void syncLodCache() override
void copyOriginalToProjection(const KisPaintDeviceSP original, KisPaintDeviceSP projection, const QRect &rect) const override
bool needProjection() const override
void setCopyFromInfo(KisNodeUuidInfo info)
void setY(qint32) override
KisPaintDeviceSP paintDevice() const override
bool accept(KisNodeVisitor &) override
void setCopyFrom(KisLayerSP layer)
void setX(qint32) override
QRect extent() const override
Returns an approximation of where the bounds on actual data are in this layer.
qint32 y() const override
qint32 x() const override
Private(KisDefaultBoundsBaseSP defaultBounds)
void notifyParentVisibilityChanged(bool value) override
bool allowAsChild(KisNodeSP) const override
QRect outgoingChangeRect(const QRect &rect) const override
KisPaintDeviceSP original() const override
KisNodeUuidInfo copyFromInfo
QRect exactBounds() const override
Returns the exact bounds of where the actual data resides in this layer.
KisLayerSP reincarnateAsPaintLayer() const
~KisCloneLayer() override
void setDirtyOriginal(const QRect &rect, bool dontInvalidateFrames)
void setImage(KisImageWSP image) override
QRect accessRect(const QRect &rect, PositionToFilthy pos) const override
QIcon icon() const override
KisPaintDeviceSP fallback
KisLodCapableLayerOffset offset
CopyLayerType copyType() const
KisBaseNode::PropertyList sectionModelProperties() const override
QRect needRectOnSourceForMasks(const QRect &rc) const
KisCloneLayer(KisLayerSP from, KisImageWSP image, const QString &name, quint8 opacity)
KisPaintDeviceSP projection() const override
void setImage(KisImageWSP image) override
qint32 y() const override
QList< KisEffectMaskSP > effectMasks() const
qint32 x() const override
QRect masksNeedRect(const QList< KisEffectMaskSP > &masks, const QRect &changeRect, QStack< QRect > &applyRects, bool &rectVariesFlag) const
void setX(qint32 x) override
KisBaseNode::PropertyList sectionModelProperties() const override
void setY(qint32 y) override
void setDirtyDontResetAnimationCache()
virtual QRect needRect(const QRect &rect, PositionToFilthy pos=N_FILTHY) const
virtual void syncLodCache()