blob: e668720891b7f8ae32418292bb7cf4d7f6a99ed6 [file] [log] [blame]
Mike Klein8f4e2242019-03-20 11:59:00 -05001/*
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 JsonWriteBuffer_DEFINED
9#define JsonWriteBuffer_DEFINED
10
Mike Kleinc0bd9f92019-04-23 12:05:21 -050011#include "src/core/SkWriteBuffer.h"
Mike Klein8f4e2242019-03-20 11:59:00 -050012
13class SkJSONWriter;
14class SkPath;
15class UrlDataManager;
16
17class JsonWriteBuffer final : public SkWriteBuffer {
18public:
19 JsonWriteBuffer(SkJSONWriter* writer, UrlDataManager* urlDataManager)
20 : fUrlDataManager(urlDataManager), fWriter(writer), fCount(0) {}
21
22 void writePad32(const void* buffer, size_t bytes) override;
23 void writeByteArray(const void* data, size_t size) override;
24 void writeBool(bool value) override;
25 void writeScalar(SkScalar value) override;
26 void writeScalarArray(const SkScalar* value, uint32_t count) override;
27 void writeInt(int32_t value) override;
28 void writeIntArray(const int32_t* value, uint32_t count) override;
29 void writeUInt(uint32_t value) override;
30 void writeString(const char* value) override;
31
32 void writeFlattenable(const SkFlattenable* flattenable) override;
33 void writeColor(SkColor color) override;
34 void writeColorArray(const SkColor* color, uint32_t count) override;
35 void writeColor4f(const SkColor4f& color) override;
36 void writeColor4fArray(const SkColor4f* color, uint32_t count) override;
37 void writePoint(const SkPoint& point) override;
38 void writePointArray(const SkPoint* point, uint32_t count) override;
39 void writePoint3(const SkPoint3& point) override;
Mike Reed6d0ab952020-07-20 16:07:01 -040040 void write(const SkM44&) override;
Mike Klein8f4e2242019-03-20 11:59:00 -050041 void writeMatrix(const SkMatrix& matrix) override;
42 void writeIRect(const SkIRect& rect) override;
43 void writeRect(const SkRect& rect) override;
44 void writeRegion(const SkRegion& region) override;
45 void writePath(const SkPath& path) override;
46 size_t writeStream(SkStream* stream, size_t length) override;
47 void writeImage(const SkImage*) override;
48 void writeTypeface(SkTypeface* typeface) override;
49 void writePaint(const SkPaint& paint) override;
50
51private:
52 void append(const char* type);
53
54 UrlDataManager* fUrlDataManager;
55 SkJSONWriter* fWriter;
56 int fCount;
57};
58
59#endif