Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(204)

Side by Side Diff: tools/json/SkJSONCanvas.h

Issue 1636563002: Initial support for turning Skia draws into a JSON document and vice versa. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: moved to /tools Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « gyp/most.gyp ('k') | tools/json/SkJSONCanvas.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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 SkJSONCanvas_DEFINED
9 #define SkJSONCanvas_DEFINED
10
11 #include "SkCanvas.h"
12 #include "SkStream.h"
13
14 #define SKJSONCANVAS_VERSION "version"
15 #define SKJSONCANVAS_COMMANDS "commands"
16 #define SKJSONCANVAS_COMMAND "command"
17
18 #define SKJSONCANVAS_COMMAND_MATRIX "Matrix"
19 #define SKJSONCANVAS_COMMAND_PAINT "Paint"
20 #define SKJSONCANVAS_COMMAND_RECT "Rect"
21 #define SKJSONCANVAS_COMMAND_OVAL "Oval"
22 #define SKJSONCANVAS_COMMAND_RRECT "RRect"
23 #define SKJSONCANVAS_COMMAND_DRRECT "DRRect"
24 #define SKJSONCANVAS_COMMAND_POINTS "Points"
25 #define SKJSONCANVAS_COMMAND_VERTICES "Vertices"
26 #define SKJSONCANVAS_COMMAND_ATLAS "Atlas"
27 #define SKJSONCANVAS_COMMAND_PATH "Path"
28 #define SKJSONCANVAS_COMMAND_IMAGE "Image"
29 #define SKJSONCANVAS_COMMAND_IMAGERECT "ImageRect"
30 #define SKJSONCANVAS_COMMAND_IMAGENINE "ImageNine"
31 #define SKJSONCANVAS_COMMAND_BITMAP "Bitmap"
32 #define SKJSONCANVAS_COMMAND_BITMAPRECT "BitmapRect"
33 #define SKJSONCANVAS_COMMAND_BITMAPNINE "BitmapNine"
34 #define SKJSONCANVAS_COMMAND_TEXT "Text"
35 #define SKJSONCANVAS_COMMAND_POSTEXT "PosText"
36 #define SKJSONCANVAS_COMMAND_POSTEXTH "PosTextH"
37 #define SKJSONCANVAS_COMMAND_TEXTONPATH "TextOnPath"
38 #define SKJSONCANVAS_COMMAND_TEXTBLOB "TextBlob"
39 #define SKJSONCANVAS_COMMAND_PATCH "Patch"
40 #define SKJSONCANVAS_COMMAND_DRAWABLE "Drawable"
41 #define SKJSONCANVAS_COMMAND_CLIPRECT "ClipRect"
42 #define SKJSONCANVAS_COMMAND_CLIPRRECT "ClipRRect"
43 #define SKJSONCANVAS_COMMAND_CLIPPATH "ClipPath"
44 #define SKJSONCANVAS_COMMAND_CLIPREGION "ClipRegion"
45 #define SKJSONCANVAS_COMMAND_SAVE "Save"
46 #define SKJSONCANVAS_COMMAND_RESTORE "Restore"
47
48 #define SKJSONCANVAS_ATTRIBUTE_MATRIX "matrix"
49 #define SKJSONCANVAS_ATTRIBUTE_COORDS "coords"
50 #define SKJSONCANVAS_ATTRIBUTE_PAINT "paint"
51 #define SKJSONCANVAS_ATTRIBUTE_OUTER "outer"
52 #define SKJSONCANVAS_ATTRIBUTE_INNER "inner"
53 #define SKJSONCANVAS_ATTRIBUTE_MODE "mode"
54 #define SKJSONCANVAS_ATTRIBUTE_POINTS "points"
55 #define SKJSONCANVAS_ATTRIBUTE_PATH "path"
56 #define SKJSONCANVAS_ATTRIBUTE_TEXT "text"
57 #define SKJSONCANVAS_ATTRIBUTE_COLOR "color"
58 #define SKJSONCANVAS_ATTRIBUTE_STYLE "style"
59 #define SKJSONCANVAS_ATTRIBUTE_STROKEWIDTH "strokeWidth"
60 #define SKJSONCANVAS_ATTRIBUTE_ANTIALIAS "antiAlias"
61 #define SKJSONCANVAS_ATTRIBUTE_REGIONOP "op"
62 #define SKJSONCANVAS_ATTRIBUTE_EDGESTYLE "edgeStyle"
63 #define SKJSONCANVAS_ATTRIBUTE_DEVICEREGION "deviceRegion"
64
65 #define SKJSONCANVAS_VERB_MOVE "move"
66 #define SKJSONCANVAS_VERB_LINE "line"
67 #define SKJSONCANVAS_VERB_QUAD "quad"
68 #define SKJSONCANVAS_VERB_CUBIC "cubic"
69 #define SKJSONCANVAS_VERB_CONIC "conic"
70 #define SKJSONCANVAS_VERB_CLOSE "close"
71
72 #define SKJSONCANVAS_STYLE_FILL "fill"
73 #define SKJSONCANVAS_STYLE_STROKE "stroke"
74 #define SKJSONCANVAS_STYLE_STROKEANDFILL "strokeAndFill"
75
76 #define SKJSONCANVAS_EDGESTYLE_HARD "hard"
77 #define SKJSONCANVAS_EDGESTYLE_SOFT "soft"
78
79 #define SKJSONCANVAS_POINTMODE_POINTS "points"
80 #define SKJSONCANVAS_POINTMODE_LINES "lines"
81 #define SKJSONCANVAS_POINTMODE_POLYGON "polygon"
82
83 #define SKJSONCANVAS_REGIONOP_DIFFERENCE "difference"
84 #define SKJSONCANVAS_REGIONOP_INTERSECT "intersect"
85 #define SKJSONCANVAS_REGIONOP_UNION "union"
86 #define SKJSONCANVAS_REGIONOP_XOR "xor"
87 #define SKJSONCANVAS_REGIONOP_REVERSE_DIFFERENCE "reverseDifference"
88 #define SKJSONCANVAS_REGIONOP_REPLACE "replace"
89
90 /*
91 * Implementation of SkCanvas which writes JSON when drawn to. The JSON describe s all of the draw
92 * commands issued to the canvas, and can later be turned back into draw command s using
93 * SkJSONRenderer. Be sure to call finish() when you are done drawing.
94 */
95 class SkJSONCanvas : public SkCanvas {
96 public:
97 /* Create a canvas which writes to the specified output stream. */
98 SkJSONCanvas(int width, int height, SkWStream& out);
99
100 /* Complete the JSON document. */
101 void finish();
102
103 // overridden SkCanvas API
104
105 void onDrawPaint(const SkPaint&) override;
106
107 void onDrawRect(const SkRect&, const SkPaint&) override;
108
109 void onDrawOval(const SkRect&, const SkPaint&) override;
110
111 void onDrawRRect(const SkRRect&, const SkPaint&) override;
112
113 void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override;
114
115 void onDrawPoints(SkCanvas::PointMode, size_t count, const SkPoint pts[],
116 const SkPaint&) override;
117
118 void onDrawVertices(SkCanvas::VertexMode, int vertexCount, const SkPoint ver tices[],
119 const SkPoint texs[], const SkColor colors[], SkXfermode *,
120 const uint16_t indices[], int indexCount, const SkPaint& ) override;
121
122 void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const Sk Color[],
123 int count, SkXfermode::Mode, const SkRect* cull, const SkPa int*) override;
124
125 void onDrawPath(const SkPath&, const SkPaint&) override;
126
127 void onDrawImage(const SkImage*, SkScalar dx, SkScalar dy, const SkPaint*) o verride;
128
129 void onDrawImageRect(const SkImage*, const SkRect*, const SkRect&, const SkP aint*,
130 SrcRectConstraint) override;
131
132 void onDrawImageNine(const SkImage*, const SkIRect& center, const SkRect& ds t,
133 const SkPaint*) override;
134
135 void onDrawBitmap(const SkBitmap&, SkScalar dx, SkScalar dy, const SkPaint*) override;
136
137 void onDrawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const S kPaint*,
138 SkCanvas::SrcRectConstraint) override;
139
140 void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
141 const SkPaint*) override;
142
143 void onDrawText(const void* text, size_t byteLength, SkScalar x,
144 SkScalar y, const SkPaint& paint) override;
145
146 void onDrawPosText(const void* text, size_t byteLength,
147 const SkPoint pos[], const SkPaint& paint) override;
148
149 void onDrawPosTextH(const void* text, size_t byteLength,
150 const SkScalar xpos[], SkScalar constY,
151 const SkPaint& paint) override;
152
153 void onDrawTextOnPath(const void* text, size_t byteLength,
154 const SkPath& path, const SkMatrix* matrix,
155 const SkPaint& paint) override;
156
157 void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
158 const SkPaint& paint) override;
159
160 void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
161 const SkPoint texCoords[4], SkXfermode* xmode, const SkPain t& paint) override;
162
163 void onDrawDrawable(SkDrawable*, const SkMatrix*) override;
164
165 void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle ) override;
166
167 void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeSt yle) override;
168
169 void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle ) override;
170
171 void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) override;
172
173 void willSave() override;
174
175 void willRestore() override;
176
177 private:
178 void writef(const char* fmt, ...);
179
180 void open(const char* name);
181
182 void close();
183
184 void writeString(const char* name, const char* text);
185
186 void writeString(const char* name, const void* text, size_t length);
187
188 void writePoint(const char* name, const SkPoint& point);
189
190 void writeRect(const char* name, const SkRect& rect);
191
192 void writeRRect(const char* name, const SkRRect& rrect);
193
194 void writePath(const char* name, const SkPath& path);
195
196 void writeRegion(const char* name, const SkRegion& region);
197
198 void writePaint(const SkPaint& paint);
199
200 void writeRegionOp(const char* name, SkRegion::Op op);
201
202 void writeEdgeStyle(const char* name, SkCanvas::ClipEdgeStyle edgeStyle);
203
204 void writePointMode(const char* name, SkCanvas::PointMode mode);
205
206 void writeMatrix(const char* name, const SkMatrix& matrix);
207
208 void updateMatrix();
209
210 SkWStream& fOut;
211 SkMatrix fLastMatrix;
212 bool fFirstCommand;
213
214 typedef SkCanvas INHERITED;
215 };
216
217 #endif
OLDNEW
« no previous file with comments | « gyp/most.gyp ('k') | tools/json/SkJSONCanvas.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698