blob: f98507aabcf73799a241e7420fdc95f534ecc612 [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();
rmistry@google.comd6176b02012-08-23 18:14:13 +000024
djsollen@google.com5370cd92012-03-28 20:47:01 +000025 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkImageRef_ashmem)
djsollen@google.com57f49692011-02-23 20:46:31 +000026
reed@android.com8a1c16f2008-12-17 15:59:43 +000027protected:
djsollen@google.com54924242012-03-29 15:18:04 +000028 SkImageRef_ashmem(SkFlattenableReadBuffer&);
29 virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
30
reed@android.com8a1c16f2008-12-17 15:59:43 +000031 virtual bool onDecode(SkImageDecoder* codec, SkStream* stream,
32 SkBitmap* bitmap, SkBitmap::Config config,
33 SkImageDecoder::Mode mode);
rmistry@google.comd6176b02012-08-23 18:14:13 +000034
reed@android.com8a1c16f2008-12-17 15:59:43 +000035 virtual void* onLockPixels(SkColorTable**);
36 virtual void onUnlockPixels();
rmistry@google.comd6176b02012-08-23 18:14:13 +000037
reed@android.com8a1c16f2008-12-17 15:59:43 +000038private:
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