1 2 /* 3 * Copyright 2010 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8 9 10 #ifndef SkBitmapCache_DEFINED 11 #define SkBitmapCache_DEFINED 12 13 #include "SkBitmap.h" 14 15 class SkBitmapCache : SkNoncopyable { 16 public: 17 SkBitmapCache(int maxEntries); 18 ~SkBitmapCache(); 19 20 bool find(const void* buffer, size_t len, SkBitmap*) const; 21 void add(const void* buffer, size_t len, const SkBitmap&); 22 23 private: 24 int fEntryCount; 25 const int fMaxEntries; 26 27 struct Entry; 28 mutable Entry* fHead; 29 mutable Entry* fTail; 30 31 inline Entry* detach(Entry*) const; 32 inline void attachToHead(Entry*) const; 33 34 #ifdef SK_DEBUG 35 void validate() const; 36 #else validate()37 void validate() const {} 38 #endif 39 40 class AutoValidate : SkNoncopyable { 41 public: AutoValidate(const SkBitmapCache * bc)42 AutoValidate(const SkBitmapCache* bc) : fBC(bc) { bc->validate(); } ~AutoValidate()43 ~AutoValidate() { fBC->validate(); } 44 private: 45 const SkBitmapCache* fBC; 46 }; 47 }; 48 49 #endif 50