blob: 38442f6ce8605b9e06ff10e3421e1cf0b83c9909 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
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 */
reed@android.com8a1c16f2008-12-17 15:59:43 +00008#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
djsollen@google.com57f49692011-02-23 20:46:31 +000025 // overrides
djsollen@google.com5370cd92012-03-28 20:47:01 +000026 virtual void flatten(SkFlattenableWriteBuffer&);
27 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem)
djsollen@google.com57f49692011-02-23 20:46:31 +000028
reed@android.com8a1c16f2008-12-17 15:59:43 +000029protected:
30 virtual bool onDecode(SkImageDecoder* codec, SkStream* stream,
31 SkBitmap* bitmap, SkBitmap::Config config,
32 SkImageDecoder::Mode mode);
33
34 virtual void* onLockPixels(SkColorTable**);
35 virtual void onUnlockPixels();
36
37private:
djsollen@google.com57f49692011-02-23 20:46:31 +000038 SkImageRef_ashmem(SkFlattenableReadBuffer&);
reed@android.com8a1c16f2008-12-17 15:59:43 +000039 void closeFD();
40
41 SkColorTable* fCT;
42 SkAshmemRec fRec;
43
44 typedef SkImageRef INHERITED;
45};
46
47#endif