Krita Source Code Documentation
Loading...
Searching...
No Matches
KisColorSmudgeStrategyMaskLegacy.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#include <kis_algebra_2d.h>
9#include <QtMath>
12
13#include "kis_image.h"
14
16 bool smearAlpha, bool useDullingMode,
17 bool useOverlayMode)
19 image,
20 smearAlpha,
21 useDullingMode,
22 useOverlayMode)
23{
24}
25
26void KisColorSmudgeStrategyMaskLegacy::sampleDullingColor(const QRect &srcRect, qreal sampleRadiusValue,
27 KisColorSmudgeSourceSP sourceDevice,
28 KisFixedPaintDeviceSP tempFixedDevice,
29 KisFixedPaintDeviceSP maskDab, KoColor *resultColor)
30{
31 using namespace KisColorSmudgeSampleUtils;
32 sampleColor<AveragedSampleWrapper>(srcRect, sampleRadiusValue,
33 sourceDevice, tempFixedDevice,
34 maskDab, resultColor);
35}
36
38{
39 Q_UNUSED(smearAlpha);
40 return COMPOSITE_COPY;
41}
42
44{
45 return smearAlpha ? COMPOSITE_COPY : COMPOSITE_OVER;
46}
47
48qreal KisColorSmudgeStrategyMaskLegacy::finalPainterOpacity(qreal opacity, qreal smudgeRateValue)
49{
50 return qBound(OPACITY_TRANSPARENT_F,
51 smudgeRateValue * opacity,
53}
54
55qreal KisColorSmudgeStrategyMaskLegacy::colorRateOpacity(qreal opacity, qreal smudgeRateValue, qreal colorRateValue,
56 qreal maxPossibleSmudgeRateValue)
57{
58 Q_UNUSED(smudgeRateValue);
59
60 const qreal maxColorRate = qMax<qreal>(1.0 - maxPossibleSmudgeRateValue, 0.2);
61
62 return qBound(OPACITY_TRANSPARENT_F,
63 KisAlgebra2D::lerp(0.0, maxColorRate, colorRateValue * opacity),
65}
66
67qreal KisColorSmudgeStrategyMaskLegacy::dullingRateOpacity(qreal opacity, qreal smudgeRateValue)
68{
69 Q_UNUSED(opacity);
70 Q_UNUSED(smudgeRateValue);
71
72 return OPACITY_OPAQUE_F;
73}
74
75qreal KisColorSmudgeStrategyMaskLegacy::smearRateOpacity(qreal opacity, qreal smudgeRateValue)
76{
77 Q_UNUSED(opacity);
78 Q_UNUSED(smudgeRateValue);
79
80 return OPACITY_OPAQUE_F;
81}
const qreal OPACITY_OPAQUE_F
const qreal OPACITY_TRANSPARENT_F
const QString COMPOSITE_OVER
const QString COMPOSITE_COPY
KisColorSmudgeStrategyMaskLegacy(KisPainter *painter, KisImageSP image, bool smearAlpha, bool useDullingMode, bool useOverlayMode)
qreal colorRateOpacity(qreal opacity, qreal smudgeRateValue, qreal colorRateValue, qreal maxPossibleSmudgeRateValue) override
void sampleDullingColor(const QRect &srcRect, qreal sampleRadiusValue, KisColorSmudgeSourceSP sourceDevice, KisFixedPaintDeviceSP tempFixedDevice, KisFixedPaintDeviceSP maskDab, KoColor *resultColor) override
qreal dullingRateOpacity(qreal opacity, qreal smudgeRateValue) override
qreal smearRateOpacity(qreal opacity, qreal smudgeRateValue) override
QString finalCompositeOp(bool smearAlpha) const override
qreal finalPainterOpacity(qreal opacity, qreal smudgeRateValue) override
QString smearCompositeOp(bool smearAlpha) const override
Point lerp(const Point &pt1, const Point &pt2, qreal t)