Krita Source Code Documentation
Loading...
Searching...
No Matches
KoCompositeOpDestinationAtop< CS_Traits > Class Template Reference

#include <KoCompositeOpDestinationAtop.h>

+ Inheritance diagram for KoCompositeOpDestinationAtop< CS_Traits >:

Public Member Functions

 KoCompositeOpDestinationAtop (const KoColorSpace *cs)
 
- Public Member Functions inherited from KoCompositeOpBase< CS_Traits, KoCompositeOpDestinationAtop< CS_Traits > >
void composite (const KoCompositeOp::ParameterInfo &params) const override
 
virtual void composite (const ParameterInfo &params) const
 
void composite (quint8 *dstRowStart, qint32 dstRowStride, const quint8 *srcRowStart, qint32 srcRowStride, const quint8 *maskRowStart, qint32 maskRowStride, qint32 rows, qint32 numColumns, float opacity, const QBitArray &channelFlags=QBitArray()) const
 
 KoCompositeOpBase (const KoColorSpace *cs, const QString &id, const QString &category)
 
- Public Member Functions inherited from KoCompositeOp
QString category () const
 
const KoColorSpacecolorSpace () const
 
void composite (quint8 *dstRowStart, qint32 dstRowStride, const quint8 *srcRowStart, qint32 srcRowStride, const quint8 *maskRowStart, qint32 maskRowStride, qint32 rows, qint32 numColumns, float opacity, const QBitArray &channelFlags=QBitArray()) const
 
QString description () const
 
QString id () const
 
 KoCompositeOp (const KoColorSpace *cs, const QString &id, const QString &category=KoCompositeOp::categoryMisc())
 
virtual ~KoCompositeOp ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Static Public Member Functions

template<bool alphaLocked, bool allChannelFlags>
static channels_type composeColorChannels (const channels_type *src, channels_type srcAlpha, channels_type *dst, channels_type dstAlpha, channels_type maskAlpha, channels_type opacity, const QBitArray &channelFlags)
 
- Static Public Member Functions inherited from KoCompositeOp
static QString categoryArithmetic ()
 
static QString categoryBinary ()
 
static QString categoryDark ()
 
static QString categoryHSI ()
 
static QString categoryHSL ()
 
static QString categoryHSV ()
 
static QString categoryHSY ()
 
static QString categoryLight ()
 
static QString categoryMisc ()
 
static QString categoryMix ()
 
static QString categoryModulo ()
 
static QString categoryNegative ()
 
static QString categoryQuadratic ()
 

Private Types

typedef KoCompositeOpBase< CS_Traits, KoCompositeOpDestinationAtop< CS_Traits > > base_class
 
typedef CS_Traits::channels_type channels_type
 

Static Private Attributes

static const qint8 alpha_pos = CS_Traits::alpha_pos
 
static const qint8 channels_nb = CS_Traits::channels_nb
 

Additional Inherited Members

- Public Attributes inherited from KoCompositeOp
QString category
 
const KoColorSpacecolorSpace
 
QBitArray defaultChannelFlags
 
QString description
 
QString id
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Detailed Description

template<class CS_Traits>
class KoCompositeOpDestinationAtop< CS_Traits >

Generic implementation of the Destination-atop composite op, based off the behind composite op. This is necessary for Open Raster support. https://www.w3.org/TR/compositing-1/

Definition at line 19 of file KoCompositeOpDestinationAtop.h.

Member Typedef Documentation

◆ base_class

template<class CS_Traits >
typedef KoCompositeOpBase<CS_Traits, KoCompositeOpDestinationAtop<CS_Traits> > KoCompositeOpDestinationAtop< CS_Traits >::base_class
private

Definition at line 21 of file KoCompositeOpDestinationAtop.h.

◆ channels_type

template<class CS_Traits >
typedef CS_Traits::channels_type KoCompositeOpDestinationAtop< CS_Traits >::channels_type
private

Definition at line 22 of file KoCompositeOpDestinationAtop.h.

Constructor & Destructor Documentation

◆ KoCompositeOpDestinationAtop()

template<class CS_Traits >
KoCompositeOpDestinationAtop< CS_Traits >::KoCompositeOpDestinationAtop ( const KoColorSpace * cs)
inline

Definition at line 28 of file KoCompositeOpDestinationAtop.h.

const QString COMPOSITE_DESTINATION_ATOP
KoCompositeOpBase< CS_Traits, KoCompositeOpDestinationAtop< CS_Traits > > base_class
static QString categoryMix()

Member Function Documentation

◆ composeColorChannels()

template<class CS_Traits >
template<bool alphaLocked, bool allChannelFlags>
static channels_type KoCompositeOpDestinationAtop< CS_Traits >::composeColorChannels ( const channels_type * src,
channels_type srcAlpha,
channels_type * dst,
channels_type dstAlpha,
channels_type maskAlpha,
channels_type opacity,
const QBitArray & channelFlags )
inlinestatic

Definition at line 33 of file KoCompositeOpDestinationAtop.h.

36 {
37 using namespace Arithmetic;
38
39 channels_type appliedAlpha = mul(maskAlpha, srcAlpha, opacity);
40
41 channels_type newDstAlpha = appliedAlpha;
42
43 if (dstAlpha != zeroValue<channels_type>() && srcAlpha != zeroValue<channels_type>()) {
44 // blend the color channels as if we were painting on the layer below
45 for (qint8 channel = 0; channel < channels_nb; ++channel)
46 if(channel != alpha_pos && (allChannelFlags || channelFlags.testBit(channel))) {
47 dst[channel] = lerp(src[channel],dst[channel],dstAlpha);
48 }
49 }
50 else if (srcAlpha != zeroValue<channels_type>()) {
51 // don't blend if the color of the destination is undefined (has zero opacity)
52 // copy the source channel instead
53 for (qint8 channel = 0; channel < channels_nb; ++channel)
54 if(channel != alpha_pos && (allChannelFlags || channelFlags.testBit(channel)))
55 dst[channel] = src[channel];
56 }
57
58 return newDstAlpha;
59 }
QPointF lerp(const QPointF &p1, const QPointF &p2, qreal t)
T mul(T a, T b)

References KoCompositeOpDestinationAtop< CS_Traits >::alpha_pos, KoCompositeOpDestinationAtop< CS_Traits >::channels_nb, and lerp().

Member Data Documentation

◆ alpha_pos

template<class CS_Traits >
const qint8 KoCompositeOpDestinationAtop< CS_Traits >::alpha_pos = CS_Traits::alpha_pos
staticprivate

Definition at line 25 of file KoCompositeOpDestinationAtop.h.

◆ channels_nb

template<class CS_Traits >
const qint8 KoCompositeOpDestinationAtop< CS_Traits >::channels_nb = CS_Traits::channels_nb
staticprivate

Definition at line 24 of file KoCompositeOpDestinationAtop.h.


The documentation for this class was generated from the following file: