60
62
template<class Traits>
63
struct OptimizedOpsSelector
65
static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
66
return new KoCompositeOpAlphaDarken<Traits>(cs);
68
static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
69
return new KoCompositeOpOver<Traits>(cs);
74
struct OptimizedOpsSelector<KoRgbU8Traits>
76
static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
77
return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
79
static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
80
return KoOptimizedCompositeOpFactory::createOverOp32(cs);
85
struct OptimizedOpsSelector<KoBgrU8Traits>
87
static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
88
return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
90
static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
91
return KoOptimizedCompositeOpFactory::createOverOp32(cs);
96
struct OptimizedOpsSelector<KoLabU8Traits>
98
static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
99
return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
101
static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
102
return KoOptimizedCompositeOpFactory::createOverOp32(cs);
106
template<class Traits>
61
107
struct AddGeneralOps<Traits, true>
63
109
typedef typename Traits::channels_type Arg;
72
118
static void add(KoColorSpace* cs) {
73
cs->addCompositeOp(new KoCompositeOpOver<Traits>(cs));
74
cs->addCompositeOp(new KoCompositeOpAlphaDarken<Traits>(cs));
119
cs->addCompositeOp(OptimizedOpsSelector<Traits>::createOverOp(cs));
120
cs->addCompositeOp(OptimizedOpsSelector<Traits>::createAlphaDarkenOp(cs));
75
121
cs->addCompositeOp(new KoCompositeOpCopy2<Traits>(cs));
76
122
cs->addCompositeOp(new KoCompositeOpErase<Traits>(cs));
77
123
cs->addCompositeOp(new KoCompositeOpBehind<Traits>(cs));