Home | History | Annotate | Download | only in core
      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
     28     size_t getSize() const { return fSize; }
     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 private:
     42     void*           fStorage;
     43     size_t          fSize;
     44     SkColorTable*   fCTable;
     45     bool            fOwnPixels;
     46 
     47     typedef SkPixelRef INHERITED;
     48 };
     49 
     50 
     51 #endif
     52