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 13 struct SkAshmemRec { 14 int fFD; 15 void* fAddr; 16 size_t fSize; 17 bool fPinned; 18 }; 19 20 class SkImageRef_ashmem : public SkImageRef { 21 public: 22 SkImageRef_ashmem(const SkImageInfo&, SkStreamRewindable*, int sampleSize = 1); 23 virtual ~SkImageRef_ashmem(); 24 25 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem) 26 27 protected: 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 38 private: 39 void closeFD(); 40 41 SkColorTable* fCT; 42 SkAshmemRec fRec; 43 44 typedef SkImageRef INHERITED; 45 }; 46 47 #endif 48