From a6cac4ce3896669e1b5935def0a84b4456ec9777 Mon Sep 17 00:00:00 2001 From: reed Date: Thu, 21 Aug 2014 10:50:25 -0700 Subject: rename gradients private BitmapCache to GradientBitmapCache R=caryclark@google.com NOTREECHECKS=True Author: reed@google.com Review URL: https://codereview.chromium.org/474983005 --- src/effects/gradients/SkBitmapCache.cpp | 153 ------------------------ src/effects/gradients/SkBitmapCache.h | 49 -------- src/effects/gradients/SkGradientBitmapCache.cpp | 153 ++++++++++++++++++++++++ src/effects/gradients/SkGradientBitmapCache.h | 49 ++++++++ src/effects/gradients/SkGradientShader.cpp | 4 +- src/effects/gradients/SkGradientShaderPriv.h | 2 +- 6 files changed, 205 insertions(+), 205 deletions(-) delete mode 100644 src/effects/gradients/SkBitmapCache.cpp delete mode 100644 src/effects/gradients/SkBitmapCache.h create mode 100644 src/effects/gradients/SkGradientBitmapCache.cpp create mode 100644 src/effects/gradients/SkGradientBitmapCache.h (limited to 'src/effects/gradients') diff --git a/src/effects/gradients/SkBitmapCache.cpp b/src/effects/gradients/SkBitmapCache.cpp deleted file mode 100644 index 95175e4fb6..0000000000 --- a/src/effects/gradients/SkBitmapCache.cpp +++ /dev/null @@ -1,153 +0,0 @@ - -/* - * Copyright 2010 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - - -#include "SkBitmapCache.h" - -struct SkBitmapCache::Entry { - Entry* fPrev; - Entry* fNext; - - void* fBuffer; - size_t fSize; - SkBitmap fBitmap; - - Entry(const void* buffer, size_t size, const SkBitmap& bm) - : fPrev(NULL), - fNext(NULL), - fBitmap(bm) { - fBuffer = sk_malloc_throw(size); - fSize = size; - memcpy(fBuffer, buffer, size); - } - - ~Entry() { sk_free(fBuffer); } - - bool equals(const void* buffer, size_t size) const { - return (fSize == size) && !memcmp(fBuffer, buffer, size); - } -}; - -SkBitmapCache::SkBitmapCache(int max) : fMaxEntries(max) { - fEntryCount = 0; - fHead = fTail = NULL; - - this->validate(); -} - -SkBitmapCache::~SkBitmapCache() { - this->validate(); - - Entry* entry = fHead; - while (entry) { - Entry* next = entry->fNext; - delete entry; - entry = next; - } -} - -SkBitmapCache::Entry* SkBitmapCache::detach(Entry* entry) const { - if (entry->fPrev) { - SkASSERT(fHead != entry); - entry->fPrev->fNext = entry->fNext; - } else { - SkASSERT(fHead == entry); - fHead = entry->fNext; - } - if (entry->fNext) { - SkASSERT(fTail != entry); - entry->fNext->fPrev = entry->fPrev; - } else { - SkASSERT(fTail == entry); - fTail = entry->fPrev; - } - return entry; -} - -void SkBitmapCache::attachToHead(Entry* entry) const { - entry->fPrev = NULL; - entry->fNext = fHead; - if (fHead) { - fHead->fPrev = entry; - } else { - fTail = entry; - } - fHead = entry; -} - -bool SkBitmapCache::find(const void* buffer, size_t size, SkBitmap* bm) const { - AutoValidate av(this); - - Entry* entry = fHead; - while (entry) { - if (entry->equals(buffer, size)) { - if (bm) { - *bm = entry->fBitmap; - } - // move to the head of our list, so we purge it last - this->detach(entry); - this->attachToHead(entry); - return true; - } - entry = entry->fNext; - } - return false; -} - -void SkBitmapCache::add(const void* buffer, size_t len, const SkBitmap& bm) { - AutoValidate av(this); - - if (fEntryCount == fMaxEntries) { - SkASSERT(fTail); - delete this->detach(fTail); - fEntryCount -= 1; - } - - Entry* entry = SkNEW_ARGS(Entry, (buffer, len, bm)); - this->attachToHead(entry); - fEntryCount += 1; -} - -/////////////////////////////////////////////////////////////////////////////// - -#ifdef SK_DEBUG - -void SkBitmapCache::validate() const { - SkASSERT(fEntryCount >= 0 && fEntryCount <= fMaxEntries); - - if (fEntryCount > 0) { - SkASSERT(NULL == fHead->fPrev); - SkASSERT(NULL == fTail->fNext); - - if (fEntryCount == 1) { - SkASSERT(fHead == fTail); - } else { - SkASSERT(fHead != fTail); - } - - Entry* entry = fHead; - int count = 0; - while (entry) { - count += 1; - entry = entry->fNext; - } - SkASSERT(count == fEntryCount); - - entry = fTail; - while (entry) { - count -= 1; - entry = entry->fPrev; - } - SkASSERT(0 == count); - } else { - SkASSERT(NULL == fHead); - SkASSERT(NULL == fTail); - } -} - -#endif diff --git a/src/effects/gradients/SkBitmapCache.h b/src/effects/gradients/SkBitmapCache.h deleted file mode 100644 index d2af5e136f..0000000000 --- a/src/effects/gradients/SkBitmapCache.h +++ /dev/null @@ -1,49 +0,0 @@ - -/* - * Copyright 2010 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - - -#ifndef SkBitmapCache_DEFINED -#define SkBitmapCache_DEFINED - -#include "SkBitmap.h" - -class SkBitmapCache : SkNoncopyable { -public: - SkBitmapCache(int maxEntries); - ~SkBitmapCache(); - - bool find(const void* buffer, size_t len, SkBitmap*) const; - void add(const void* buffer, size_t len, const SkBitmap&); - -private: - int fEntryCount; - const int fMaxEntries; - - struct Entry; - mutable Entry* fHead; - mutable Entry* fTail; - - inline Entry* detach(Entry*) const; - inline void attachToHead(Entry*) const; - -#ifdef SK_DEBUG - void validate() const; -#else - void validate() const {} -#endif - - class AutoValidate : SkNoncopyable { - public: - AutoValidate(const SkBitmapCache* bc) : fBC(bc) { bc->validate(); } - ~AutoValidate() { fBC->validate(); } - private: - const SkBitmapCache* fBC; - }; -}; - -#endif diff --git a/src/effects/gradients/SkGradientBitmapCache.cpp b/src/effects/gradients/SkGradientBitmapCache.cpp new file mode 100644 index 0000000000..63d708bad0 --- /dev/null +++ b/src/effects/gradients/SkGradientBitmapCache.cpp @@ -0,0 +1,153 @@ + +/* + * Copyright 2010 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#include "SkGradientBitmapCache.h" + +struct SkGradientBitmapCache::Entry { + Entry* fPrev; + Entry* fNext; + + void* fBuffer; + size_t fSize; + SkBitmap fBitmap; + + Entry(const void* buffer, size_t size, const SkBitmap& bm) + : fPrev(NULL), + fNext(NULL), + fBitmap(bm) { + fBuffer = sk_malloc_throw(size); + fSize = size; + memcpy(fBuffer, buffer, size); + } + + ~Entry() { sk_free(fBuffer); } + + bool equals(const void* buffer, size_t size) const { + return (fSize == size) && !memcmp(fBuffer, buffer, size); + } +}; + +SkGradientBitmapCache::SkGradientBitmapCache(int max) : fMaxEntries(max) { + fEntryCount = 0; + fHead = fTail = NULL; + + this->validate(); +} + +SkGradientBitmapCache::~SkGradientBitmapCache() { + this->validate(); + + Entry* entry = fHead; + while (entry) { + Entry* next = entry->fNext; + delete entry; + entry = next; + } +} + +SkGradientBitmapCache::Entry* SkGradientBitmapCache::detach(Entry* entry) const { + if (entry->fPrev) { + SkASSERT(fHead != entry); + entry->fPrev->fNext = entry->fNext; + } else { + SkASSERT(fHead == entry); + fHead = entry->fNext; + } + if (entry->fNext) { + SkASSERT(fTail != entry); + entry->fNext->fPrev = entry->fPrev; + } else { + SkASSERT(fTail == entry); + fTail = entry->fPrev; + } + return entry; +} + +void SkGradientBitmapCache::attachToHead(Entry* entry) const { + entry->fPrev = NULL; + entry->fNext = fHead; + if (fHead) { + fHead->fPrev = entry; + } else { + fTail = entry; + } + fHead = entry; +} + +bool SkGradientBitmapCache::find(const void* buffer, size_t size, SkBitmap* bm) const { + AutoValidate av(this); + + Entry* entry = fHead; + while (entry) { + if (entry->equals(buffer, size)) { + if (bm) { + *bm = entry->fBitmap; + } + // move to the head of our list, so we purge it last + this->detach(entry); + this->attachToHead(entry); + return true; + } + entry = entry->fNext; + } + return false; +} + +void SkGradientBitmapCache::add(const void* buffer, size_t len, const SkBitmap& bm) { + AutoValidate av(this); + + if (fEntryCount == fMaxEntries) { + SkASSERT(fTail); + delete this->detach(fTail); + fEntryCount -= 1; + } + + Entry* entry = SkNEW_ARGS(Entry, (buffer, len, bm)); + this->attachToHead(entry); + fEntryCount += 1; +} + +/////////////////////////////////////////////////////////////////////////////// + +#ifdef SK_DEBUG + +void SkGradientBitmapCache::validate() const { + SkASSERT(fEntryCount >= 0 && fEntryCount <= fMaxEntries); + + if (fEntryCount > 0) { + SkASSERT(NULL == fHead->fPrev); + SkASSERT(NULL == fTail->fNext); + + if (fEntryCount == 1) { + SkASSERT(fHead == fTail); + } else { + SkASSERT(fHead != fTail); + } + + Entry* entry = fHead; + int count = 0; + while (entry) { + count += 1; + entry = entry->fNext; + } + SkASSERT(count == fEntryCount); + + entry = fTail; + while (entry) { + count -= 1; + entry = entry->fPrev; + } + SkASSERT(0 == count); + } else { + SkASSERT(NULL == fHead); + SkASSERT(NULL == fTail); + } +} + +#endif diff --git a/src/effects/gradients/SkGradientBitmapCache.h b/src/effects/gradients/SkGradientBitmapCache.h new file mode 100644 index 0000000000..009b9561a7 --- /dev/null +++ b/src/effects/gradients/SkGradientBitmapCache.h @@ -0,0 +1,49 @@ + +/* + * Copyright 2010 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + + +#ifndef SkGradientBitmapCache_DEFINED +#define SkGradientBitmapCache_DEFINED + +#include "SkBitmap.h" + +class SkGradientBitmapCache : SkNoncopyable { +public: + SkGradientBitmapCache(int maxEntries); + ~SkGradientBitmapCache(); + + bool find(const void* buffer, size_t len, SkBitmap*) const; + void add(const void* buffer, size_t len, const SkBitmap&); + +private: + int fEntryCount; + const int fMaxEntries; + + struct Entry; + mutable Entry* fHead; + mutable Entry* fTail; + + inline Entry* detach(Entry*) const; + inline void attachToHead(Entry*) const; + +#ifdef SK_DEBUG + void validate() const; +#else + void validate() const {} +#endif + + class AutoValidate : SkNoncopyable { + public: + AutoValidate(const SkGradientBitmapCache* bc) : fBC(bc) { bc->validate(); } + ~AutoValidate() { fBC->validate(); } + private: + const SkGradientBitmapCache* fBC; + }; +}; + +#endif diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp index 7cc906336a..502d73383a 100644 --- a/src/effects/gradients/SkGradientShader.cpp +++ b/src/effects/gradients/SkGradientShader.cpp @@ -674,13 +674,13 @@ void SkGradientShaderBase::getGradientTableBitmap(SkBitmap* bitmap) const { /////////////////////////////////// - static SkBitmapCache* gCache; + static SkGradientBitmapCache* gCache; // each cache cost 1K of RAM, since each bitmap will be 1x256 at 32bpp static const int MAX_NUM_CACHED_GRADIENT_BITMAPS = 32; SkAutoMutexAcquire ama(gGradientCacheMutex); if (NULL == gCache) { - gCache = SkNEW_ARGS(SkBitmapCache, (MAX_NUM_CACHED_GRADIENT_BITMAPS)); + gCache = SkNEW_ARGS(SkGradientBitmapCache, (MAX_NUM_CACHED_GRADIENT_BITMAPS)); } size_t size = count * sizeof(int32_t); diff --git a/src/effects/gradients/SkGradientShaderPriv.h b/src/effects/gradients/SkGradientShaderPriv.h index cf6c671d2a..7c9d9c319b 100644 --- a/src/effects/gradients/SkGradientShaderPriv.h +++ b/src/effects/gradients/SkGradientShaderPriv.h @@ -8,6 +8,7 @@ #ifndef SkGradientShaderPriv_DEFINED #define SkGradientShaderPriv_DEFINED +#include "SkGradientBitmapCache.h" #include "SkGradientShader.h" #include "SkClampRange.h" #include "SkColorPriv.h" @@ -16,7 +17,6 @@ #include "SkMallocPixelRef.h" #include "SkUtils.h" #include "SkTemplates.h" -#include "SkBitmapCache.h" #include "SkShader.h" #include "SkOnce.h" -- cgit v1.2.3