Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / src / images / SkImageRef_ashmem.h
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(SkReadBuffer&);
29     virtual void flatten(SkWriteBuffer&) 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 bool onNewLockPixels(LockRec*) SK_OVERRIDE;
36     virtual void onUnlockPixels() SK_OVERRIDE;
37
38 private:
39     void closeFD();
40
41     SkColorTable* fCT;
42     SkAshmemRec fRec;
43
44     typedef SkImageRef INHERITED;
45 };
46
47 #endif