33 const QBitArray& channelFlags ) {
36 if (dstAlpha == unitValue<channels_type>())
return dstAlpha;
37 channels_type appliedAlpha = mul(maskAlpha, srcAlpha, opacity);
39 if (appliedAlpha == zeroValue<channels_type>())
return dstAlpha;
40 channels_type newDstAlpha = unionShapeOpacity(dstAlpha, appliedAlpha);
42 if (dstAlpha != zeroValue<channels_type>()) {
44 for (qint8 channel = 0; channel <
channels_nb; ++channel)
45 if(channel !=
alpha_pos && (allChannelFlags || channelFlags.testBit(channel))) {
47 channels_type srcMult= mul(BlendingPolicy::toAdditiveSpace(src[channel]), appliedAlpha);
48 channels_type blendedValue =
lerp(srcMult,BlendingPolicy::toAdditiveSpace(dst[channel]),dstAlpha);
55 for (qint8 channel = 0; channel <
channels_nb; ++channel)
56 if(channel !=
alpha_pos && (allChannelFlags || channelFlags.testBit(channel)))
57 dst[channel] = src[channel];