~smartboyhw/ubuntu/raring/calligra/2.6.0-0ubuntu1

« back to all changes in this revision

Viewing changes to libs/pigment/KoColorConversionCache.cpp

  • Committer: Package Import Robot
  • Author(s): Philip Muškovac
  • Date: 2012-10-23 21:09:16 UTC
  • mfrom: (1.1.13)
  • Revision ID: package-import@ubuntu.com-20121023210916-m82w6zxnxhaxz7va
Tags: 1:2.5.90-0ubuntu1
* New upstream alpha release (LP: #1070436)
  - Add libkactivities-dev and libopenimageio-dev to build-depends
  - Add kubuntu_build_calligraactive.diff to build calligraactive by default
  - Add package for calligraauthor and move files that are shared between
    calligrawords and calligraauthor to calligrawords-common
* Document the patches
* Remove numbers from patches so they follow the same naming scheme as
  the rest of our patches.
* calligra-data breaks replaces krita-data (<< 1:2.5.3) (LP: #1071686)

Show diffs side-by-side

added added

removed removed

Lines of Context:
26
26
#include <KoColorSpace.h>
27
27
 
28
28
struct KoColorConversionCacheKey {
29
 
    KoColorConversionCacheKey(const KoColorSpace* _src, const KoColorSpace* _dst, KoColorConversionTransformation::Intent _renderingIntent) : src(_src), dst(_dst), renderingIntent(_renderingIntent) {
30
 
    }
 
29
 
 
30
    KoColorConversionCacheKey(const KoColorSpace* _src,
 
31
                              const KoColorSpace* _dst,
 
32
                              KoColorConversionTransformation::Intent _renderingIntent,
 
33
                              KoColorConversionTransformation::ConversionFlags _conversionFlags)
 
34
        : src(_src)
 
35
        , dst(_dst)
 
36
        , renderingIntent(_renderingIntent)
 
37
        , conversionFlags(_conversionFlags)
 
38
    {
 
39
    }
 
40
 
 
41
    bool operator==(const KoColorConversionCacheKey& rhs) const {
 
42
        return (*src == *(rhs.src)) && (*dst == *(rhs.dst))
 
43
                && (renderingIntent == rhs.renderingIntent)
 
44
                && (conversionFlags == rhs.conversionFlags);
 
45
    }
 
46
 
31
47
    const KoColorSpace* src;
32
48
    const KoColorSpace* dst;
33
49
    KoColorConversionTransformation::Intent renderingIntent;
34
 
    bool operator==(const KoColorConversionCacheKey& rhs) const {
35
 
        return (*src == *(rhs.src)) && (*dst == *(rhs.dst)) && (renderingIntent == rhs.renderingIntent);
36
 
    }
 
50
    KoColorConversionTransformation::ConversionFlags conversionFlags;
37
51
};
38
52
 
39
53
uint qHash(const KoColorConversionCacheKey& key)
40
54
{
41
 
    return qHash(key.src) + qHash(key.dst) + qHash(key.renderingIntent);
 
55
    return qHash(key.src) + qHash(key.dst) + qHash(key.renderingIntent) + qHash(key.conversionFlags);
42
56
}
43
57
 
44
58
struct KoColorConversionCache::CachedTransformation {
45
 
    CachedTransformation(KoColorConversionTransformation* _transfo) : transfo(_transfo), use(0) {}
 
59
 
 
60
    CachedTransformation(KoColorConversionTransformation* _transfo)
 
61
        : transfo(_transfo), use(0)
 
62
    {}
 
63
 
46
64
    ~CachedTransformation() {
47
65
        delete transfo;
48
66
    }
 
67
 
49
68
    bool available() {
50
69
        return use == 0;
51
70
    }
 
71
 
52
72
    KoColorConversionTransformation* transfo;
53
73
    int use;
54
74
};
71
91
    delete d;
72
92
}
73
93
 
74
 
KoCachedColorConversionTransformation KoColorConversionCache::cachedConverter(const KoColorSpace* src, const KoColorSpace* dst, KoColorConversionTransformation::Intent _renderingIntent)
 
94
KoCachedColorConversionTransformation KoColorConversionCache::cachedConverter(const KoColorSpace* src,
 
95
                                                                              const KoColorSpace* dst,
 
96
                                                                              KoColorConversionTransformation::Intent _renderingIntent,
 
97
                                                                              KoColorConversionTransformation::ConversionFlags _conversionFlags)
75
98
{
76
99
    QMutexLocker lock(&d->cacheMutex);
77
 
    KoColorConversionCacheKey key(src, dst, _renderingIntent);
 
100
    KoColorConversionCacheKey key(src, dst, _renderingIntent, _conversionFlags);
78
101
    QList< CachedTransformation* > cachedTransfos = d->cache.values(key);
79
102
    if (cachedTransfos.size() != 0) {
80
103
        foreach(CachedTransformation* ct, cachedTransfos) {
85
108
            }
86
109
        }
87
110
    }
88
 
    KoColorConversionTransformation* transfo = src->createColorConverter(dst, _renderingIntent);
 
111
    KoColorConversionTransformation* transfo = src->createColorConverter(dst, _renderingIntent, _conversionFlags);
89
112
    CachedTransformation* ct = new CachedTransformation(transfo);
90
113
    d->cache.insert(key, ct);
91
114
    return KoCachedColorConversionTransformation(this, ct);