Update rive-cpp to 2.0 version
[platform/core/uifw/rive-tizen.git] / submodule / skia / src / utils / SkMultiPictureDocument.h
1 /*
2  * Copyright 2016 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 SkMultiPictureDocument_DEFINED
9 #define SkMultiPictureDocument_DEFINED
10
11 #include "include/core/SkPicture.h"
12 #include "include/core/SkRefCnt.h"
13 #include "include/core/SkSize.h"
14 #include "include/core/SkTypes.h"
15
16 #include <functional>
17
18 class SkDocument;
19 class SkStreamSeekable;
20 class SkWStream;
21 struct SkDeserialProcs;
22 struct SkSerialProcs;
23
24 /**
25  *  Writes into a file format that is similar to SkPicture::serialize()
26  *  Accepts a callback for endPage behavior
27  */
28 SK_SPI sk_sp<SkDocument> SkMakeMultiPictureDocument(SkWStream* dst, const SkSerialProcs* = nullptr,
29   std::function<void(const SkPicture*)> onEndPage = nullptr);
30
31 struct SkDocumentPage {
32     sk_sp<SkPicture> fPicture;
33     SkSize fSize;
34 };
35
36 /**
37  *  Returns the number of pages in the SkMultiPictureDocument.
38  */
39 SK_SPI int SkMultiPictureDocumentReadPageCount(SkStreamSeekable* src);
40
41 /**
42  *  Read the SkMultiPictureDocument into the provided array of pages.
43  *  dstArrayCount must equal SkMultiPictureDocumentReadPageCount().
44  *  Return false on error.
45  */
46 SK_SPI bool SkMultiPictureDocumentRead(SkStreamSeekable* src,
47                                        SkDocumentPage* dstArray,
48                                        int dstArrayCount,
49                                        const SkDeserialProcs* = nullptr);
50
51 #endif  // SkMultiPictureDocument_DEFINED