#include "SkBitmap.h"
#include "SkPixelRef.h"
-namespace WebCore {
+namespace blink {
class MockDiscardablePixelRef : public SkPixelRef {
public:
- MockDiscardablePixelRef(const SkImageInfo& info)
+ MockDiscardablePixelRef(const SkImageInfo& info, size_t rowbytes)
: SkPixelRef(info)
+ , m_rowBytes(rowbytes)
, discarded(false)
{
setURI("discardable");
class Allocator : public SkBitmap::Allocator {
public:
virtual bool allocPixelRef(SkBitmap* dst, SkColorTable* ct) SK_OVERRIDE {
- SkImageInfo info;
- if (!dst->asImageInfo(&info)) {
+ const SkImageInfo& info = dst->info();
+ if (kUnknown_SkColorType == info.colorType())
return false;
- }
- SkAutoTUnref<SkPixelRef> pr(new MockDiscardablePixelRef(info));
+ SkAutoTUnref<SkPixelRef> pr(new MockDiscardablePixelRef(info, dst->rowBytes()));
dst->setPixelRef(pr);
return true;
}
};
- SK_DECLARE_UNFLATTENABLE_OBJECT()
-
protected:
- // SkPixelRef implementation.
-#ifdef SK_SUPPORT_LEGACY_ONLOCKPIXELS
- virtual void* onLockPixels(SkColorTable**)
- {
- if (discarded)
- return 0;
- m_lockedMemory = &discarded;
- return m_lockedMemory;
- }
-#endif
-
virtual bool onNewLockPixels(LockRec* rec)
{
if (discarded)
m_lockedMemory = &discarded;
rec->fPixels = m_lockedMemory;
rec->fColorTable = 0;
- rec->fRowBytes = 1;
+ rec->fRowBytes = m_rowBytes;
return true;
}
private:
void* m_lockedMemory;
+ size_t m_rowBytes;
bool discarded;
};
-} // namespace WebCore
+} // namespace blink
#endif // MockDiscardablePixelRef_h