Index: src/effects/gradients/SkBitmapCache.cpp |
diff --git a/src/effects/gradients/SkBitmapCache.cpp b/src/effects/gradients/SkBitmapCache.cpp |
deleted file mode 100644 |
index 95175e4fb60639d1d5a11e1f4ee831fc26bbad34..0000000000000000000000000000000000000000 |
--- 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 |