~ubuntu-branches/ubuntu/raring/calligra/raring-proposed

« back to all changes in this revision

Viewing changes to libs/pigment/compositeops/KoCompositeOps.h

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-01-15 17:26:10 UTC
  • mfrom: (1.1.17)
  • Revision ID: package-import@ubuntu.com-20130115172610-b193s9546hyssmym
Tags: 1:2.5.94-0ubuntu1
New upstream RC release

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
 
50
50
#include "compositeops/KoCompositeOpBehind.h"
51
51
 
 
52
#include "KoOptimizedCompositeOpFactory.h"
 
53
 
52
54
namespace _Private {
53
55
 
54
56
template<class Traits, bool flag>
58
60
};
59
61
 
60
62
template<class Traits>
 
63
struct OptimizedOpsSelector
 
64
{
 
65
    static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
 
66
        return new KoCompositeOpAlphaDarken<Traits>(cs);
 
67
    }
 
68
    static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
 
69
        return new KoCompositeOpOver<Traits>(cs);
 
70
    }
 
71
};
 
72
 
 
73
template<>
 
74
struct OptimizedOpsSelector<KoRgbU8Traits>
 
75
{
 
76
    static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
 
77
        return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
 
78
    }
 
79
    static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
 
80
        return KoOptimizedCompositeOpFactory::createOverOp32(cs);
 
81
    }
 
82
};
 
83
 
 
84
template<>
 
85
struct OptimizedOpsSelector<KoBgrU8Traits>
 
86
{
 
87
    static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
 
88
        return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
 
89
    }
 
90
    static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
 
91
        return KoOptimizedCompositeOpFactory::createOverOp32(cs);
 
92
    }
 
93
};
 
94
 
 
95
template<>
 
96
struct OptimizedOpsSelector<KoLabU8Traits>
 
97
{
 
98
    static KoCompositeOp* createAlphaDarkenOp(const KoColorSpace *cs) {
 
99
        return KoOptimizedCompositeOpFactory::createAlphaDarkenOp32(cs);
 
100
    }
 
101
    static KoCompositeOp* createOverOp(const KoColorSpace *cs) {
 
102
        return KoOptimizedCompositeOpFactory::createOverOp32(cs);
 
103
    }
 
104
};
 
105
 
 
106
template<class Traits>
61
107
struct AddGeneralOps<Traits, true>
62
108
{
63
109
     typedef typename Traits::channels_type Arg;
70
116
     }
71
117
 
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));