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 52