• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2008 The Android Open Source Project
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 
9 
10 #ifndef SkMallocPixelRef_DEFINED
11 #define SkMallocPixelRef_DEFINED
12 
13 #include "SkPixelRef.h"
14 
15 /** We explicitly use the same allocator for our pixels that SkMask does,
16     so that we can freely assign memory allocated by one class to the other.
17 */
18 class SkMallocPixelRef : public SkPixelRef {
19 public:
20     /** Allocate the specified buffer for pixels. The memory is freed when the
21         last owner of this pixelref is gone. If addr is NULL, sk_malloc_throw()
22         is called to allocate it.
23      */
24     SkMallocPixelRef(void* addr, size_t size, SkColorTable* ctable, bool ownPixels = true);
25     virtual ~SkMallocPixelRef();
26 
27     //! Return the allocation size for the pixels
getSize()28     size_t getSize() const { return fSize; }
getAddr()29     void* getAddr() const { return fStorage; }
30 
31     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkMallocPixelRef)
32 
33 protected:
34     // overrides from SkPixelRef
35     virtual void* onLockPixels(SkColorTable**);
36     virtual void onUnlockPixels();
37 
38     SkMallocPixelRef(SkFlattenableReadBuffer& buffer);
39     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
40 
41     void*           fStorage;
42 
43 private:
44     size_t          fSize;
45     SkColorTable*   fCTable;
46     bool            fOwnPixels;
47 
48     typedef SkPixelRef INHERITED;
49 };
50 
51 
52 #endif
53