Index: src/core/SkScaledImageCache.cpp |
diff --git a/src/core/SkScaledImageCache.cpp b/src/core/SkScaledImageCache.cpp |
index 3e8929358c65bbdc2ccaee2da15fcce09fc6d238..9e672fe371da5790c7ae744da2c730c502254ece 100644 |
--- a/src/core/SkScaledImageCache.cpp |
+++ b/src/core/SkScaledImageCache.cpp |
@@ -260,32 +260,10 @@ SkScaledImageCache::~SkScaledImageCache() { |
//////////////////////////////////////////////////////////////////////////////// |
-struct GenWHKey : public SkScaledImageCache::Key { |
-public: |
- GenWHKey(uint32_t genID, SkScalar scaleX, SkScalar scaleY, const SkIRect& bounds) |
- : fGenID(genID) |
- , fScaleX(scaleX) |
- , fScaleY(scaleY) |
- , fBounds(bounds) { |
- this->init(7 * sizeof(uint32_t)); |
- } |
- |
- uint32_t fGenID; |
- SkScalar fScaleX; |
- SkScalar fScaleY; |
- SkIRect fBounds; |
-}; |
- |
-SkScaledImageCache::Rec* SkScaledImageCache::findAndLock(uint32_t genID, |
- SkScalar scaleX, |
- SkScalar scaleY, |
- const SkIRect& bounds) { |
- return this->findAndLock(GenWHKey(genID, scaleX, scaleY, bounds)); |
-} |
- |
/** |
This private method is the fully general record finder. All other |
- record finders should call this function or the one above. */ |
+ record finders should call this function or the one above. |
+ */ |
SkScaledImageCache::Rec* SkScaledImageCache::findAndLock(const SkScaledImageCache::Key& key) { |
#ifdef USE_HASH |
Rec* rec = fHash->find(key); |
@@ -299,56 +277,18 @@ SkScaledImageCache::Rec* SkScaledImageCache::findAndLock(const SkScaledImageCach |
return rec; |
} |
-/** |
- This function finds the bounds of the bitmap *within its pixelRef*. |
- If the bitmap lacks a pixelRef, it will return an empty rect, since |
- that doesn't make sense. This may be a useful enough function that |
- it should be somewhere else (in SkBitmap?). */ |
-static SkIRect get_bounds_from_bitmap(const SkBitmap& bm) { |
- if (!(bm.pixelRef())) { |
- return SkIRect::MakeEmpty(); |
- } |
- SkIPoint origin = bm.pixelRefOrigin(); |
- return SkIRect::MakeXYWH(origin.fX, origin.fY, bm.width(), bm.height()); |
-} |
- |
- |
-SkScaledImageCache::ID* SkScaledImageCache::findAndLock(uint32_t genID, |
- int32_t width, |
- int32_t height, |
- SkBitmap* bitmap) { |
- Rec* rec = this->findAndLock(genID, SK_Scalar1, SK_Scalar1, |
- SkIRect::MakeWH(width, height)); |
+SkScaledImageCache::ID* SkScaledImageCache::findAndLock(const Key& key, SkBitmap* result) { |
+ Rec* rec = this->findAndLock(key); |
if (rec) { |
SkASSERT(NULL == rec->fMip); |
SkASSERT(rec->fBitmap.pixelRef()); |
- *bitmap = rec->fBitmap; |
+ *result = rec->fBitmap; |
} |
return rec_to_id(rec); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::findAndLock(const SkBitmap& orig, |
- SkScalar scaleX, |
- SkScalar scaleY, |
- SkBitmap* scaled) { |
- if (0 == scaleX || 0 == scaleY) { |
- // degenerate, and the key we use for mipmaps |
- return NULL; |
- } |
- Rec* rec = this->findAndLock(orig.getGenerationID(), scaleX, |
- scaleY, get_bounds_from_bitmap(orig)); |
- if (rec) { |
- SkASSERT(NULL == rec->fMip); |
- SkASSERT(rec->fBitmap.pixelRef()); |
- *scaled = rec->fBitmap; |
- } |
- return rec_to_id(rec); |
-} |
- |
-SkScaledImageCache::ID* SkScaledImageCache::findAndLockMip(const SkBitmap& orig, |
- SkMipMap const ** mip) { |
- Rec* rec = this->findAndLock(orig.getGenerationID(), 0, 0, |
- get_bounds_from_bitmap(orig)); |
+SkScaledImageCache::ID* SkScaledImageCache::findAndLock(const Key& key, const SkMipMap** mip) { |
+ Rec* rec = this->findAndLock(key); |
if (rec) { |
SkASSERT(rec->fMip); |
SkASSERT(NULL == rec->fBitmap.pixelRef()); |
@@ -385,39 +325,12 @@ SkScaledImageCache::ID* SkScaledImageCache::addAndLock(SkScaledImageCache::Rec* |
return rec_to_id(rec); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::addAndLock(uint32_t genID, |
- int32_t width, |
- int32_t height, |
- const SkBitmap& bitmap) { |
- GenWHKey key(genID, SK_Scalar1, SK_Scalar1, SkIRect::MakeWH(width, height)); |
- Rec* rec = SkNEW_ARGS(Rec, (key, bitmap)); |
- return this->addAndLock(rec); |
-} |
- |
-SkScaledImageCache::ID* SkScaledImageCache::addAndLock(const SkBitmap& orig, |
- SkScalar scaleX, |
- SkScalar scaleY, |
- const SkBitmap& scaled) { |
- if (0 == scaleX || 0 == scaleY) { |
- // degenerate, and the key we use for mipmaps |
- return NULL; |
- } |
- SkIRect bounds = get_bounds_from_bitmap(orig); |
- if (bounds.isEmpty()) { |
- return NULL; |
- } |
- GenWHKey key(orig.getGenerationID(), scaleX, scaleY, bounds); |
+SkScaledImageCache::ID* SkScaledImageCache::addAndLock(const Key& key, const SkBitmap& scaled) { |
Rec* rec = SkNEW_ARGS(Rec, (key, scaled)); |
return this->addAndLock(rec); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::addAndLockMip(const SkBitmap& orig, |
- const SkMipMap* mip) { |
- SkIRect bounds = get_bounds_from_bitmap(orig); |
- if (bounds.isEmpty()) { |
- return NULL; |
- } |
- GenWHKey key(orig.getGenerationID(), 0, 0, bounds); |
+SkScaledImageCache::ID* SkScaledImageCache::addAndLock(const Key& key, const SkMipMap* mip) { |
Rec* rec = SkNEW_ARGS(Rec, (key, mip)); |
return this->addAndLock(rec); |
} |
@@ -663,52 +576,24 @@ static SkScaledImageCache* get_cache() { |
return gScaledImageCache; |
} |
- |
-SkScaledImageCache::ID* SkScaledImageCache::FindAndLock( |
- uint32_t pixelGenerationID, |
- int32_t width, |
- int32_t height, |
- SkBitmap* scaled) { |
- SkAutoMutexAcquire am(gMutex); |
- return get_cache()->findAndLock(pixelGenerationID, width, height, scaled); |
-} |
- |
-SkScaledImageCache::ID* SkScaledImageCache::AddAndLock( |
- uint32_t pixelGenerationID, |
- int32_t width, |
- int32_t height, |
- const SkBitmap& scaled) { |
- SkAutoMutexAcquire am(gMutex); |
- return get_cache()->addAndLock(pixelGenerationID, width, height, scaled); |
-} |
- |
- |
-SkScaledImageCache::ID* SkScaledImageCache::FindAndLock(const SkBitmap& orig, |
- SkScalar scaleX, |
- SkScalar scaleY, |
- SkBitmap* scaled) { |
+SkScaledImageCache::ID* SkScaledImageCache::FindAndLock(const Key& key, SkBitmap* result) { |
SkAutoMutexAcquire am(gMutex); |
- return get_cache()->findAndLock(orig, scaleX, scaleY, scaled); |
+ return get_cache()->findAndLock(key, result); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::FindAndLockMip(const SkBitmap& orig, |
- SkMipMap const ** mip) { |
+SkScaledImageCache::ID* SkScaledImageCache::FindAndLock(const Key& key, SkMipMap const ** mip) { |
SkAutoMutexAcquire am(gMutex); |
- return get_cache()->findAndLockMip(orig, mip); |
+ return get_cache()->findAndLock(key, mip); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::AddAndLock(const SkBitmap& orig, |
- SkScalar scaleX, |
- SkScalar scaleY, |
- const SkBitmap& scaled) { |
+SkScaledImageCache::ID* SkScaledImageCache::AddAndLock(const Key& key, const SkBitmap& scaled) { |
SkAutoMutexAcquire am(gMutex); |
- return get_cache()->addAndLock(orig, scaleX, scaleY, scaled); |
+ return get_cache()->addAndLock(key, scaled); |
} |
-SkScaledImageCache::ID* SkScaledImageCache::AddAndLockMip(const SkBitmap& orig, |
- const SkMipMap* mip) { |
+SkScaledImageCache::ID* SkScaledImageCache::AddAndLock(const Key& key, const SkMipMap* mip) { |
SkAutoMutexAcquire am(gMutex); |
- return get_cache()->addAndLockMip(orig, mip); |
+ return get_cache()->addAndLock(key, mip); |
} |
void SkScaledImageCache::Unlock(SkScaledImageCache::ID* id) { |