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 JsonWriteBuffer_DEFINED 9 #define JsonWriteBuffer_DEFINED 10 11 #include "include/core/SkColor.h" 12 #include "include/core/SkM44.h" 13 #include "include/core/SkScalar.h" 14 #include "include/core/SkTypes.h" 15 #include "src/core/SkWriteBuffer.h" 16 17 #include <cstddef> 18 #include <cstdint> 19 #include <string_view> 20 21 class SkFlattenable; 22 class SkImage; 23 class SkJSONWriter; 24 class SkMatrix; 25 class SkPaint; 26 class SkPath; 27 class SkRegion; 28 struct SkSamplingOptions; 29 class SkStream; 30 class SkTypeface; 31 class UrlDataManager; 32 struct SkIRect; 33 struct SkPoint3; 34 struct SkPoint; 35 struct SkRect; 36 37 class JsonWriteBuffer final : public SkWriteBuffer { 38 public: JsonWriteBuffer(SkJSONWriter * writer,UrlDataManager * urlDataManager)39 JsonWriteBuffer(SkJSONWriter* writer, UrlDataManager* urlDataManager) 40 : SkWriteBuffer({}), fUrlDataManager(urlDataManager), fWriter(writer), fCount(0) {} 41 42 void writePad32(const void* buffer, size_t bytes) override; 43 void writeByteArray(const void* data, size_t size) override; 44 void writeBool(bool value) override; 45 void writeScalar(SkScalar value) override; 46 void writeScalarArray(const SkScalar* value, uint32_t count) override; 47 void writeInt(int32_t value) override; 48 void writeIntArray(const int32_t* value, uint32_t count) override; 49 void writeUInt(uint32_t value) override; 50 void writeString(std::string_view value) override; 51 52 void writeFlattenable(const SkFlattenable* flattenable) override; 53 void writeColor(SkColor color) override; 54 void writeColorArray(const SkColor* color, uint32_t count) override; 55 void writeColor4f(const SkColor4f& color) override; 56 void writeColor4fArray(const SkColor4f* color, uint32_t count) override; 57 void writePoint(const SkPoint& point) override; 58 void writePointArray(const SkPoint* point, uint32_t count) override; 59 void writePoint3(const SkPoint3& point) override; 60 void write(const SkM44&) override; 61 void writeMatrix(const SkMatrix& matrix) override; 62 void writeIRect(const SkIRect& rect) override; 63 void writeRect(const SkRect& rect) override; 64 void writeRegion(const SkRegion& region) override; 65 void writePath(const SkPath& path) override; 66 void writeSampling(const SkSamplingOptions&) override; 67 size_t writeStream(SkStream* stream, size_t length) override; 68 void writeImage(const SkImage*) override; 69 void writeTypeface(SkTypeface* typeface) override; 70 void writePaint(const SkPaint& paint) override; 71 72 private: 73 void append(const char* type); 74 75 UrlDataManager* fUrlDataManager; 76 SkJSONWriter* fWriter; 77 int fCount; 78 }; 79 80 #endif 81