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