blob: 7bac9e4858869987043dcd005504f203a355511f [file] [log] [blame]
chudy@google.com902ebe52012-06-29 14:21:22 +00001/*
2 * Copyright 2012 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 SKDRAWCOMMAND_H_
9#define SKDRAWCOMMAND_H_
10
Florin Malitaab244f02017-05-03 19:16:58 +000011#include "SkBitmap.h"
chudy@google.com902ebe52012-06-29 14:21:22 +000012#include "SkCanvas.h"
Derek Sollenberger6aab2ab2018-04-12 12:45:58 -040013#include "SkDrawShadowInfo.h"
Mike Reed086a4272017-07-18 10:53:11 -040014#include "SkFlattenable.h"
bungemand3ebb482015-08-05 13:57:49 -070015#include "SkTLazy.h"
16#include "SkPath.h"
Mike Reed267be7f2017-02-13 09:32:54 -050017#include "SkRegion.h"
bungemand3ebb482015-08-05 13:57:49 -070018#include "SkRRect.h"
reed45561a02016-07-07 12:47:17 -070019#include "SkRSXform.h"
robertphillips@google.com0a4805e2013-05-29 13:24:23 +000020#include "SkString.h"
bungemand3ebb482015-08-05 13:57:49 -070021#include "SkTDArray.h"
Mike Reedfed9cfd2017-03-17 12:09:04 -040022#include "SkVertices.h"
ethannicholas50a8dd02016-02-10 05:40:46 -080023#include "SkJSONCPP.h"
ethannicholasf62a8b72016-02-11 10:35:21 -080024#include "UrlDataManager.h"
chudy@google.com902ebe52012-06-29 14:21:22 +000025
Mike Klein0f61faa2016-10-11 16:26:57 -040026class SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +000027public:
robertphillips9bafc302015-02-13 11:13:00 -080028 enum OpType {
fmalita160ebb22015-04-01 20:58:37 -070029 kBeginDrawPicture_OpType,
Brian Osmanc25e2692018-03-12 10:57:28 -040030 kClear_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080031 kClipPath_OpType,
32 kClipRegion_OpType,
33 kClipRect_OpType,
34 kClipRRect_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080035 kConcat_OpType,
reed97660cc2016-06-28 18:54:19 -070036 kDrawAnnotation_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080037 kDrawBitmap_OpType,
Brian Osman78a76482018-05-18 16:59:13 -040038 kDrawBitmapLattice_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080039 kDrawBitmapNine_OpType,
40 kDrawBitmapRect_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080041 kDrawDRRect_OpType,
fmalita651c9202015-07-22 10:23:01 -070042 kDrawImage_OpType,
Stan Ilievac42aeb2017-01-12 16:20:50 -050043 kDrawImageLattice_OpType,
Brian Osmanc25e2692018-03-12 10:57:28 -040044 kDrawImageNine_OpType,
fmalita651c9202015-07-22 10:23:01 -070045 kDrawImageRect_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080046 kDrawOval_OpType,
Brian Osmanc25e2692018-03-12 10:57:28 -040047 kDrawArc_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080048 kDrawPaint_OpType,
49 kDrawPatch_OpType,
50 kDrawPath_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080051 kDrawPoints_OpType,
52 kDrawPosText_OpType,
53 kDrawPosTextH_OpType,
54 kDrawRect_OpType,
55 kDrawRRect_OpType,
Brian Osmanc25e2692018-03-12 10:57:28 -040056 kDrawRegion_OpType,
Derek Sollenberger6aab2ab2018-04-12 12:45:58 -040057 kDrawShadow_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080058 kDrawText_OpType,
59 kDrawTextBlob_OpType,
60 kDrawTextOnPath_OpType,
reed45561a02016-07-07 12:47:17 -070061 kDrawTextRSXform_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080062 kDrawVertices_OpType,
Brian Osman616f1cb2018-05-29 11:23:35 -040063 kDrawAtlas_OpType,
fmalita160ebb22015-04-01 20:58:37 -070064 kEndDrawPicture_OpType,
robertphillips9bafc302015-02-13 11:13:00 -080065 kRestore_OpType,
66 kSave_OpType,
67 kSaveLayer_OpType,
68 kSetMatrix_OpType,
robertphillips72942b8e2015-02-12 06:37:12 -080069
Jim Van Verth343fe492017-05-02 16:49:24 -040070 kLast_OpType = kSetMatrix_OpType
robertphillips9bafc302015-02-13 11:13:00 -080071 };
72
73 static const int kOpTypeCount = kLast_OpType + 1;
74
halcanarya73d76a2016-10-17 13:19:02 -070075 static void WritePNG(const uint8_t* rgba, unsigned width, unsigned height,
msaretta5cf4f42016-06-30 10:06:51 -070076 SkWStream& out, bool isOpaque);
ethannicholasf67531f2016-03-21 10:19:39 -070077
robertphillips9bafc302015-02-13 11:13:00 -080078 SkDrawCommand(OpType opType);
chudy@google.com902ebe52012-06-29 14:21:22 +000079
Brian Osman255735e2018-04-06 14:51:42 -040080 virtual ~SkDrawCommand() {}
chudy@google.com902ebe52012-06-29 14:21:22 +000081
chudy@google.com0b5bbb02012-07-31 19:55:32 +000082 bool isVisible() const {
83 return fVisible;
84 }
85
86 void setVisible(bool toggle) {
87 fVisible = toggle;
88 }
chudy@google.com902ebe52012-06-29 14:21:22 +000089
fmalita8c89c522014-11-08 16:18:56 -080090 virtual void execute(SkCanvas*) const = 0;
chudy@google.com902ebe52012-06-29 14:21:22 +000091
robertphillips@google.com6ede1fe2013-06-06 23:59:28 +000092 virtual bool render(SkCanvas* canvas) const { return false; }
robertphillips@google.com6dec8fc2012-11-21 17:11:02 +000093
ethannicholasf62a8b72016-02-11 10:35:21 -080094 virtual Json::Value toJSON(UrlDataManager& urlDataManager) const;
ethannicholas50a8dd02016-02-10 05:40:46 -080095
robertphillips9bafc302015-02-13 11:13:00 -080096 static const char* GetCommandString(OpType type);
robertphillips@google.com8a1cdae2012-11-19 20:44:29 +000097
joshualittbd724132016-03-03 11:39:38 -080098 // Helper methods for converting things to JSON
brianosmanfad98562016-05-04 11:06:28 -070099 static Json::Value MakeJsonColor(const SkColor color);
brianosman97bbf822016-09-25 13:15:58 -0700100 static Json::Value MakeJsonColor4f(const SkColor4f& color);
brianosmanfad98562016-05-04 11:06:28 -0700101 static Json::Value MakeJsonPoint(const SkPoint& point);
102 static Json::Value MakeJsonPoint(SkScalar x, SkScalar y);
Derek Sollenberger6aab2ab2018-04-12 12:45:58 -0400103 static Json::Value MakeJsonPoint3(const SkPoint3& point);
brianosmanfad98562016-05-04 11:06:28 -0700104 static Json::Value MakeJsonRect(const SkRect& rect);
joshualittbd724132016-03-03 11:39:38 -0800105 static Json::Value MakeJsonIRect(const SkIRect&);
106 static Json::Value MakeJsonMatrix(const SkMatrix&);
vjiaoblacke5de1302016-07-13 14:05:28 -0700107 static Json::Value MakeJsonScalar(SkScalar);
brianosmanfad98562016-05-04 11:06:28 -0700108 static Json::Value MakeJsonPath(const SkPath& path);
109 static Json::Value MakeJsonRegion(const SkRegion& region);
110 static Json::Value MakeJsonPaint(const SkPaint& paint, UrlDataManager& urlDataManager);
Stan Ilievac42aeb2017-01-12 16:20:50 -0500111 static Json::Value MakeJsonLattice(const SkCanvas::Lattice& lattice);
brianosmanfad98562016-05-04 11:06:28 -0700112
113 static void flatten(const SkFlattenable* flattenable, Json::Value* target,
114 UrlDataManager& urlDataManager);
115 static bool flatten(const SkImage& image, Json::Value* target,
116 UrlDataManager& urlDataManager);
117 static bool flatten(const SkBitmap& bitmap, Json::Value* target,
118 UrlDataManager& urlDataManager);
joshualittbd724132016-03-03 11:39:38 -0800119
chudy@google.com902ebe52012-06-29 14:21:22 +0000120private:
robertphillips9bafc302015-02-13 11:13:00 -0800121 OpType fOpType;
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +0000122 bool fVisible;
chudy@google.com902ebe52012-06-29 14:21:22 +0000123};
124
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000125class SkRestoreCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000126public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000127 SkRestoreCommand();
mtklein36352bf2015-03-25 18:17:31 -0700128 void execute(SkCanvas* canvas) const override;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000129
130private:
131 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000132};
133
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000134class SkClearCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000135public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000136 SkClearCommand(SkColor color);
mtklein36352bf2015-03-25 18:17:31 -0700137 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800138 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800139
chudy@google.com902ebe52012-06-29 14:21:22 +0000140private:
141 SkColor fColor;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000142
143 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000144};
145
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000146class SkClipPathCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000147public:
Mike Reedc1f77742016-12-09 09:00:50 -0500148 SkClipPathCommand(const SkPath& path, SkClipOp op, bool doAA);
mtklein36352bf2015-03-25 18:17:31 -0700149 void execute(SkCanvas* canvas) const override;
150 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800151 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800152
chudy@google.com902ebe52012-06-29 14:21:22 +0000153private:
Mike Reedc1f77742016-12-09 09:00:50 -0500154 SkPath fPath;
155 SkClipOp fOp;
156 bool fDoAA;
robertphillips@google.com91217d02013-03-17 18:33:46 +0000157
158 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000159};
160
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000161class SkClipRegionCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000162public:
Mike Reedc1f77742016-12-09 09:00:50 -0500163 SkClipRegionCommand(const SkRegion& region, SkClipOp op);
mtklein36352bf2015-03-25 18:17:31 -0700164 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800165 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800166
chudy@google.com902ebe52012-06-29 14:21:22 +0000167private:
Mike Reedc1f77742016-12-09 09:00:50 -0500168 SkRegion fRegion;
169 SkClipOp fOp;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000170
171 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000172};
173
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000174class SkClipRectCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000175public:
Mike Reedc1f77742016-12-09 09:00:50 -0500176 SkClipRectCommand(const SkRect& rect, SkClipOp op, bool doAA);
mtklein36352bf2015-03-25 18:17:31 -0700177 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800178 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips@google.comfebc0ec2013-03-11 22:53:11 +0000179
chudy@google.com902ebe52012-06-29 14:21:22 +0000180private:
Mike Reedc1f77742016-12-09 09:00:50 -0500181 SkRect fRect;
182 SkClipOp fOp;
183 bool fDoAA;
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000184
185 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000186};
187
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000188class SkClipRRectCommand : public SkDrawCommand {
robertphillips@google.com67baba42013-01-02 20:20:31 +0000189public:
Mike Reedc1f77742016-12-09 09:00:50 -0500190 SkClipRRectCommand(const SkRRect& rrect, SkClipOp op, bool doAA);
mtklein36352bf2015-03-25 18:17:31 -0700191 void execute(SkCanvas* canvas) const override;
192 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800193 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips@google.comfebc0ec2013-03-11 22:53:11 +0000194
robertphillips@google.com67baba42013-01-02 20:20:31 +0000195private:
Mike Reedc1f77742016-12-09 09:00:50 -0500196 SkRRect fRRect;
197 SkClipOp fOp;
198 bool fDoAA;
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000199
200 typedef SkDrawCommand INHERITED;
robertphillips@google.com67baba42013-01-02 20:20:31 +0000201};
202
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000203class SkConcatCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000204public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000205 SkConcatCommand(const SkMatrix& matrix);
mtklein36352bf2015-03-25 18:17:31 -0700206 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800207 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800208
chudy@google.com902ebe52012-06-29 14:21:22 +0000209private:
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000210 SkMatrix fMatrix;
211
212 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000213};
214
reed97660cc2016-06-28 18:54:19 -0700215class SkDrawAnnotationCommand : public SkDrawCommand {
216public:
217 SkDrawAnnotationCommand(const SkRect&, const char key[], sk_sp<SkData> value);
218 void execute(SkCanvas* canvas) const override;
219 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
reed97660cc2016-06-28 18:54:19 -0700220
221private:
222 SkRect fRect;
223 SkString fKey;
224 sk_sp<SkData> fValue;
225
226 typedef SkDrawCommand INHERITED;
227};
228
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000229class SkDrawBitmapCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000230public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000231 SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top,
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +0000232 const SkPaint* paint);
mtklein36352bf2015-03-25 18:17:31 -0700233 void execute(SkCanvas* canvas) const override;
234 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800235 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800236
chudy@google.com902ebe52012-06-29 14:21:22 +0000237private:
Brian Osman8363be12018-05-29 13:38:07 -0400238 SkBitmap fBitmap;
239 SkScalar fLeft;
240 SkScalar fTop;
241 SkTLazy<SkPaint> fPaint;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000242
243 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000244};
245
Brian Osman78a76482018-05-18 16:59:13 -0400246class SkDrawBitmapLatticeCommand : public SkDrawCommand {
247public:
248 SkDrawBitmapLatticeCommand(const SkBitmap& bitmap, const SkCanvas::Lattice& lattice,
249 const SkRect& dst, const SkPaint* paint);
250 void execute(SkCanvas* canvas) const override;
251 bool render(SkCanvas* canvas) const override;
252 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
Brian Osman78a76482018-05-18 16:59:13 -0400253
254private:
255 SkBitmap fBitmap;
256 SkCanvas::Lattice fLattice;
257 SkRect fDst;
258 SkTLazy<SkPaint> fPaint;
259
260 typedef SkDrawCommand INHERITED;
261};
262
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000263class SkDrawBitmapNineCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000264public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000265 SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center,
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +0000266 const SkRect& dst, const SkPaint* paint);
mtklein36352bf2015-03-25 18:17:31 -0700267 void execute(SkCanvas* canvas) const override;
268 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800269 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800270
chudy@google.com902ebe52012-06-29 14:21:22 +0000271private:
Brian Osman8363be12018-05-29 13:38:07 -0400272 SkBitmap fBitmap;
273 SkIRect fCenter;
274 SkRect fDst;
275 SkTLazy<SkPaint> fPaint;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000276
277 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000278};
279
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000280class SkDrawBitmapRectCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000281public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000282 SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src,
commit-bot@chromium.orgeed779d2013-08-16 10:24:37 +0000283 const SkRect& dst, const SkPaint* paint,
reeda5517e22015-07-14 10:54:12 -0700284 SkCanvas::SrcRectConstraint);
mtklein36352bf2015-03-25 18:17:31 -0700285 void execute(SkCanvas* canvas) const override;
286 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800287 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
commit-bot@chromium.orgeed779d2013-08-16 10:24:37 +0000288
chudy@google.com902ebe52012-06-29 14:21:22 +0000289private:
commit-bot@chromium.orgeed779d2013-08-16 10:24:37 +0000290 SkBitmap fBitmap;
Brian Osman8363be12018-05-29 13:38:07 -0400291 SkTLazy<SkRect> fSrc;
commit-bot@chromium.orgeed779d2013-08-16 10:24:37 +0000292 SkRect fDst;
Brian Osman8363be12018-05-29 13:38:07 -0400293 SkTLazy<SkPaint> fPaint;
reeda5517e22015-07-14 10:54:12 -0700294 SkCanvas::SrcRectConstraint fConstraint;
robertphillips@google.com91217d02013-03-17 18:33:46 +0000295
296 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000297};
298
fmalita651c9202015-07-22 10:23:01 -0700299class SkDrawImageCommand : public SkDrawCommand {
300public:
301 SkDrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint);
302 void execute(SkCanvas* canvas) const override;
303 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800304 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800305
fmalita651c9202015-07-22 10:23:01 -0700306private:
Hal Canary1b612a82016-11-03 16:26:13 -0400307 sk_sp<const SkImage> fImage;
308 SkScalar fLeft;
309 SkScalar fTop;
310 SkTLazy<SkPaint> fPaint;
fmalita651c9202015-07-22 10:23:01 -0700311
312 typedef SkDrawCommand INHERITED;
313};
314
Stan Ilievac42aeb2017-01-12 16:20:50 -0500315class SkDrawImageLatticeCommand : public SkDrawCommand {
316public:
317 SkDrawImageLatticeCommand(const SkImage* image, const SkCanvas::Lattice& lattice,
318 const SkRect& dst, const SkPaint* paint);
319 void execute(SkCanvas* canvas) const override;
320 bool render(SkCanvas* canvas) const override;
321 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
322
323private:
324 sk_sp<const SkImage> fImage;
325 SkCanvas::Lattice fLattice;
326 SkRect fDst;
327 SkTLazy<SkPaint> fPaint;
328
329 typedef SkDrawCommand INHERITED;
330};
331
Brian Osmanc25e2692018-03-12 10:57:28 -0400332class SkDrawImageNineCommand : public SkDrawCommand {
333public:
334 SkDrawImageNineCommand(const SkImage* image, const SkIRect& center,
335 const SkRect& dst, const SkPaint* paint);
336 void execute(SkCanvas* canvas) const override;
337 bool render(SkCanvas* canvas) const override;
338 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
Brian Osmanc25e2692018-03-12 10:57:28 -0400339
340private:
341 sk_sp<const SkImage> fImage;
342 SkIRect fCenter;
343 SkRect fDst;
Brian Osman8363be12018-05-29 13:38:07 -0400344 SkTLazy<SkPaint> fPaint;
Brian Osmanc25e2692018-03-12 10:57:28 -0400345
346 typedef SkDrawCommand INHERITED;
347};
348
fmalita651c9202015-07-22 10:23:01 -0700349class SkDrawImageRectCommand : public SkDrawCommand {
350public:
351 SkDrawImageRectCommand(const SkImage* image, const SkRect* src, const SkRect& dst,
352 const SkPaint* paint, SkCanvas::SrcRectConstraint constraint);
353 void execute(SkCanvas* canvas) const override;
354 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800355 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800356
fmalita651c9202015-07-22 10:23:01 -0700357private:
Hal Canary1b612a82016-11-03 16:26:13 -0400358 sk_sp<const SkImage> fImage;
fmalita651c9202015-07-22 10:23:01 -0700359 SkTLazy<SkRect> fSrc;
360 SkRect fDst;
361 SkTLazy<SkPaint> fPaint;
362 SkCanvas::SrcRectConstraint fConstraint;
363
364 typedef SkDrawCommand INHERITED;
365};
366
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000367class SkDrawOvalCommand : public SkDrawCommand {
robertphillips@google.com67baba42013-01-02 20:20:31 +0000368public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000369 SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700370 void execute(SkCanvas* canvas) const override;
371 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800372 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800373
robertphillips@google.com67baba42013-01-02 20:20:31 +0000374private:
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000375 SkRect fOval;
376 SkPaint fPaint;
377
378 typedef SkDrawCommand INHERITED;
robertphillips@google.com67baba42013-01-02 20:20:31 +0000379};
380
bsalomonac3aa242016-08-19 11:25:19 -0700381class SkDrawArcCommand : public SkDrawCommand {
382public:
383 SkDrawArcCommand(const SkRect& oval, SkScalar startAngle, SkScalar sweepAngle, bool useCenter,
384 const SkPaint& paint);
385 void execute(SkCanvas* canvas) const override;
386 bool render(SkCanvas* canvas) const override;
387 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
bsalomonac3aa242016-08-19 11:25:19 -0700388
389private:
390 SkRect fOval;
391 SkScalar fStartAngle;
392 SkScalar fSweepAngle;
393 bool fUseCenter;
394 SkPaint fPaint;
395
396 typedef SkDrawCommand INHERITED;
397};
398
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000399class SkDrawPaintCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000400public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000401 SkDrawPaintCommand(const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700402 void execute(SkCanvas* canvas) const override;
403 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800404 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800405
chudy@google.com902ebe52012-06-29 14:21:22 +0000406private:
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000407 SkPaint fPaint;
408
409 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000410};
411
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000412class SkDrawPathCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000413public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000414 SkDrawPathCommand(const SkPath& path, const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700415 void execute(SkCanvas* canvas) const override;
416 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800417 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips@google.com6dec8fc2012-11-21 17:11:02 +0000418
chudy@google.com902ebe52012-06-29 14:21:22 +0000419private:
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000420 SkPath fPath;
421 SkPaint fPaint;
robertphillips@google.com91217d02013-03-17 18:33:46 +0000422
423 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000424};
425
fmalita160ebb22015-04-01 20:58:37 -0700426class SkBeginDrawPictureCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000427public:
fmalita160ebb22015-04-01 20:58:37 -0700428 SkBeginDrawPictureCommand(const SkPicture* picture,
429 const SkMatrix* matrix,
430 const SkPaint* paint);
431
mtklein36352bf2015-03-25 18:17:31 -0700432 void execute(SkCanvas* canvas) const override;
433 bool render(SkCanvas* canvas) const override;
commit-bot@chromium.orge898e9c2013-11-21 17:08:12 +0000434
chudy@google.com902ebe52012-06-29 14:21:22 +0000435private:
Hal Canary1b612a82016-11-03 16:26:13 -0400436 sk_sp<const SkPicture> fPicture;
437 SkTLazy<SkMatrix> fMatrix;
438 SkTLazy<SkPaint> fPaint;
fmalita160ebb22015-04-01 20:58:37 -0700439
440 typedef SkDrawCommand INHERITED;
441};
442
443class SkEndDrawPictureCommand : public SkDrawCommand {
444public:
445 SkEndDrawPictureCommand(bool restore);
446
447 void execute(SkCanvas* canvas) const override;
448
449private:
450 bool fRestore;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000451
452 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000453};
454
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000455class SkDrawPointsCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000456public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000457 SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[],
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +0000458 const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700459 void execute(SkCanvas* canvas) const override;
460 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800461 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800462
chudy@google.com902ebe52012-06-29 14:21:22 +0000463private:
chudy@google.com902ebe52012-06-29 14:21:22 +0000464 SkCanvas::PointMode fMode;
Brian Osman8363be12018-05-29 13:38:07 -0400465 SkTDArray<SkPoint> fPts;
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000466 SkPaint fPaint;
467
468 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000469};
470
Brian Osmanc25e2692018-03-12 10:57:28 -0400471class SkDrawRegionCommand : public SkDrawCommand {
472public:
473 SkDrawRegionCommand(const SkRegion& region, const SkPaint& paint);
474 void execute(SkCanvas* canvas) const override;
475 bool render(SkCanvas* canvas) const override;
476 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
Brian Osmanc25e2692018-03-12 10:57:28 -0400477
478private:
479 SkRegion fRegion;
480 SkPaint fPaint;
481
482 typedef SkDrawCommand INHERITED;
483};
484
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000485class SkDrawTextCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000486public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000487 SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y,
commit-bot@chromium.org57f74e02014-03-25 23:31:33 +0000488 const SkPaint& paint);
Brian Salomond3b65972017-03-22 12:05:03 -0400489 ~SkDrawTextCommand() override { delete [] fText; }
mtklein36352bf2015-03-25 18:17:31 -0700490 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800491 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800492
chudy@google.com902ebe52012-06-29 14:21:22 +0000493private:
robertphillips@google.com77279cb2013-03-25 12:01:45 +0000494 char* fText;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000495 size_t fByteLength;
chudy@google.com902ebe52012-06-29 14:21:22 +0000496 SkScalar fX;
497 SkScalar fY;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000498 SkPaint fPaint;
499
500 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000501};
502
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000503class SkDrawPosTextCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000504public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000505 SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[],
506 const SkPaint& paint);
Brian Salomond3b65972017-03-22 12:05:03 -0400507 ~SkDrawPosTextCommand() override { delete [] fPos; delete [] fText; }
mtklein36352bf2015-03-25 18:17:31 -0700508 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800509 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800510
chudy@google.com902ebe52012-06-29 14:21:22 +0000511private:
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000512 char* fText;
513 size_t fByteLength;
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000514 SkPoint* fPos;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000515 SkPaint fPaint;
516
517 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000518};
519
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000520class SkDrawTextOnPathCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000521public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000522 SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path,
523 const SkMatrix* matrix, const SkPaint& paint);
Brian Salomond3b65972017-03-22 12:05:03 -0400524 ~SkDrawTextOnPathCommand() override { delete [] fText; }
mtklein36352bf2015-03-25 18:17:31 -0700525 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800526 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800527
chudy@google.com902ebe52012-06-29 14:21:22 +0000528private:
Brian Osman8363be12018-05-29 13:38:07 -0400529 char* fText;
530 size_t fByteLength;
531 SkPath fPath;
532 SkTLazy<SkMatrix> fMatrix;
533 SkPaint fPaint;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000534
535 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000536};
537
reed45561a02016-07-07 12:47:17 -0700538class SkDrawTextRSXformCommand : public SkDrawCommand {
539public:
540 SkDrawTextRSXformCommand(const void* text, size_t byteLength, const SkRSXform[],
541 const SkRect*, const SkPaint& paint);
542 ~SkDrawTextRSXformCommand() override { delete[] fText; delete[] fXform; }
543 void execute(SkCanvas* canvas) const override;
544 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
reed45561a02016-07-07 12:47:17 -0700545
546private:
Brian Osman8363be12018-05-29 13:38:07 -0400547 char* fText;
548 size_t fByteLength;
549 SkRSXform* fXform;
550 SkTLazy<SkRect> fCull;
551 SkPaint fPaint;
reed45561a02016-07-07 12:47:17 -0700552
553 typedef SkDrawCommand INHERITED;
554};
555
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000556class SkDrawPosTextHCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000557public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000558 SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[],
559 SkScalar constY, const SkPaint& paint);
Brian Salomond3b65972017-03-22 12:05:03 -0400560 ~SkDrawPosTextHCommand() override { delete [] fXpos; delete [] fText; }
mtklein36352bf2015-03-25 18:17:31 -0700561 void execute(SkCanvas* canvas) const override;
bungeman51190df2016-03-09 07:42:54 -0800562 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800563
chudy@google.com902ebe52012-06-29 14:21:22 +0000564private:
robertphillips@google.coma3a09ab2013-03-22 12:25:30 +0000565 SkScalar* fXpos;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000566 char* fText;
567 size_t fByteLength;
568 SkScalar fConstY;
569 SkPaint fPaint;
robertphillips@google.com91217d02013-03-17 18:33:46 +0000570
571 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000572};
573
fmalitab7425172014-08-26 07:56:44 -0700574class SkDrawTextBlobCommand : public SkDrawCommand {
575public:
fmalita37283c22016-09-13 10:00:23 -0700576 SkDrawTextBlobCommand(sk_sp<SkTextBlob> blob, SkScalar x, SkScalar y, const SkPaint& paint);
fmalitab7425172014-08-26 07:56:44 -0700577
mtklein36352bf2015-03-25 18:17:31 -0700578 void execute(SkCanvas* canvas) const override;
579 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800580 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
fmalitab7425172014-08-26 07:56:44 -0700581
582private:
fmalita37283c22016-09-13 10:00:23 -0700583 sk_sp<SkTextBlob> fBlob;
584 SkScalar fXPos;
585 SkScalar fYPos;
586 SkPaint fPaint;
fmalitab7425172014-08-26 07:56:44 -0700587
588 typedef SkDrawCommand INHERITED;
589};
590
robertphillips9bafc302015-02-13 11:13:00 -0800591class SkDrawPatchCommand : public SkDrawCommand {
592public:
593 SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4],
Mike Reed7d954ad2016-10-28 15:42:34 -0400594 const SkPoint texCoords[4], SkBlendMode bmode,
robertphillips9bafc302015-02-13 11:13:00 -0800595 const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700596 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800597 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips9bafc302015-02-13 11:13:00 -0800598
599private:
600 SkPoint fCubics[12];
ethannicholas1446a9a2016-02-10 14:05:02 -0800601 SkColor* fColorsPtr;
602 SkColor fColors[4];
603 SkPoint* fTexCoordsPtr;
604 SkPoint fTexCoords[4];
Mike Reed7d954ad2016-10-28 15:42:34 -0400605 SkBlendMode fBlendMode;
robertphillips9bafc302015-02-13 11:13:00 -0800606 SkPaint fPaint;
607
608 typedef SkDrawCommand INHERITED;
609};
610
611
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000612class SkDrawRectCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000613public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000614 SkDrawRectCommand(const SkRect& rect, const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700615 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800616 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips@google.comfebc0ec2013-03-11 22:53:11 +0000617
chudy@google.com902ebe52012-06-29 14:21:22 +0000618private:
robertphillips@google.com91217d02013-03-17 18:33:46 +0000619 SkRect fRect;
620 SkPaint fPaint;
621
622 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000623};
624
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000625class SkDrawRRectCommand : public SkDrawCommand {
robertphillips@google.com67baba42013-01-02 20:20:31 +0000626public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000627 SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700628 void execute(SkCanvas* canvas) const override;
629 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800630 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800631
robertphillips@google.com67baba42013-01-02 20:20:31 +0000632private:
633 SkRRect fRRect;
robertphillips@google.comfebc0ec2013-03-11 22:53:11 +0000634 SkPaint fPaint;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000635
636 typedef SkDrawCommand INHERITED;
robertphillips@google.com67baba42013-01-02 20:20:31 +0000637};
638
commit-bot@chromium.org3d305202014-02-24 17:28:55 +0000639class SkDrawDRRectCommand : public SkDrawCommand {
640public:
641 SkDrawDRRectCommand(const SkRRect& outer, const SkRRect& inner,
642 const SkPaint& paint);
mtklein36352bf2015-03-25 18:17:31 -0700643 void execute(SkCanvas* canvas) const override;
644 bool render(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800645 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800646
commit-bot@chromium.org3d305202014-02-24 17:28:55 +0000647private:
648 SkRRect fOuter;
649 SkRRect fInner;
650 SkPaint fPaint;
651
652 typedef SkDrawCommand INHERITED;
653};
654
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000655class SkDrawVerticesCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000656public:
Mike Reedfed9cfd2017-03-17 12:09:04 -0400657 SkDrawVerticesCommand(sk_sp<SkVertices>, SkBlendMode, const SkPaint&);
658
mtklein36352bf2015-03-25 18:17:31 -0700659 void execute(SkCanvas* canvas) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800660
chudy@google.com902ebe52012-06-29 14:21:22 +0000661private:
Mike Reedfed9cfd2017-03-17 12:09:04 -0400662 sk_sp<SkVertices> fVertices;
663 SkBlendMode fBlendMode;
664 SkPaint fPaint;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000665
666 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000667};
668
Brian Osman616f1cb2018-05-29 11:23:35 -0400669class SkDrawAtlasCommand : public SkDrawCommand {
670public:
671 SkDrawAtlasCommand(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int,
672 SkBlendMode, const SkRect*, const SkPaint*);
673
674 void execute(SkCanvas* canvas) const override;
675
676private:
677 sk_sp<const SkImage> fImage;
678 SkTDArray<SkRSXform> fXform;
679 SkTDArray<SkRect> fTex;
680 SkTDArray<SkColor> fColors;
681 SkBlendMode fBlendMode;
682 SkTLazy<SkRect> fCull;
683 SkTLazy<SkPaint> fPaint;
684
685 typedef SkDrawCommand INHERITED;
686};
687
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000688class SkSaveCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000689public:
Florin Malita5f6102d2014-06-30 10:13:28 -0400690 SkSaveCommand();
mtklein36352bf2015-03-25 18:17:31 -0700691 void execute(SkCanvas* canvas) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800692
chudy@google.com902ebe52012-06-29 14:21:22 +0000693private:
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000694 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000695};
696
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000697class SkSaveLayerCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000698public:
reed4960eee2015-12-18 07:09:18 -0800699 SkSaveLayerCommand(const SkCanvas::SaveLayerRec&);
mtklein36352bf2015-03-25 18:17:31 -0700700 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800701 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
robertphillips@google.com3b0a9fe2013-01-31 15:56:22 +0000702
chudy@google.com902ebe52012-06-29 14:21:22 +0000703private:
Brian Osman8363be12018-05-29 13:38:07 -0400704 SkTLazy<SkRect> fBounds;
705 SkTLazy<SkPaint> fPaint;
706 sk_sp<const SkImageFilter> fBackdrop;
707 uint32_t fSaveLayerFlags;
robertphillips@google.com24bfdac2013-03-22 16:33:31 +0000708
709 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000710};
711
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000712class SkSetMatrixCommand : public SkDrawCommand {
chudy@google.com902ebe52012-06-29 14:21:22 +0000713public:
commit-bot@chromium.org7a115912013-06-18 20:20:55 +0000714 SkSetMatrixCommand(const SkMatrix& matrix);
mtklein36352bf2015-03-25 18:17:31 -0700715 void execute(SkCanvas* canvas) const override;
ethannicholasf62a8b72016-02-11 10:35:21 -0800716 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
ethannicholas50a8dd02016-02-10 05:40:46 -0800717
chudy@google.com902ebe52012-06-29 14:21:22 +0000718private:
robertphillips@google.comb94b1e72013-02-19 21:00:26 +0000719 SkMatrix fMatrix;
robertphillips@google.com0df2a9a2013-03-25 11:50:42 +0000720
721 typedef SkDrawCommand INHERITED;
chudy@google.com902ebe52012-06-29 14:21:22 +0000722};
Derek Sollenberger6aab2ab2018-04-12 12:45:58 -0400723
724class SkDrawShadowCommand : public SkDrawCommand {
725public:
726 SkDrawShadowCommand(const SkPath& path, const SkDrawShadowRec& rec);
727 void execute(SkCanvas* canvas) const override;
728 bool render(SkCanvas* canvas) const override;
729 Json::Value toJSON(UrlDataManager& urlDataManager) const override;
Derek Sollenberger6aab2ab2018-04-12 12:45:58 -0400730
731private:
732 SkPath fPath;
733 SkDrawShadowRec fShadowRec;
734
735 typedef SkDrawCommand INHERITED;
736};
chudy@google.com902ebe52012-06-29 14:21:22 +0000737#endif
vjiaoblacke6f5d562016-08-25 06:30:23 -0700738