Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSmudgeStrategyBase.h
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
7#ifndef KRITA_KISCOLORSMUDGESTRATEGYBASE_H
8#define KRITA_KISCOLORSMUDGESTRATEGYBASE_H
9
10#include <kis_types.h>
11
14
15class KisPainter;
16
17
19{
20public:
22 {
23 virtual ~DabColoringStrategy() = default;
24 virtual bool supportsFusedDullingBlending() const = 0;
25 virtual void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity,
26 KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const = 0;
28 const QRect &dstRect,
29 const KoColor &preparedDullingColor,
30 const KoCompositeOp *smearOp,
31 const qreal smudgeRateOpacity,
32 const KoColor &paintColor,
33 const KoCompositeOp *colorRateOp,
34 const qreal colorRateOpacity) const = 0;
35 };
36
38 {
39 bool supportsFusedDullingBlending() const override;
40
41 void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity,
42 KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const override;
43
46 const QRect &dstRect,
47 const KoColor &preparedDullingColor,
48 const KoCompositeOp *smearOp,
49 const qreal smudgeRateOpacity,
50 const KoColor &paintColor,
51 const KoCompositeOp *colorRateOp,
52 const qreal colorRateOpacity) const override;
53 };
54
56 {
58
59 void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity,
60 KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const override;
61
62 bool supportsFusedDullingBlending() const override;
63
66 const QRect &dstRect,
67 const KoColor &preparedDullingColor,
68 const KoCompositeOp *smearOp,
69 const qreal smudgeRateOpacity,
70 const KoColor &paintColor,
71 const KoCompositeOp *colorRateOp,
72 const qreal colorRateOpacity) const override;
73
74 private:
76 };
77
78public:
79
80 KisColorSmudgeStrategyBase(bool useDullingMode);
81
82 void initializePaintingImpl(const KoColorSpace *dstColorSpace,
83 bool smearAlpha,
84 const QString &colorRateCompositeOpId);
85
87
88 const KoColorSpace* preciseColorSpace() const override;
89
90 virtual QString smearCompositeOp(bool smearAlpha) const;
91
92 virtual QString finalCompositeOp(bool smearAlpha) const;
93
94 virtual qreal finalPainterOpacity(qreal opacity, qreal smudgeRateValue);
95
96 virtual qreal colorRateOpacity(qreal opacity, qreal smudgeRateValue, qreal colorRateValue, qreal maxPossibleSmudgeRateValue);
97
98 virtual qreal dullingRateOpacity(qreal opacity, qreal smudgeRateValue);
99
100 virtual qreal smearRateOpacity(qreal opacity, qreal smudgeRateValue);
101
102 virtual void sampleDullingColor(const QRect &srcRect, qreal sampleRadiusValue, KisColorSmudgeSourceSP sourceDevice,
103 KisFixedPaintDeviceSP tempFixedDevice, KisFixedPaintDeviceSP maskDab,
104 KoColor *resultColor);
105
106 void blendBrush(const QVector<KisPainter *> dstPainters, KisColorSmudgeSourceSP srcSampleDevice,
107 KisFixedPaintDeviceSP maskDab, bool preserveMaskDab, const QRect &srcRect, const QRect &dstRect,
108 const KoColor &currentPaintColor, qreal opacity, qreal smudgeRateValue,
109 qreal maxPossibleSmudgeRateValue, qreal colorRateValue, qreal smudgeRadiusValue);
110
112 const QRect &dstRect, const qreal smudgeRateOpacity);
113
115 const KoColor &preparedDullingColor, const qreal smudgeRateOpacity);
116
117protected:
118 const KoCompositeOp * m_colorRateOp {nullptr};
120 const KoCompositeOp * m_smearOp {nullptr};
121private:
123 bool m_useDullingMode {true};
124};
125
126
127#endif //KRITA_KISCOLORSMUDGESTRATEGYBASE_H
virtual void sampleDullingColor(const QRect &srcRect, qreal sampleRadiusValue, KisColorSmudgeSourceSP sourceDevice, KisFixedPaintDeviceSP tempFixedDevice, KisFixedPaintDeviceSP maskDab, KoColor *resultColor)
void blendInBackgroundWithDulling(KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &dstRect, const KoColor &preparedDullingColor, const qreal smudgeRateOpacity)
virtual QString finalCompositeOp(bool smearAlpha) const
virtual QString smearCompositeOp(bool smearAlpha) const
virtual qreal colorRateOpacity(qreal opacity, qreal smudgeRateValue, qreal colorRateValue, qreal maxPossibleSmudgeRateValue)
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)
virtual qreal smearRateOpacity(qreal opacity, qreal smudgeRateValue)
virtual qreal finalPainterOpacity(qreal opacity, qreal smudgeRateValue)
virtual qreal dullingRateOpacity(qreal opacity, qreal smudgeRateValue)
void initializePaintingImpl(const KoColorSpace *dstColorSpace, bool smearAlpha, const QString &colorRateCompositeOpId)
virtual DabColoringStrategy & coloringStrategy()=0
const KoColorSpace * preciseColorSpace() const override
void blendInBackgroundWithSmearing(KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &srcRect, const QRect &dstRect, const qreal smudgeRateOpacity)
void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity, KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const override
void blendInFusedBackgroundAndColorRateWithDulling(KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &dstRect, const KoColor &preparedDullingColor, const KoCompositeOp *smearOp, const qreal smudgeRateOpacity, const KoColor &paintColor, const KoCompositeOp *colorRateOp, const qreal colorRateOpacity) const override
void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity, KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const override
void blendInFusedBackgroundAndColorRateWithDulling(KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &dstRect, const KoColor &preparedDullingColor, const KoCompositeOp *smearOp, const qreal smudgeRateOpacity, const KoColor &paintColor, const KoCompositeOp *colorRateOp, const qreal colorRateOpacity) const override
virtual void blendInFusedBackgroundAndColorRateWithDulling(KisFixedPaintDeviceSP dst, KisColorSmudgeSourceSP src, const QRect &dstRect, const KoColor &preparedDullingColor, const KoCompositeOp *smearOp, const qreal smudgeRateOpacity, const KoColor &paintColor, const KoCompositeOp *colorRateOp, const qreal colorRateOpacity) const =0
virtual void blendInColorRate(const KoColor &paintColor, const KoCompositeOp *colorRateOp, qreal colorRateOpacity, KisFixedPaintDeviceSP dstDevice, const QRect &dstRect) const =0
virtual bool supportsFusedDullingBlending() const =0