Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSmudgeStrategyWithOverlay Class Reference

#include <KisColorSmudgeStrategyWithOverlay.h>

+ Inheritance diagram for KisColorSmudgeStrategyWithOverlay:

Public Member Functions

QVector< KisPainter * > finalPainters ()
 
void initializePainting () override
 
 KisColorSmudgeStrategyWithOverlay (KisPainter *painter, KisImageSP image, bool smearAlpha, bool useDullingMode, bool useOverlayMode)
 
QVector< QRect > paintDab (const QRect &srcRect, const QRect &dstRect, const KoColor &currentPaintColor, qreal opacity, qreal colorRateValue, qreal smudgeRateValue, qreal maxPossibleSmudgeRateValue, qreal lightnessStrengthValue, qreal smudgeRadiusValue) override
 
virtual ~KisColorSmudgeStrategyWithOverlay ()
 
- Public Member Functions inherited from KisColorSmudgeStrategyBase
void blendBrush (const QVector< KisPainter * > dstPainters, KisColorSmudgeSourceSP srcSampleDevice, KisFixedPaintDeviceSP maskDab, bool preserveMaskDab, const QRect &srcRect, const QRect &dstRect, const KoColor &currentPaintColor, qreal opacity, qreal smudgeRateValue, qreal maxPossibleSmudgeRateValue, qreal colorRateValue, qreal smudgeRadiusValue)
 
void blendInBackgroundWithDulling (KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &dstRect, const KoColor &preparedDullingColor, const qreal smudgeRateOpacity)
 
void blendInBackgroundWithSmearing (KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &srcRect, const QRect &dstRect, const qreal smudgeRateOpacity)
 
virtual DabColoringStrategycoloringStrategy ()=0
 
virtual qreal colorRateOpacity (qreal opacity, qreal smudgeRateValue, qreal colorRateValue, qreal maxPossibleSmudgeRateValue)
 
virtual qreal dullingRateOpacity (qreal opacity, qreal smudgeRateValue)
 
virtual QString finalCompositeOp (bool smearAlpha) const
 
virtual qreal finalPainterOpacity (qreal opacity, qreal smudgeRateValue)
 
void initializePaintingImpl (const KoColorSpace *dstColorSpace, bool smearAlpha, const QString &colorRateCompositeOpId)
 
 KisColorSmudgeStrategyBase (bool useDullingMode)
 
const KoColorSpacepreciseColorSpace () const override
 
virtual void sampleDullingColor (const QRect &srcRect, qreal sampleRadiusValue, KisColorSmudgeSourceSP sourceDevice, KisFixedPaintDeviceSP tempFixedDevice, KisFixedPaintDeviceSP maskDab, KoColor *resultColor)
 
virtual QString smearCompositeOp (bool smearAlpha) const
 
virtual qreal smearRateOpacity (qreal opacity, qreal smudgeRateValue)
 
- Public Member Functions inherited from KisColorSmudgeStrategy
 KisColorSmudgeStrategy ()
 
virtual void updateMask (KisDabCache *dabCache, const KisPaintInformation &info, const KisDabShape &shape, const QPointF &cursorPoint, QRect *dstDabRect, qreal lightnessStrength)=0
 
virtual ~KisColorSmudgeStrategy ()=default
 

Protected Attributes

QScopedPointer< KisOverlayPaintDeviceWrapperm_layerOverlayDevice
 
KisFixedPaintDeviceSP m_maskDab
 
bool m_shouldPreserveMaskDab = true
 
- Protected Attributes inherited from KisColorSmudgeStrategyBase
const KoCompositeOpm_colorRateOp {nullptr}
 
KoColor m_preparedDullingColor
 
const KoCompositeOpm_smearOp {nullptr}
 
- Protected Attributes inherited from KisColorSmudgeStrategy
KisOptimizedByteArray::MemoryAllocatorSP m_memoryAllocator
 

Private Attributes

KisPainter m_finalPainter
 
QScopedPointer< KisOverlayPaintDeviceWrapperm_imageOverlayDevice
 
KisPainterm_initializationPainter = 0
 
QScopedPointer< KisPainterm_overlayPainter
 
bool m_smearAlpha = true
 
KisColorSmudgeSourceSP m_sourceWrapperDevice
 

Detailed Description

Definition at line 14 of file KisColorSmudgeStrategyWithOverlay.h.

Constructor & Destructor Documentation

◆ KisColorSmudgeStrategyWithOverlay()

KisColorSmudgeStrategyWithOverlay::KisColorSmudgeStrategyWithOverlay ( KisPainter * painter,
KisImageSP image,
bool smearAlpha,
bool useDullingMode,
bool useOverlayMode )

Definition at line 18 of file KisColorSmudgeStrategyWithOverlay.cpp.

21 : KisColorSmudgeStrategyBase(useDullingMode)
23 , m_smearAlpha(smearAlpha)
25{
26 if (useOverlayMode && image) {
30 } else {
33 }
34}
QScopedPointer< KisOverlayPaintDeviceWrapper > m_layerOverlayDevice
QScopedPointer< KisOverlayPaintDeviceWrapper > m_imageOverlayDevice
KisPaintDeviceSP projection() const
KisPaintDeviceSP device
static KoColorSpaceRegistry * instance()

References KisPainter::device, KisOverlayPaintDeviceWrapper::LazyPreciseMode, m_imageOverlayDevice, m_layerOverlayDevice, m_sourceWrapperDevice, KisOverlayPaintDeviceWrapper::PreciseMode, and KisImage::projection().

◆ ~KisColorSmudgeStrategyWithOverlay()

KisColorSmudgeStrategyWithOverlay::~KisColorSmudgeStrategyWithOverlay ( )
virtual

Definition at line 36 of file KisColorSmudgeStrategyWithOverlay.cpp.

36 {
37
38}

Member Function Documentation

◆ finalPainters()

QVector< KisPainter * > KisColorSmudgeStrategyWithOverlay::finalPainters ( )

Definition at line 62 of file KisColorSmudgeStrategyWithOverlay.cpp.

63{
65 result << &m_finalPainter;
66 if (m_overlayPainter) {
67 result << m_overlayPainter.data();
68 }
69 return result;
70}

References m_finalPainter, and m_overlayPainter.

◆ initializePainting()

void KisColorSmudgeStrategyWithOverlay::initializePainting ( )
overridevirtual

Implements KisColorSmudgeStrategy.

Definition at line 40 of file KisColorSmudgeStrategyWithOverlay.cpp.

41{
45
51
53 m_overlayPainter.reset(new KisPainter());
54 m_overlayPainter->begin(m_imageOverlayDevice->overlay());
58 m_overlayPainter->copyMirrorInformationFrom(m_initializationPainter);
59 }
60}
virtual QString finalCompositeOp(bool smearAlpha) const
void initializePaintingImpl(const KoColorSpace *dstColorSpace, bool smearAlpha, const QString &colorRateCompositeOpId)
QString compositeOpId
void copyMirrorInformationFrom(const KisPainter *other)
QBitArray channelFlags()
void setSelection(KisSelectionSP selection)
KisSelectionSP selection
void begin(KisPaintDeviceSP device)
void setChannelFlags(QBitArray channelFlags)
void setCompositeOpId(const KoCompositeOp *op)

References KisPainter::begin(), KisPainter::channelFlags(), KisPainter::compositeOpId, KisPainter::copyMirrorInformationFrom(), KisColorSmudgeStrategyBase::finalCompositeOp(), KisColorSmudgeStrategyBase::initializePaintingImpl(), m_finalPainter, m_imageOverlayDevice, m_initializationPainter, m_layerOverlayDevice, m_overlayPainter, m_smearAlpha, KisPainter::selection, KisPainter::setChannelFlags(), KisPainter::setCompositeOpId(), and KisPainter::setSelection().

◆ paintDab()

QVector< QRect > KisColorSmudgeStrategyWithOverlay::paintDab ( const QRect & srcRect,
const QRect & dstRect,
const KoColor & currentPaintColor,
qreal opacity,
qreal colorRateValue,
qreal smudgeRateValue,
qreal maxPossibleSmudgeRateValue,
qreal lightnessStrengthValue,
qreal smudgeRadiusValue )
overridevirtual

If we have m_imageOverlayDevice set, then m_sourceWrapperOverlay points to it, not to the layer's overlay. Therefore, we should read from it as well.

Implements KisColorSmudgeStrategy.

Definition at line 72 of file KisColorSmudgeStrategyWithOverlay.cpp.

77{
78 Q_UNUSED(lightnessStrengthValue);
79
80 const QVector<QRect> mirroredRects = m_finalPainter.calculateAllMirroredRects(dstRect);
81
82 QVector<QRect> readRects;
83 readRects << mirroredRects;
84 readRects << srcRect;
85
86 m_sourceWrapperDevice->readRects(readRects);
87
93 m_layerOverlayDevice->readRects(readRects);
94 }
95
99 srcRect, dstRect,
100 currentPaintColor,
101 opacity,
102 smudgeRateValue,
103 maxPossibleSmudgeRateValue,
104 colorRateValue, smudgeRadiusValue);
105
106 m_layerOverlayDevice->writeRects(mirroredRects);
107
108 return mirroredRects;
109}
void blendBrush(const QVector< KisPainter * > dstPainters, KisColorSmudgeSourceSP srcSampleDevice, KisFixedPaintDeviceSP maskDab, bool preserveMaskDab, const QRect &srcRect, const QRect &dstRect, const KoColor &currentPaintColor, qreal opacity, qreal smudgeRateValue, qreal maxPossibleSmudgeRateValue, qreal colorRateValue, qreal smudgeRadiusValue)
const QVector< QRect > calculateAllMirroredRects(const QRect &rc)

References KisColorSmudgeStrategyBase::blendBrush(), KisPainter::calculateAllMirroredRects(), finalPainters(), m_finalPainter, m_imageOverlayDevice, m_layerOverlayDevice, m_maskDab, m_shouldPreserveMaskDab, and m_sourceWrapperDevice.

Member Data Documentation

◆ m_finalPainter

KisPainter KisColorSmudgeStrategyWithOverlay::m_finalPainter
private

Definition at line 41 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_imageOverlayDevice

QScopedPointer<KisOverlayPaintDeviceWrapper> KisColorSmudgeStrategyWithOverlay::m_imageOverlayDevice
private

Definition at line 39 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_initializationPainter

KisPainter* KisColorSmudgeStrategyWithOverlay::m_initializationPainter = 0
private

Definition at line 44 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_layerOverlayDevice

QScopedPointer<KisOverlayPaintDeviceWrapper> KisColorSmudgeStrategyWithOverlay::m_layerOverlayDevice
protected

Definition at line 36 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_maskDab

KisFixedPaintDeviceSP KisColorSmudgeStrategyWithOverlay::m_maskDab
protected

Definition at line 34 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_overlayPainter

QScopedPointer<KisPainter> KisColorSmudgeStrategyWithOverlay::m_overlayPainter
private

Definition at line 42 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_shouldPreserveMaskDab

bool KisColorSmudgeStrategyWithOverlay::m_shouldPreserveMaskDab = true
protected

Definition at line 35 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_smearAlpha

bool KisColorSmudgeStrategyWithOverlay::m_smearAlpha = true
private

Definition at line 43 of file KisColorSmudgeStrategyWithOverlay.h.

◆ m_sourceWrapperDevice

KisColorSmudgeSourceSP KisColorSmudgeStrategyWithOverlay::m_sourceWrapperDevice
private

Definition at line 40 of file KisColorSmudgeStrategyWithOverlay.h.


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