aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkPipe.h
diff options
context:
space:
mode:
authorGravatar reed <reed@google.com>2016-09-13 08:09:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-09-13 08:09:45 -0700
commit54dc4878b02765efea39e68b218df1e4bfff4b88 (patch)
tree296347d73c08b8b1d0a0b244ca062434ac48caa1 /src/core/SkPipe.h
parent5f1d0f61ea182829826d9d76cb85346d3e23305d (diff)
add pipecanvas
Diffstat (limited to 'src/core/SkPipe.h')
-rw-r--r--src/core/SkPipe.h74
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