Krita Source Code Documentation
Loading...
Searching...
No Matches
_Private::AddGeneralOps< Traits, true > Struct Template Reference

#include <KoCompositeOps.h>

Public Types

typedef Traits::channels_type Arg
 
typedef Arg(* CompositeFunc) (Arg, Arg)
 

Static Public Member Functions

static void add (KoColorSpace *cs)
 
template<CompositeFunc func>
static void add (KoColorSpace *cs, const QString &id, const QString &category)
 
template<typename Functor >
static void add (KoColorSpace *cs, const QString &id, const QString &category)
 

Static Public Attributes

static const qint32 alpha_pos = Traits::alpha_pos
 
static constexpr bool IsIntegerSpace = std::numeric_limits<Arg>::is_integer
 

Detailed Description

template<class Traits>
struct _Private::AddGeneralOps< Traits, true >

Definition at line 131 of file KoCompositeOps.h.

Member Typedef Documentation

◆ Arg

template<class Traits >
typedef Traits::channels_type _Private::AddGeneralOps< Traits, true >::Arg

Definition at line 133 of file KoCompositeOps.h.

◆ CompositeFunc

template<class Traits >
typedef Arg(* _Private::AddGeneralOps< Traits, true >::CompositeFunc) (Arg, Arg)

Definition at line 134 of file KoCompositeOps.h.

Member Function Documentation

◆ add() [1/3]

template<class Traits >
static void _Private::AddGeneralOps< Traits, true >::add ( KoColorSpace * cs)
inlinestatic

Definition at line 164 of file KoCompositeOps.h.

164 {
165 using namespace KoCompositeOpClampPolicy;
166
171
172 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>, Traits>) {
175 } else {
177 }
178 } else {
180 }
181
184
185 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>, Traits>) {
188 } else {
190 }
191 } else {
193 }
194
195 add<CFOverlay<Arg> >(cs, COMPOSITE_OVERLAY , KoCompositeOp::categoryMix());
196 add<CFGrainMerge<Arg> >(cs, COMPOSITE_GRAIN_MERGE , KoCompositeOp::categoryMix());
197 add<CFGrainExtract<Arg> >(cs, COMPOSITE_GRAIN_EXTRACT , KoCompositeOp::categoryMix());
198 add<FunctorWithSDRClampPolicy<CFHardMix, Arg>>(cs, COMPOSITE_HARD_MIX, KoCompositeOp::categoryMix());
199 if constexpr (!IsIntegerSpace) {
200 add<CFHardMix<Arg, ClampAsFloatHDR>>(cs, COMPOSITE_HARD_MIX_HDR, KoCompositeOp::categoryMix());
201 }
202
203 add<CFHardMixPhotoshop<Arg>>(cs, COMPOSITE_HARD_MIX_PHOTOSHOP, KoCompositeOp::categoryMix());
204 add<CFHardMixSofterPhotoshop<Arg>>(cs, COMPOSITE_HARD_MIX_SOFTER_PHOTOSHOP, KoCompositeOp::categoryMix());
205 add<CFGeometricMean<Arg> >(cs, COMPOSITE_GEOMETRIC_MEAN, KoCompositeOp::categoryMix());
206 add<CFParallel<Arg> >(cs, COMPOSITE_PARALLEL , KoCompositeOp::categoryMix());
207 add<&cfAllanon<Arg> >(cs, COMPOSITE_ALLANON , KoCompositeOp::categoryMix());
208 add<FunctorWithSDRClampPolicy<CFHardOverlay, Arg>>(cs, COMPOSITE_HARD_OVERLAY, KoCompositeOp::categoryMix());
209 if constexpr (!IsIntegerSpace) {
210 add<CFHardOverlay<Arg, ClampAsFloatHDR>>(cs, COMPOSITE_HARD_OVERLAY_HDR, KoCompositeOp::categoryMix());
211 }
212
213 add<&cfInterpolation<Arg> >(cs, COMPOSITE_INTERPOLATION , KoCompositeOp::categoryMix());
214 add<&cfInterpolationB<Arg>>(cs, COMPOSITE_INTERPOLATIONB, KoCompositeOp::categoryMix());
215 add<CFPenumbraA<Arg> >(cs, COMPOSITE_PENUMBRAA , KoCompositeOp::categoryMix());
216 add<CFPenumbraB<Arg> >(cs, COMPOSITE_PENUMBRAB , KoCompositeOp::categoryMix());
217 add<&cfPenumbraC<Arg> >(cs, COMPOSITE_PENUMBRAC , KoCompositeOp::categoryMix());
218 add<&cfPenumbraD<Arg> >(cs, COMPOSITE_PENUMBRAD , KoCompositeOp::categoryMix());
219 cs->addCompositeOp(new KoCompositeOpMarker<Traits>(cs));
220
221 add<&cfScreen<Arg> >(cs, COMPOSITE_SCREEN , KoCompositeOp::categoryLight());
222
223 add<FunctorWithSDRClampPolicy<CFColorDodge, Arg>>(cs, COMPOSITE_DODGE, KoCompositeOp::categoryLight());
224 if constexpr (!IsIntegerSpace) {
225 add<CFColorDodge<Arg, ClampAsFloatHDR>>(cs, COMPOSITE_DODGE_HDR, KoCompositeOp::categoryLight());
226 }
227
228 add<&cfAddition<Arg> >(cs, COMPOSITE_LINEAR_DODGE, KoCompositeOp::categoryLight());
229 add<&cfLightenOnly<Arg> >(cs, COMPOSITE_LIGHTEN , KoCompositeOp::categoryLight());
230 add<CFHardLight<Arg> >(cs, COMPOSITE_HARD_LIGHT , KoCompositeOp::categoryLight());
231 add<&cfSoftLightIFSIllusions<Arg>>(cs, COMPOSITE_SOFT_LIGHT_IFS_ILLUSIONS, KoCompositeOp::categoryLight());
232 add<&cfSoftLightPegtopDelphi<Arg>>(cs, COMPOSITE_SOFT_LIGHT_PEGTOP_DELPHI, KoCompositeOp::categoryLight());
233 add<CFSoftLightSvg<Arg> >(cs, COMPOSITE_SOFT_LIGHT_SVG, KoCompositeOp::categoryLight());
235 add<CFGammaLight<Arg> >(cs, COMPOSITE_GAMMA_LIGHT , KoCompositeOp::categoryLight());
236 add<CFGammaIllumination<Arg>>(cs, COMPOSITE_GAMMA_ILLUMINATION, KoCompositeOp::categoryLight());
237
238 add<FunctorWithSDRClampPolicy<CFVividLight, Arg>>(cs, COMPOSITE_VIVID_LIGHT, KoCompositeOp::categoryLight());
239 if constexpr (!IsIntegerSpace) {
240 add<CFVividLight<Arg, ClampAsFloatHDR>>(cs, COMPOSITE_VIVID_LIGHT_HDR, KoCompositeOp::categoryLight());
241 }
242 add<CFFlatLight<Arg> >(cs, COMPOSITE_FLAT_LIGHT , KoCompositeOp::categoryLight());
243 add<CFPinLight<Arg>>(cs, COMPOSITE_PIN_LIGHT, KoCompositeOp::categoryLight()); // using HDR mode as default
244 add<&cfLinearLight<Arg> >(cs, COMPOSITE_LINEAR_LIGHT, KoCompositeOp::categoryLight());
245 add<&cfPNormA<Arg> >(cs, COMPOSITE_PNORM_A , KoCompositeOp::categoryLight());
246 add<&cfPNormB<Arg> >(cs, COMPOSITE_PNORM_B , KoCompositeOp::categoryLight());
247 add<&cfSuperLight<Arg> >(cs, COMPOSITE_SUPER_LIGHT , KoCompositeOp::categoryLight());
248 add<&cfTintIFSIllusions<Arg>>(cs, COMPOSITE_TINT_IFS_ILLUSIONS, KoCompositeOp::categoryLight());
249 add<&cfFogLightenIFSIllusions<Arg>>(cs, COMPOSITE_FOG_LIGHTEN_IFS_ILLUSIONS, KoCompositeOp::categoryLight());
250 add<&cfEasyDodge<Arg> >(cs, COMPOSITE_EASY_DODGE , KoCompositeOp::categoryLight());
251
252 add<CFColorBurn<Arg>>(cs, COMPOSITE_BURN, KoCompositeOp::categoryDark()); // using HDR mode as default
253 add<CFLinearBurn<Arg, ClampAsFloatHDR>>(cs, COMPOSITE_LINEAR_BURN , KoCompositeOp::categoryDark()); // using HDR mode as default
254 add<&cfDarkenOnly<Arg> >(cs, COMPOSITE_DARKEN , KoCompositeOp::categoryDark());
255 add<CFGammaDark<Arg> >(cs, COMPOSITE_GAMMA_DARK , KoCompositeOp::categoryDark());
256 add<&cfShadeIFSIllusions<Arg>>(cs, COMPOSITE_SHADE_IFS_ILLUSIONS, KoCompositeOp::categoryDark());
257 add<&cfFogDarkenIFSIllusions<Arg>>(cs, COMPOSITE_FOG_DARKEN_IFS_ILLUSIONS, KoCompositeOp::categoryDark());
258 add<&cfEasyBurn<Arg> >(cs, COMPOSITE_EASY_BURN , KoCompositeOp::categoryDark());
259
260 add<&cfAddition<Arg> >(cs, COMPOSITE_ADD , KoCompositeOp::categoryArithmetic());
261 add<&cfSubtract<Arg> >(cs, COMPOSITE_SUBTRACT , KoCompositeOp::categoryArithmetic());
262 add<CFInverseSubtract<Arg> >(cs, COMPOSITE_INVERSE_SUBTRACT, KoCompositeOp::categoryArithmetic());
263 add<&cfMultiply<Arg> >(cs, COMPOSITE_MULT , KoCompositeOp::categoryArithmetic());
264 add<CFDivide<Arg> >(cs, COMPOSITE_DIVIDE , KoCompositeOp::categoryArithmetic());
265
266 add<&cfModulo<Arg> >(cs, COMPOSITE_MOD , KoCompositeOp::categoryModulo());
267 add<&cfModuloContinuous<Arg> >(cs, COMPOSITE_MOD_CON , KoCompositeOp::categoryModulo());
268 add<&cfDivisiveModulo<Arg> >(cs, COMPOSITE_DIVISIVE_MOD , KoCompositeOp::categoryModulo());
269 add<&cfDivisiveModuloContinuous<Arg>>(cs, COMPOSITE_DIVISIVE_MOD_CON, KoCompositeOp::categoryModulo());
270 add<&cfModuloShift<Arg> >(cs, COMPOSITE_MODULO_SHIFT , KoCompositeOp::categoryModulo());
271 add<&cfModuloShiftContinuous<Arg>>(cs, COMPOSITE_MODULO_SHIFT_CON , KoCompositeOp::categoryModulo());
272
273 add<&cfArcTangent<Arg> >(cs, COMPOSITE_ARC_TANGENT , KoCompositeOp::categoryNegative());
274 add<&cfDifference<Arg> >(cs, COMPOSITE_DIFF , KoCompositeOp::categoryNegative());
275 add<CFExclusion<Arg> >(cs, COMPOSITE_EXCLUSION , KoCompositeOp::categoryNegative());
276 add<CFEquivalence<Arg> >(cs, COMPOSITE_EQUIVALENCE , KoCompositeOp::categoryNegative());
277 add<CFAdditiveSubtractive<Arg> >(cs, COMPOSITE_ADDITIVE_SUBTRACTIVE, KoCompositeOp::categoryNegative());
278 add<CFNegation<Arg> >(cs, COMPOSITE_NEGATION , KoCompositeOp::categoryNegative());
279
280 if constexpr (IsIntegerSpace) {
281 add<&cfXor<Arg> >(cs, COMPOSITE_XOR , KoCompositeOp::categoryBinary());
282 add<&cfOr<Arg> >(cs, COMPOSITE_OR , KoCompositeOp::categoryBinary());
283 add<&cfAnd<Arg> >(cs, COMPOSITE_AND , KoCompositeOp::categoryBinary());
284 add<&cfNand<Arg> >(cs, COMPOSITE_NAND , KoCompositeOp::categoryBinary());
285 add<&cfNor<Arg> >(cs, COMPOSITE_NOR , KoCompositeOp::categoryBinary());
286 add<&cfXnor<Arg> >(cs, COMPOSITE_XNOR , KoCompositeOp::categoryBinary());
287 add<&cfImplies<Arg> >(cs, COMPOSITE_IMPLICATION , KoCompositeOp::categoryBinary());
288 add<&cfNotImplies<Arg> >(cs, COMPOSITE_NOT_IMPLICATION, KoCompositeOp::categoryBinary());
289 add<&cfConverse<Arg> >(cs, COMPOSITE_CONVERSE , KoCompositeOp::categoryBinary());
290 add<&cfNotConverse<Arg>>(cs, COMPOSITE_NOT_CONVERSE , KoCompositeOp::categoryBinary());
291 }
292
293 add<&cfReflect<Arg>>(cs, COMPOSITE_REFLECT, KoCompositeOp::categoryQuadratic());
294 add<&cfGlow<Arg> >(cs, COMPOSITE_GLOW , KoCompositeOp::categoryQuadratic());
295 add<&cfFreeze<Arg> >(cs, COMPOSITE_FREEZE , KoCompositeOp::categoryQuadratic());
296 add<&cfHeat<Arg> >(cs, COMPOSITE_HEAT , KoCompositeOp::categoryQuadratic());
297 add<CFGleat<Arg> >(cs, COMPOSITE_GLEAT , KoCompositeOp::categoryQuadratic());
298 add<CFHelow<Arg> >(cs, COMPOSITE_HELOW , KoCompositeOp::categoryQuadratic());
299 add<CFReeze<Arg> >(cs, COMPOSITE_REEZE , KoCompositeOp::categoryQuadratic());
300 add<CFFrect<Arg> >(cs, COMPOSITE_FRECT , KoCompositeOp::categoryQuadratic());
301 add<&cfFhyrd<Arg> >(cs, COMPOSITE_FHYRD , KoCompositeOp::categoryQuadratic());
302
303 cs->addCompositeOp(new KoCompositeOpDissolve<Traits>(cs, KoCompositeOp::categoryMisc()));
304 }
bool useSubtractiveBlendingForCmykColorSpaces()
const QString COMPOSITE_SOFT_LIGHT_IFS_ILLUSIONS
const QString COMPOSITE_GLOW
const QString COMPOSITE_DARKEN
const QString COMPOSITE_DIVISIVE_MOD_CON
const QString COMPOSITE_ALLANON
const QString COMPOSITE_EQUIVALENCE
const QString COMPOSITE_NEGATION
const QString COMPOSITE_OVERLAY
const QString COMPOSITE_DIVIDE
const QString COMPOSITE_DODGE
const QString COMPOSITE_SOFT_LIGHT_SVG
const QString COMPOSITE_HELOW
const QString COMPOSITE_GAMMA_LIGHT
const QString COMPOSITE_ADD
const QString COMPOSITE_FOG_DARKEN_IFS_ILLUSIONS
const QString COMPOSITE_LIGHTEN
const QString COMPOSITE_LINEAR_BURN
const QString COMPOSITE_FREEZE
const QString COMPOSITE_FOG_LIGHTEN_IFS_ILLUSIONS
const QString COMPOSITE_CONVERSE
const QString COMPOSITE_GRAIN_MERGE
const QString COMPOSITE_SOFT_LIGHT_PHOTOSHOP
const QString COMPOSITE_PARALLEL
const QString COMPOSITE_PENUMBRAA
const QString COMPOSITE_INVERSE_SUBTRACT
const QString COMPOSITE_TINT_IFS_ILLUSIONS
const QString COMPOSITE_DIVISIVE_MOD
const QString COMPOSITE_MULT
const QString COMPOSITE_REFLECT
const QString COMPOSITE_PNORM_B
const QString COMPOSITE_OR
const QString COMPOSITE_LINEAR_LIGHT
const QString COMPOSITE_XNOR
const QString COMPOSITE_VIVID_LIGHT_HDR
const QString COMPOSITE_FHYRD
const QString COMPOSITE_HARD_LIGHT
const QString COMPOSITE_INTERPOLATION
const QString COMPOSITE_PENUMBRAB
const QString COMPOSITE_IMPLICATION
const QString COMPOSITE_SHADE_IFS_ILLUSIONS
const QString COMPOSITE_NOT_IMPLICATION
const QString COMPOSITE_SOFT_LIGHT_PEGTOP_DELPHI
const QString COMPOSITE_EASY_BURN
const QString COMPOSITE_HARD_OVERLAY
const QString COMPOSITE_FLAT_LIGHT
const QString COMPOSITE_SCREEN
const QString COMPOSITE_PIN_LIGHT
const QString COMPOSITE_DIFF
const QString COMPOSITE_MOD_CON
const QString COMPOSITE_GAMMA_DARK
const QString COMPOSITE_PENUMBRAD
const QString COMPOSITE_PNORM_A
const QString COMPOSITE_HARD_MIX
const QString COMPOSITE_DODGE_HDR
const QString COMPOSITE_NOR
const QString COMPOSITE_PENUMBRAC
const QString COMPOSITE_SUBTRACT
const QString COMPOSITE_BURN
const QString COMPOSITE_LINEAR_DODGE
const QString COMPOSITE_GLEAT
const QString COMPOSITE_ADDITIVE_SUBTRACTIVE
const QString COMPOSITE_MOD
const QString COMPOSITE_EASY_DODGE
const QString COMPOSITE_NAND
const QString COMPOSITE_HARD_MIX_SOFTER_PHOTOSHOP
const QString COMPOSITE_HEAT
const QString COMPOSITE_HARD_MIX_HDR
const QString COMPOSITE_SUPER_LIGHT
const QString COMPOSITE_HARD_OVERLAY_HDR
const QString COMPOSITE_EXCLUSION
const QString COMPOSITE_FRECT
const QString COMPOSITE_NOT_CONVERSE
const QString COMPOSITE_REEZE
const QString COMPOSITE_GAMMA_ILLUMINATION
const QString COMPOSITE_MODULO_SHIFT_CON
const QString COMPOSITE_GEOMETRIC_MEAN
const QString COMPOSITE_AND
const QString COMPOSITE_GRAIN_EXTRACT
const QString COMPOSITE_ARC_TANGENT
const QString COMPOSITE_INTERPOLATIONB
const QString COMPOSITE_XOR
const QString COMPOSITE_VIVID_LIGHT
const QString COMPOSITE_HARD_MIX_PHOTOSHOP
const QString COMPOSITE_MODULO_SHIFT
virtual void addCompositeOp(const KoCompositeOp *op)
default blending policy used in additive color spaces
static QString categoryLight()
static QString categoryMisc()
static QString categoryQuadratic()
static QString categoryModulo()
static QString categoryMix()
static QString categoryArithmetic()
static QString categoryDark()
static QString categoryBinary()
static QString categoryNegative()
a plending policy used for subtractive color spaces (e.g. CMYK)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)

References KoColorSpace::addCompositeOp(), KoCompositeOp::categoryArithmetic(), KoCompositeOp::categoryBinary(), KoCompositeOp::categoryDark(), KoCompositeOp::categoryLight(), KoCompositeOp::categoryMisc(), KoCompositeOp::categoryMix(), KoCompositeOp::categoryModulo(), KoCompositeOp::categoryNegative(), KoCompositeOp::categoryQuadratic(), COMPOSITE_ADD, COMPOSITE_ADDITIVE_SUBTRACTIVE, COMPOSITE_ALLANON, COMPOSITE_AND, COMPOSITE_ARC_TANGENT, COMPOSITE_BURN, COMPOSITE_CONVERSE, COMPOSITE_DARKEN, COMPOSITE_DIFF, COMPOSITE_DIVIDE, COMPOSITE_DIVISIVE_MOD, COMPOSITE_DIVISIVE_MOD_CON, COMPOSITE_DODGE, COMPOSITE_DODGE_HDR, COMPOSITE_EASY_BURN, COMPOSITE_EASY_DODGE, COMPOSITE_EQUIVALENCE, COMPOSITE_EXCLUSION, COMPOSITE_FHYRD, COMPOSITE_FLAT_LIGHT, COMPOSITE_FOG_DARKEN_IFS_ILLUSIONS, COMPOSITE_FOG_LIGHTEN_IFS_ILLUSIONS, COMPOSITE_FRECT, COMPOSITE_FREEZE, COMPOSITE_GAMMA_DARK, COMPOSITE_GAMMA_ILLUMINATION, COMPOSITE_GAMMA_LIGHT, COMPOSITE_GEOMETRIC_MEAN, COMPOSITE_GLEAT, COMPOSITE_GLOW, COMPOSITE_GRAIN_EXTRACT, COMPOSITE_GRAIN_MERGE, COMPOSITE_HARD_LIGHT, COMPOSITE_HARD_MIX, COMPOSITE_HARD_MIX_HDR, COMPOSITE_HARD_MIX_PHOTOSHOP, COMPOSITE_HARD_MIX_SOFTER_PHOTOSHOP, COMPOSITE_HARD_OVERLAY, COMPOSITE_HARD_OVERLAY_HDR, COMPOSITE_HEAT, COMPOSITE_HELOW, COMPOSITE_IMPLICATION, COMPOSITE_INTERPOLATION, COMPOSITE_INTERPOLATIONB, COMPOSITE_INVERSE_SUBTRACT, COMPOSITE_LIGHTEN, COMPOSITE_LINEAR_BURN, COMPOSITE_LINEAR_DODGE, COMPOSITE_LINEAR_LIGHT, COMPOSITE_MOD, COMPOSITE_MOD_CON, COMPOSITE_MODULO_SHIFT, COMPOSITE_MODULO_SHIFT_CON, COMPOSITE_MULT, COMPOSITE_NAND, COMPOSITE_NEGATION, COMPOSITE_NOR, COMPOSITE_NOT_CONVERSE, COMPOSITE_NOT_IMPLICATION, COMPOSITE_OR, COMPOSITE_OVERLAY, COMPOSITE_PARALLEL, COMPOSITE_PENUMBRAA, COMPOSITE_PENUMBRAB, COMPOSITE_PENUMBRAC, COMPOSITE_PENUMBRAD, COMPOSITE_PIN_LIGHT, COMPOSITE_PNORM_A, COMPOSITE_PNORM_B, COMPOSITE_REEZE, COMPOSITE_REFLECT, COMPOSITE_SCREEN, COMPOSITE_SHADE_IFS_ILLUSIONS, COMPOSITE_SOFT_LIGHT_IFS_ILLUSIONS, COMPOSITE_SOFT_LIGHT_PEGTOP_DELPHI, COMPOSITE_SOFT_LIGHT_PHOTOSHOP, COMPOSITE_SOFT_LIGHT_SVG, COMPOSITE_SUBTRACT, COMPOSITE_SUPER_LIGHT, COMPOSITE_TINT_IFS_ILLUSIONS, COMPOSITE_VIVID_LIGHT, COMPOSITE_VIVID_LIGHT_HDR, COMPOSITE_XNOR, COMPOSITE_XOR, and useSubtractiveBlendingForCmykColorSpaces().

◆ add() [2/3]

template<class Traits >
template<CompositeFunc func>
static void _Private::AddGeneralOps< Traits, true >::add ( KoColorSpace * cs,
const QString & id,
const QString & category )
inlinestatic

Definition at line 139 of file KoCompositeOps.h.

139 {
140 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>, Traits>) {
142 cs->addCompositeOp(new KoCompositeOpGenericSC<Traits, func, KoSubtractiveBlendingPolicy<Traits>>(cs, id, category));
143 } else {
144 cs->addCompositeOp(new KoCompositeOpGenericSC<Traits, func, KoAdditiveBlendingPolicy<Traits>>(cs, id, category));
145 }
146 } else {
147 cs->addCompositeOp(new KoCompositeOpGenericSC<Traits, func, KoAdditiveBlendingPolicy<Traits>>(cs, id, category));
148 }
149 }

References KoColorSpace::addCompositeOp(), and useSubtractiveBlendingForCmykColorSpaces().

◆ add() [3/3]

template<class Traits >
template<typename Functor >
static void _Private::AddGeneralOps< Traits, true >::add ( KoColorSpace * cs,
const QString & id,
const QString & category )
inlinestatic

Definition at line 152 of file KoCompositeOps.h.

152 {
153 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>, Traits>) {
155 cs->addCompositeOp(new KoCompositeOpGenericSCFunctor<Traits, Functor, KoSubtractiveBlendingPolicy<Traits>>(cs, id, category));
156 } else {
157 cs->addCompositeOp(new KoCompositeOpGenericSCFunctor<Traits, Functor, KoAdditiveBlendingPolicy<Traits>>(cs, id, category));
158 }
159 } else {
160 cs->addCompositeOp(new KoCompositeOpGenericSCFunctor<Traits, Functor, KoAdditiveBlendingPolicy<Traits>>(cs, id, category));
161 }
162 }

References KoColorSpace::addCompositeOp(), and useSubtractiveBlendingForCmykColorSpaces().

Member Data Documentation

◆ alpha_pos

template<class Traits >
const qint32 _Private::AddGeneralOps< Traits, true >::alpha_pos = Traits::alpha_pos
static

Definition at line 135 of file KoCompositeOps.h.

◆ IsIntegerSpace

template<class Traits >
constexpr bool _Private::AddGeneralOps< Traits, true >::IsIntegerSpace = std::numeric_limits<Arg>::is_integer
staticconstexpr

Definition at line 136 of file KoCompositeOps.h.


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