diff options
author | reed <reed@google.com> | 2016-09-13 08:09:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-13 08:09:45 -0700 |
commit | 54dc4878b02765efea39e68b218df1e4bfff4b88 (patch) | |
tree | 296347d73c08b8b1d0a0b244ca062434ac48caa1 /src/core/SkPipe.h | |
parent | 5f1d0f61ea182829826d9d76cb85346d3e23305d (diff) |
add pipecanvas
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2201323003
Review-Url: https://codereview.chromium.org/2201323003
Diffstat (limited to 'src/core/SkPipe.h')
-rw-r--r-- | src/core/SkPipe.h | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/src/core/SkPipe.h b/src/core/SkPipe.h new file mode 100644 index 0000000000..d3d5a362e7 --- /dev/null +++ b/src/core/SkPipe.h @@ -0,0 +1,74 @@ +/* + * 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 "SkTypes.h" + +class SkCanvas; +class SkImage; +class SkPicture; +class SkTypefaceSerializer; +class SkTypefaceDeserializer; +class SkWStream; + +class SkPipeSerializer { +public: + SkPipeSerializer(); + ~SkPipeSerializer(); + + // Ownership is not transferred, so caller must ceep the serializer alive + void setTypefaceSerializer(SkTypefaceSerializer*); + + void resetCache(); + + void write(SkPicture*, SkWStream*); + void write(SkImage*, SkWStream*); + + SkCanvas* beginWrite(const SkRect& cullBounds, SkWStream*); + void endWrite(); + +private: + class Impl; + std::unique_ptr<Impl> fImpl; +}; + +class SkPipeDeserializer { +public: + SkPipeDeserializer(); + ~SkPipeDeserializer(); + + // Ownership is not transferred, so caller must ceep the deserializer alive + void setTypefaceDeserializer(SkTypefaceDeserializer*); + + sk_sp<SkPicture> readPicture(const void*, size_t); + sk_sp<SkImage> readImage(const void*, size_t); + bool playback(const void*, size_t, SkCanvas*); + +private: + class Impl; + std::unique_ptr<Impl> fImpl; +}; + +////////////////////////////////////////////////////////////////////////////////////////////////// + +class SkTypefaceSerializer { +public: + virtual ~SkTypefaceSerializer() {} + + virtual sk_sp<SkData> serialize(SkTypeface*) = 0; +}; + +class SkTypefaceDeserializer { +public: + virtual ~SkTypefaceDeserializer() {} + + virtual sk_sp<SkTypeface> deserialize(const void* data, size_t size) = 0; +}; + +#endif |