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