8#ifndef _KOCOMPOSITEOPS_H_
9#define _KOCOMPOSITEOPS_H_
11#include <boost/type_traits.hpp>
37template<
class Traits,
bool flag>
130template<
class Traits>
133 typedef typename Traits::channels_type
Arg;
135 static const qint32 alpha_pos = Traits::alpha_pos;
136 static constexpr bool IsIntegerSpace = std::numeric_limits<Arg>::is_integer;
138 template<CompositeFunc func>
140 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>,
Traits>) {
151 template<
typename Functor>
153 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>,
Traits>) {
172 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>,
Traits>) {
185 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>,
Traits>) {
199 if constexpr (!IsIntegerSpace) {
209 if constexpr (!IsIntegerSpace) {
224 if constexpr (!IsIntegerSpace) {
239 if constexpr (!IsIntegerSpace) {
280 if constexpr (IsIntegerSpace) {
307template<
class Traits,
bool flag>
313template<
class Traits>
318 static const qint32 red_pos = Traits::red_pos;
319 static const qint32 green_pos = Traits::green_pos;
320 static const qint32 blue_pos = Traits::blue_pos;
322 template<
typename Functor>
386template<
class Traits,
bool flag>
392template<
class Traits>
396 static const qint32 alpha_pos = Traits::alpha_pos;
397 template<
void compositeFunc(Arg, Arg, Arg&, Arg&)>
402 if constexpr (std::is_base_of_v<KoCmykTraits<typename Traits::channels_type>,
Traits>) {
435template<
class _Traits_>
438 typedef typename _Traits_::channels_type channels_type;
440 static const bool useGeneralOps =
true;
441 static const bool useRGBOps = (boost::is_base_of<KoBgrTraits<channels_type>, _Traits_>
::value
442 || boost::is_base_of<KoRgbTraits<channels_type>, _Traits_>
::value);
450template<
class _Traits_>
float value(const T *src, size_t ch)
bool useCreamyAlphaDarken()
bool useSubtractiveBlendingForCmykColorSpaces()
const QString COMPOSITE_SOFT_LIGHT_IFS_ILLUSIONS
const QString COMPOSITE_GLOW
const QString COMPOSITE_DEC_SATURATION_HSI
const QString COMPOSITE_INC_SATURATION
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_LIGHTNESS
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_SATURATION_HSI
const QString COMPOSITE_LIGHTEN
const QString COMPOSITE_COPY_RED
const QString COMPOSITE_LINEAR_BURN
const QString COMPOSITE_FREEZE
const QString COMPOSITE_FOG_LIGHTEN_IFS_ILLUSIONS
const QString COMPOSITE_CONVERSE
const QString COMPOSITE_VALUE
const QString COMPOSITE_GRAIN_MERGE
const QString COMPOSITE_SOFT_LIGHT_PHOTOSHOP
const QString COMPOSITE_PARALLEL
const QString COMPOSITE_PENUMBRAA
const QString COMPOSITE_LIGHTER_COLOR
const QString COMPOSITE_INVERSE_SUBTRACT
const QString COMPOSITE_TINT_IFS_ILLUSIONS
const QString COMPOSITE_DIVISIVE_MOD
const QString COMPOSITE_MULT
const QString COMPOSITE_INC_INTENSITY
const QString COMPOSITE_LAMBERT_LIGHTING_GAMMA_2_2
const QString COMPOSITE_REFLECT
const QString COMPOSITE_DEC_VALUE
const QString COMPOSITE_PNORM_B
const QString COMPOSITE_INC_SATURATION_HSL
const QString COMPOSITE_OR
const QString COMPOSITE_SATURATION
const QString COMPOSITE_LINEAR_LIGHT
const QString COMPOSITE_LAMBERT_LIGHTING
const QString COMPOSITE_XNOR
const QString COMPOSITE_VIVID_LIGHT_HDR
const QString COMPOSITE_INC_SATURATION_HSI
const QString COMPOSITE_FHYRD
const QString COMPOSITE_HUE_HSL
const QString COMPOSITE_COPY_GREEN
const QString COMPOSITE_HARD_LIGHT
const QString COMPOSITE_INTERPOLATION
const QString COMPOSITE_LUMINOSITY_SAI
const QString COMPOSITE_INC_SATURATION_HSV
const QString COMPOSITE_HUE_HSV
const QString COMPOSITE_PENUMBRAB
const QString COMPOSITE_IMPLICATION
const QString COMPOSITE_SHADE_IFS_ILLUSIONS
const QString COMPOSITE_NOT_IMPLICATION
const QString COMPOSITE_DEC_SATURATION
const QString COMPOSITE_COPY_BLUE
const QString COMPOSITE_SOFT_LIGHT_PEGTOP_DELPHI
const QString COMPOSITE_INC_LIGHTNESS
const QString COMPOSITE_EASY_BURN
const QString COMPOSITE_COLOR_HSV
const QString COMPOSITE_HARD_OVERLAY
const QString COMPOSITE_FLAT_LIGHT
const QString COMPOSITE_SCREEN
const QString COMPOSITE_PIN_LIGHT
const QString COMPOSITE_DEC_SATURATION_HSV
const QString COMPOSITE_DIFF
const QString COMPOSITE_DEC_LIGHTNESS
const QString COMPOSITE_MOD_CON
const QString COMPOSITE_GAMMA_DARK
const QString COMPOSITE_PENUMBRAD
const QString COMPOSITE_PNORM_A
const QString COMPOSITE_COLOR_HSI
const QString COMPOSITE_HARD_MIX
const QString COMPOSITE_HUE
const QString COMPOSITE_INTENSITY
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_DEC_LUMINOSITY
const QString COMPOSITE_NAND
const QString COMPOSITE_COLOR_HSL
const QString COMPOSITE_COLOR
const QString COMPOSITE_HARD_MIX_SOFTER_PHOTOSHOP
const QString COMPOSITE_HEAT
const QString COMPOSITE_TANGENT_NORMALMAP
const QString COMPOSITE_HARD_MIX_HDR
const QString COMPOSITE_SUPER_LIGHT
const QString COMPOSITE_HARD_OVERLAY_HDR
const QString COMPOSITE_DEC_INTENSITY
const QString COMPOSITE_EXCLUSION
const QString COMPOSITE_FRECT
const QString COMPOSITE_NOT_CONVERSE
const QString COMPOSITE_REEZE
const QString COMPOSITE_INC_LUMINOSITY
const QString COMPOSITE_GAMMA_ILLUMINATION
const QString COMPOSITE_MODULO_SHIFT_CON
const QString COMPOSITE_DARKER_COLOR
const QString COMPOSITE_TINT
const QString COMPOSITE_COMBINE_NORMAL
const QString COMPOSITE_SATURATION_HSL
const QString COMPOSITE_GEOMETRIC_MEAN
const QString COMPOSITE_AND
const QString COMPOSITE_GRAIN_EXTRACT
const QString COMPOSITE_SATURATION_HSV
const QString COMPOSITE_ARC_TANGENT
const QString COMPOSITE_DEC_SATURATION_HSL
const QString COMPOSITE_INTERPOLATIONB
const QString COMPOSITE_INC_VALUE
const QString COMPOSITE_XOR
const QString COMPOSITE_HUE_HSI
const QString COMPOSITE_VIVID_LIGHT
const QString COMPOSITE_LUMINIZE
const QString COMPOSITE_HARD_MIX_PHOTOSHOP
const QString COMPOSITE_MODULO_SHIFT
void addStandardCompositeOps(KoColorSpace *cs)
KoCompositeOp * createAlphaDarkenCompositeOp(const KoColorSpace *cs)
virtual void addCompositeOp(const KoCompositeOp *op)
static KoCompositeOp * createAlphaDarkenOpCreamyU64(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp32(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOpHardU64(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOpCreamy128(const KoColorSpace *cs)
static KoCompositeOp * createOverOp32(const KoColorSpace *cs)
static KoCompositeOp * createOverOpU64(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOpCreamy32(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp128(const KoColorSpace *cs)
static KoCompositeOp * createOverOp128(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOpHard32(const KoColorSpace *cs)
static KoCompositeOp * createCopyOpU64(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOpHard128(const KoColorSpace *cs)
default blending policy used in additive color spaces
static QString categoryLight()
static QString categoryMisc()
static QString categoryQuadratic()
static QString categoryHSI()
static QString categoryHSL()
static QString categoryHSV()
static QString categoryHSY()
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 void add(KoColorSpace *cs, const QString &id, const QString &category)
static void add(KoColorSpace *cs)
static void add(KoColorSpace *cs)
Traits::channels_type Arg
static void add(KoColorSpace *cs)
static void add(KoColorSpace *cs, const QString &id, const QString &category)
static void add(KoColorSpace *cs)
Traits::channels_type channels_type
static void add(KoColorSpace *cs, const QString &id, const QString &category)
static void add(KoColorSpace *cs)
static void add(KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createAlphaDarkenOp(const KoColorSpace *cs)
static KoCompositeOp * createCopyOp(const KoColorSpace *cs)
static KoCompositeOp * createOverOp(const KoColorSpace *cs)