Krita Source Code Documentation
Loading...
Searching...
No Matches
KoAlphaDarkenParamsWrapper.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2019 Dmitry Kazakov <dimula73@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef KOALPHADARKENPARAMSWRAPPER_H
8#define KOALPHADARKENPARAMSWRAPPER_H
9
10#include <KoCompositeOp.h>
11#include "KoColorSpaceMaths.h"
12
13bool KRITAPIGMENT_EXPORT useCreamyAlphaDarken();
14
17 : opacity(params.flow * params.opacity),
18 flow(params.flow),
19 averageOpacity(params.flow * (*params.lastOpacity))
20 {
21 }
22 float opacity;
23 float flow;
25
26 template <typename T>
27 static inline T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha, T normCoeff) {
28 return srcAlpha + dstAlpha - srcAlpha * dstAlpha * normCoeff;
29 }
30
31 template <typename T>
32 static inline T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha) {
33 return srcAlpha + dstAlpha - srcAlpha * dstAlpha;
34 }
35
36 template<typename channels_type>
37 static inline channels_type calculateZeroFlowAlphaLegacy(channels_type srcAlpha, channels_type dstAlpha) {
38 return Arithmetic::unionShapeOpacity(srcAlpha, dstAlpha);
39 }
40};
41
42
45 : opacity(params.opacity),
46 flow(params.flow),
47 averageOpacity(*params.lastOpacity)
48 {
49 }
50 float opacity;
51 float flow;
53
54 template <typename T>
55 static inline T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha, T normCoeff) {
56 Q_UNUSED(srcAlpha);
57 Q_UNUSED(normCoeff);
58
59 return dstAlpha;
60 }
61
62 template <typename T>
63 static inline T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha) {
64 Q_UNUSED(srcAlpha);
65
66 return dstAlpha;
67 }
68
69 template<typename channels_type>
70 static inline channels_type calculateZeroFlowAlphaLegacy(channels_type srcAlpha, channels_type dstAlpha) {
71 Q_UNUSED(srcAlpha);
72 return dstAlpha;
73 }
74};
75
76#endif // KOALPHADARKENPARAMSWRAPPER_H
bool KRITAPIGMENT_EXPORT useCreamyAlphaDarken()
T unionShapeOpacity(T a, T b)
static channels_type calculateZeroFlowAlphaLegacy(channels_type srcAlpha, channels_type dstAlpha)
KoAlphaDarkenParamsWrapperCreamy(const KoCompositeOp::ParameterInfo &params)
static T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha)
static T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha, T normCoeff)
static T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha)
KoAlphaDarkenParamsWrapperHard(const KoCompositeOp::ParameterInfo &params)
static T calculateZeroFlowAlpha(T srcAlpha, T dstAlpha, T normCoeff)
static channels_type calculateZeroFlowAlphaLegacy(channels_type srcAlpha, channels_type dstAlpha)