Line data Source code
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 0 : class SkPixelSerializer : public SkRefCnt {
20 : public:
21 0 : 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 0 : bool useEncodedData(const void* data, size_t len) {
28 0 : 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 0 : 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
|