1 2/* 3 * Copyright 2011 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#ifndef SkImageRef_ashmem_DEFINED 9#define SkImageRef_ashmem_DEFINED 10 11#include "SkImageRef.h" 12 13struct SkAshmemRec { 14 int fFD; 15 void* fAddr; 16 size_t fSize; 17 bool fPinned; 18}; 19 20class SkImageRef_ashmem : public SkImageRef { 21public: 22 SkImageRef_ashmem(SkStream*, SkBitmap::Config, int sampleSize = 1); 23 virtual ~SkImageRef_ashmem(); 24 25 // overrides 26 virtual void flatten(SkFlattenableWriteBuffer&) const; 27 virtual Factory getFactory() const { 28 return Create; 29 } 30 static SkPixelRef* Create(SkFlattenableReadBuffer&); 31 32 SK_DECLARE_PIXEL_REF_REGISTRAR() 33protected: 34 virtual bool onDecode(SkImageDecoder* codec, SkStream* stream, 35 SkBitmap* bitmap, SkBitmap::Config config, 36 SkImageDecoder::Mode mode); 37 38 virtual void* onLockPixels(SkColorTable**); 39 virtual void onUnlockPixels(); 40 41private: 42 SkImageRef_ashmem(SkFlattenableReadBuffer&); 43 void closeFD(); 44 45 SkColorTable* fCT; 46 SkAshmemRec fRec; 47 48 typedef SkImageRef INHERITED; 49}; 50 51#endif 52