• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 SkJsonWriteBuffer_DEFINED
9 #define SkJsonWriteBuffer_DEFINED
10 
11 #include "SkWriteBuffer.h"
12 
13 #include "SkJSONCPP.h"
14 
15 class SkPath;
16 class UrlDataManager;
17 
18 class SkJsonWriteBuffer final : public SkWriteBuffer {
19 public:
SkJsonWriteBuffer(UrlDataManager * urlDataManager)20     SkJsonWriteBuffer(UrlDataManager* urlDataManager)
21         : fUrlDataManager(urlDataManager)
22         , fJson(Json::objectValue) {}
23 
isCrossProcess()24     bool isCrossProcess() const override { return false; }
25 
26     void writeByteArray(const void* data, size_t size) override;
27     void writeBool(bool value) override;
28     void writeScalar(SkScalar value) override;
29     void writeScalarArray(const SkScalar* value, uint32_t count) override;
30     void writeInt(int32_t value) override;
31     void writeIntArray(const int32_t* value, uint32_t count) override;
32     void writeUInt(uint32_t value) override;
33     void writeString(const char* value) override;
34 
35     void writeFlattenable(const SkFlattenable* flattenable) override;
36     void writeColor(SkColor color) override;
37     void writeColorArray(const SkColor* color, uint32_t count) override;
38     void writeColor4f(const SkColor4f& color) override;
39     void writeColor4fArray(const SkColor4f* color, uint32_t count) override;
40     void writePoint(const SkPoint& point) override;
41     void writePointArray(const SkPoint* point, uint32_t count) override;
42     void writeMatrix(const SkMatrix& matrix) override;
43     void writeIRect(const SkIRect& rect) override;
44     void writeRect(const SkRect& rect) override;
45     void writeRegion(const SkRegion& region) override;
46     void writePath(const SkPath& path) override;
47     size_t writeStream(SkStream* stream, size_t length) override;
48     void writeBitmap(const SkBitmap& bitmap) override;
49     void writeImage(const SkImage*) override;
50     void writeTypeface(SkTypeface* typeface) override;
51     void writePaint(const SkPaint& paint) override;
52 
getValue()53     const Json::Value& getValue() const { return fJson; }
54 
55 private:
56     void append(const char* type, const Json::Value& value);
57 
58     UrlDataManager* fUrlDataManager;
59     Json::Value fJson;
60 };
61 
62 #endif
63