Home | History | Annotate | Download | only in images
      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