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(const SkImageInfo&, SkStreamRewindable*, int sampleSize = 1); 23 virtual ~SkImageRef_ashmem(); 24 25 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem) 26 27protected: 28 SkImageRef_ashmem(SkFlattenableReadBuffer&); 29 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE; 30 31 virtual bool onDecode(SkImageDecoder* codec, SkStreamRewindable* stream, 32 SkBitmap* bitmap, SkBitmap::Config config, 33 SkImageDecoder::Mode mode); 34 35 virtual void* onLockPixels(SkColorTable**); 36 virtual void onUnlockPixels(); 37 38private: 39 void closeFD(); 40 41 SkColorTable* fCT; 42 SkAshmemRec fRec; 43 44 typedef SkImageRef INHERITED; 45}; 46 47#endif 48