Krita Source Code Documentation
Loading...
Searching...
No Matches
KoCompositeOp.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2005 Adrian Page <adrian@pagenet.plus.com>
3 * SPDX-FileCopyrightText: 2011 Silvio Heinrich <plassy@web.de>
4 *
5 * SPDX-License-Identifier: LGPL-2.1-or-later
6*/
7#ifndef KOCOMPOSITEOP_H
8#define KOCOMPOSITEOP_H
9
10#include <QString>
11#include <QMultiMap>
12#include <QBitArray>
13
14#include <boost/optional.hpp>
15
16#include "kritapigment_export.h"
17
18class KoColorSpace;
19
20class KoColorSpace;
21
25class KRITAPIGMENT_EXPORT KoCompositeOp
26{
27public:
28 static QString categoryArithmetic();
29 static QString categoryBinary();
30 static QString categoryModulo();
31 static QString categoryNegative();
32 static QString categoryLight();
33 static QString categoryDark();
34 static QString categoryHSY();
35 static QString categoryHSI();
36 static QString categoryHSL();
37 static QString categoryHSV();
38 static QString categoryMix();
39 static QString categoryMisc();
40 static QString categoryQuadratic();
41
42 struct KRITAPIGMENT_EXPORT ParameterInfo
43 {
45 ParameterInfo(const ParameterInfo &rhs);
46 ParameterInfo& operator=(const ParameterInfo &rhs);
47
48 quint8* dstRowStart {0};
49 qint32 dstRowStride {0};
50 const quint8* srcRowStart {0};
51 qint32 srcRowStride {0};
52 const quint8* maskRowStart {0};
53 qint32 maskRowStride {0};
54 qint32 rows {0};
55 qint32 cols {0};
56 float opacity {0.0};
57 float flow {0.0};
58 float _lastOpacityData {0.0};
59 float* lastOpacity {0};
60 QBitArray channelFlags;
61
62 void setOpacityAndAverage(float _opacity, float _averageOpacity);
63
64 void updateOpacityAndAverage(float value);
65 private:
66 inline void copy(const ParameterInfo &rhs);
67 };
68
69public:
70
78 KoCompositeOp(const KoColorSpace * cs, const QString& id, const QString & category = KoCompositeOp::categoryMisc());
79 virtual ~KoCompositeOp();
80
84 QString id() const;
88 QString description() const;
92 const KoColorSpace * colorSpace() const;
96 QString category() const;
97
113 void composite(quint8 *dstRowStart, qint32 dstRowStride,
114 const quint8 *srcRowStart, qint32 srcRowStride,
115 const quint8 *maskRowStart, qint32 maskRowStride,
116 qint32 rows, qint32 numColumns,
117 float opacity, const QBitArray& channelFlags = QBitArray()) const;
118
119
123 virtual void composite(const ParameterInfo& params) const;
124
125private:
127 struct Private;
128 Private* const d;
129};
130
131#endif // KOCOMPOSITEOP_H
float value(const T *src, size_t ch)
static QString categoryMisc()
const KoColorSpace * colorSpace() const
QString id() const
QString category() const
Private *const d
QString description() const