/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkPipe_DEFINED #define SkPipe_DEFINED #include "SkData.h" #include "SkImage.h" #include "SkPicture.h" #include "SkSerialProcs.h" class SkCanvas; class SkTypeface; class SkWStream; struct SkRect; class SkPipeSerializer { public: SkPipeSerializer(); ~SkPipeSerializer(); void setSerialProcs(const SkSerialProcs&); void resetCache(); sk_sp writeImage(SkImage*); sk_sp writePicture(SkPicture*); void writeImage(SkImage*, SkWStream*); void writePicture(SkPicture*, SkWStream*); SkCanvas* beginWrite(const SkRect& cullBounds, SkWStream*); void endWrite(); private: class Impl; std::unique_ptr fImpl; }; class SkPipeDeserializer { public: SkPipeDeserializer(); ~SkPipeDeserializer(); void setDeserialProcs(const SkDeserialProcs&); sk_sp readImage(const SkData* data) { if (!data) { return nullptr; } return this->readImage(data->data(), data->size()); } sk_sp readPicture(const SkData* data) { if (!data) { return nullptr; } return this->readPicture(data->data(), data->size()); } sk_sp readImage(const void*, size_t); sk_sp readPicture(const void*, size_t); bool playback(const void*, size_t, SkCanvas*); private: class Impl; std::unique_ptr fImpl; }; #endif