16ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com/* 26ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com * Copyright 2013 Google Inc. 36ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com * 46ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com * Use of this source code is governed by a BSD-style license that can be 56ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com * found in the LICENSE file. 66ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com */ 76ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 86ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com#ifndef SkDiscardablePixelRef_DEFINED 96ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com#define SkDiscardablePixelRef_DEFINED 106ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 119ab9c97883d0a0b7084cbb91eaf1ba6fb4c46affhalcanary@google.com#include "SkDiscardableMemory.h" 126ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com#include "SkImageGenerator.h" 136ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com#include "SkImageInfo.h" 146168ea7d412448c88169a565f40bf86379d4bf9ahalcanary@google.com#include "SkPixelRef.h" 159ab9c97883d0a0b7084cbb91eaf1ba6fb4c46affhalcanary@google.com 166ac702e890656e801469060c1b9474912a5b704ahalcanary@google.comclass SkDiscardablePixelRef : public SkPixelRef { 176ac702e890656e801469060c1b9474912a5b704ahalcanary@google.compublic: 186ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com SK_DECLARE_UNFLATTENABLE_OBJECT() 196ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 206ac702e890656e801469060c1b9474912a5b704ahalcanary@google.comprotected: 216ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com ~SkDiscardablePixelRef(); 22e406b3ba8294010dfdb8d71eb773f697ffc3cc4arobertphillips@google.com virtual void* onLockPixels(SkColorTable**) SK_OVERRIDE; 236ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com virtual void onUnlockPixels() SK_OVERRIDE; 246ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com virtual bool onLockPixelsAreWritable() const SK_OVERRIDE { return false; } 256ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 266ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com virtual SkData* onRefEncodedData() SK_OVERRIDE { 276ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com return fGenerator->refEncodedData(); 286ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com } 296ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 306ac702e890656e801469060c1b9474912a5b704ahalcanary@google.comprivate: 316ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com SkImageGenerator* const fGenerator; 329ab9c97883d0a0b7084cbb91eaf1ba6fb4c46affhalcanary@google.com SkDiscardableMemory::Factory* const fDMFactory; 336ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com const size_t fRowBytes; 346ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com // These const members should not change over the life of the 356ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com // PixelRef, since the SkBitmap doesn't expect them to change. 366ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 376ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com SkDiscardableMemory* fDiscardableMemory; 386ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com 396ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com /* Takes ownership of SkImageGenerator. */ 40c2062d0e1bd6b258229669463ab5ce7020780c8areed@google.com SkDiscardablePixelRef(const SkImageInfo&, SkImageGenerator*, 419ab9c97883d0a0b7084cbb91eaf1ba6fb4c46affhalcanary@google.com size_t rowBytes, 429ab9c97883d0a0b7084cbb91eaf1ba6fb4c46affhalcanary@google.com SkDiscardableMemory::Factory* factory); 436168ea7d412448c88169a565f40bf86379d4bf9ahalcanary@google.com friend bool SkInstallDiscardablePixelRef(SkImageGenerator*, 446168ea7d412448c88169a565f40bf86379d4bf9ahalcanary@google.com SkBitmap*, 456168ea7d412448c88169a565f40bf86379d4bf9ahalcanary@google.com SkDiscardableMemory::Factory*); 466168ea7d412448c88169a565f40bf86379d4bf9ahalcanary@google.com typedef SkPixelRef INHERITED; 476ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com}; 486ac702e890656e801469060c1b9474912a5b704ahalcanary@google.com#endif // SkDiscardablePixelRef_DEFINED 49