| Index: src/core/SkBitmapCache.cpp
|
| diff --git a/src/core/SkBitmapCache.cpp b/src/core/SkBitmapCache.cpp
|
| index de52b63b5e7eda5209f21d87e99eb8a42b66877a..a5bc8646c4ffbca1d2ebfbac38ac6420ff5b019f 100644
|
| --- a/src/core/SkBitmapCache.cpp
|
| +++ b/src/core/SkBitmapCache.cpp
|
| @@ -39,6 +39,34 @@ public:
|
| SkIRect fBounds;
|
| };
|
|
|
| +struct RRectBlurKey : public SkScaledImageCache::Key {
|
| +public:
|
| + RRectBlurKey(SkScalar sigma, const SkRRect rrect)
|
| + : fSigma(sigma)
|
| + , fRRect(rrect) {
|
| + this->init(sizeof(fSigma) + sizeof(fRRect));
|
| + }
|
| +
|
| + SkScalar fSigma;
|
| + SkRRect fRRect;
|
| +};
|
| +
|
| +struct RectsBlurKey : public SkScaledImageCache::Key {
|
| +public:
|
| + RectsBlurKey(SkScalar sigma, int32_t count, const SkRect rects[])
|
| + : fSigma(sigma)
|
| + , fRecCount(count) {
|
| + for (int i = 0; i < count; i++) {
|
| + fRects[i] = rects[i];
|
| + }
|
| + this->init(sizeof(fSigma) + sizeof(fRecCount) + sizeof(SkRect) * fRecCount);
|
| + }
|
| +
|
| + SkScalar fSigma;
|
| + int32_t fRecCount;
|
| + SkRect fRects[2];
|
| +};
|
| +
|
| //////////////////////////////////////////////////////////////////////////////////////////
|
|
|
| SkScaledImageCache::ID* SkBitmapCache::FindAndLock(const SkBitmap& src,
|
| @@ -89,3 +117,37 @@ SkScaledImageCache::ID* SkMipMapCache::AddAndLock(const SkBitmap& src, const SkM
|
| return SkScaledImageCache::AddAndLock(key, result);
|
| }
|
|
|
| +////
|
| +
|
| +SkScaledImageCache::ID* SkBitmapCache::FindAndLock(SkScalar sigma,
|
| + const SkRRect rrect,
|
| + SkBitmap* result) {
|
| + RRectBlurKey key(sigma, rrect);
|
| + return SkScaledImageCache::FindAndLock(key, result);
|
| +}
|
| +
|
| +SkScaledImageCache::ID* SkBitmapCache::AddAndLock(SkScalar sigma,
|
| + const SkRRect rrect,
|
| + const SkBitmap& bitmap) {
|
| + RRectBlurKey key(sigma, rrect);
|
| + return SkScaledImageCache::AddAndLock(key, bitmap);
|
| +}
|
| +
|
| +////
|
| +
|
| +SkScaledImageCache::ID* SkBitmapCache::FindAndLock(SkScalar sigma,
|
| + unsigned count,
|
| + const SkRect rects[],
|
| + SkBitmap* result) {
|
| + RectsBlurKey key(sigma, count, rects);
|
| + return SkScaledImageCache::FindAndLock(key, result);
|
| +}
|
| +
|
| +SkScaledImageCache::ID* SkBitmapCache::AddAndLock(SkScalar sigma,
|
| + unsigned count,
|
| + const SkRect rects[],
|
| + const SkBitmap& bitmap) {
|
| + RectsBlurKey key(sigma, count, rects);
|
| + return SkScaledImageCache::AddAndLock(key, bitmap);
|
| +}
|
| +
|
|
|