Home | History | Annotate | Download | only in core
      1 /*
      2  * Copyright 2014 Google Inc.
      3  *
      4  * Use of this source code is governed by a BSD-style license that can be
      5  * found in the LICENSE file.
      6  */
      7 
      8 #ifndef SkPixelSerializer_DEFINED
      9 #define SkPixelSerializer_DEFINED
     10 
     11 #include "SkRefCnt.h"
     12 #include "SkPixmap.h"
     13 
     14 class SkData;
     15 
     16 /**
     17  *  Interface for serializing pixels, e.g. SkBitmaps in an SkPicture.
     18  */
     19 class SkPixelSerializer : public SkRefCnt {
     20 public:
     21     virtual ~SkPixelSerializer() {}
     22 
     23     /**
     24      *  Call to determine if the client wants to serialize the encoded data. If
     25      *  false, serialize another version (e.g. the result of encodePixels).
     26      */
     27     bool useEncodedData(const void* data, size_t len) {
     28         return this->onUseEncodedData(data, len);
     29     }
     30 
     31     /**
     32      *  Call to get the client's version of encoding these pixels. If it
     33      *  returns NULL, serialize the raw pixels.
     34      */
     35     SkData* encode(const SkPixmap& pixmap) { return this->onEncode(pixmap); }
     36 
     37 protected:
     38     /**
     39      *  Return true if you want to serialize the encoded data, false if you want
     40      *  another version serialized (e.g. the result of this->encode()).
     41      */
     42     virtual bool onUseEncodedData(const void* data, size_t len) = 0;
     43 
     44     /**
     45      *  If you want to encode these pixels, return the encoded data as an SkData
     46      *  Return null if you want to serialize the raw pixels.
     47      */
     48     virtual SkData* onEncode(const SkPixmap&) = 0;
     49 };
     50 #endif // SkPixelSerializer_DEFINED
     51