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    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, SkStream* 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