Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSmudgeStrategyWithOverlay.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2021 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8
10
11#include "kis_image.h"
12#include "kis_paint_device.h"
14#include "kis_selection.h"
15
17
19 bool smearAlpha, bool useDullingMode,
20 bool useOverlayMode)
21 : KisColorSmudgeStrategyBase(useDullingMode)
22 , m_maskDab(new KisFixedPaintDevice(KoColorSpaceRegistry::instance()->alpha8()))
23 , m_smearAlpha(smearAlpha)
24 , m_initializationPainter(painter)
25{
26 if (useOverlayMode && image) {
30 } else {
33 }
34}
35
39
61
63{
65 result << &m_finalPainter;
66 if (m_overlayPainter) {
67 result << m_overlayPainter.data();
68 }
69 return result;
70}
71
72QVector<QRect> KisColorSmudgeStrategyWithOverlay::paintDab(const QRect &srcRect, const QRect &dstRect,
73 const KoColor &currentPaintColor, qreal opacity,
74 qreal colorRateValue, qreal smudgeRateValue,
75 qreal maxPossibleSmudgeRateValue,
76 qreal lightnessStrengthValue, qreal smudgeRadiusValue)
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}
PythonPluginManager * instance
virtual QString finalCompositeOp(bool smearAlpha) const
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 initializePaintingImpl(const KoColorSpace *dstColorSpace, bool smearAlpha, const QString &colorRateCompositeOpId)
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
QScopedPointer< KisOverlayPaintDeviceWrapper > m_layerOverlayDevice
QScopedPointer< KisOverlayPaintDeviceWrapper > m_imageOverlayDevice
KisColorSmudgeStrategyWithOverlay(KisPainter *painter, KisImageSP image, bool smearAlpha, bool useDullingMode, bool useOverlayMode)
KisPaintDeviceSP projection() const
QString compositeOpId
const QVector< QRect > calculateAllMirroredRects(const QRect &rc)
void copyMirrorInformationFrom(const KisPainter *other)
QBitArray channelFlags()
void setSelection(KisSelectionSP selection)
KisSelectionSP selection
void begin(KisPaintDeviceSP device)
KisPaintDeviceSP device
void setChannelFlags(QBitArray channelFlags)
void setCompositeOpId(const KoCompositeOp *op)