1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2012 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef SKDRAWCOMMAND_H_ 9cb93a386Sopenharmony_ci#define SKDRAWCOMMAND_H_ 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/core/SkBitmap.h" 12cb93a386Sopenharmony_ci#include "include/core/SkCanvas.h" 13cb93a386Sopenharmony_ci#include "include/core/SkFlattenable.h" 14cb93a386Sopenharmony_ci#include "include/core/SkPath.h" 15cb93a386Sopenharmony_ci#include "include/core/SkRRect.h" 16cb93a386Sopenharmony_ci#include "include/core/SkRSXform.h" 17cb93a386Sopenharmony_ci#include "include/core/SkRegion.h" 18cb93a386Sopenharmony_ci#include "include/core/SkString.h" 19cb93a386Sopenharmony_ci#include "include/core/SkVertices.h" 20cb93a386Sopenharmony_ci#include "include/private/SkTDArray.h" 21cb93a386Sopenharmony_ci#include "src/core/SkDrawShadowInfo.h" 22cb93a386Sopenharmony_ci#include "src/core/SkTLazy.h" 23cb93a386Sopenharmony_ci#include "src/utils/SkJSONWriter.h" 24cb93a386Sopenharmony_ci#include "tools/UrlDataManager.h" 25cb93a386Sopenharmony_ci 26cb93a386Sopenharmony_ciclass DebugLayerManager; 27cb93a386Sopenharmony_ci 28cb93a386Sopenharmony_ciclass DrawCommand { 29cb93a386Sopenharmony_cipublic: 30cb93a386Sopenharmony_ci enum OpType { 31cb93a386Sopenharmony_ci kBeginDrawPicture_OpType, 32cb93a386Sopenharmony_ci kClear_OpType, 33cb93a386Sopenharmony_ci kClipPath_OpType, 34cb93a386Sopenharmony_ci kClipRegion_OpType, 35cb93a386Sopenharmony_ci kClipRect_OpType, 36cb93a386Sopenharmony_ci kClipRRect_OpType, 37cb93a386Sopenharmony_ci kClipShader_OpType, 38cb93a386Sopenharmony_ci kResetClip_OpType, 39cb93a386Sopenharmony_ci kConcat_OpType, 40cb93a386Sopenharmony_ci kConcat44_OpType, 41cb93a386Sopenharmony_ci kDrawAnnotation_OpType, 42cb93a386Sopenharmony_ci kDrawBitmap_OpType, 43cb93a386Sopenharmony_ci kDrawBitmapRect_OpType, 44cb93a386Sopenharmony_ci kDrawDRRect_OpType, 45cb93a386Sopenharmony_ci kDrawImage_OpType, 46cb93a386Sopenharmony_ci kDrawImageLattice_OpType, 47cb93a386Sopenharmony_ci kDrawImageRect_OpType, 48cb93a386Sopenharmony_ci kDrawImageRectLayer_OpType, // unique to DebugCanvas 49cb93a386Sopenharmony_ci kDrawOval_OpType, 50cb93a386Sopenharmony_ci kDrawArc_OpType, 51cb93a386Sopenharmony_ci kDrawPaint_OpType, 52cb93a386Sopenharmony_ci kDrawPatch_OpType, 53cb93a386Sopenharmony_ci kDrawPath_OpType, 54cb93a386Sopenharmony_ci kDrawPoints_OpType, 55cb93a386Sopenharmony_ci kDrawRect_OpType, 56cb93a386Sopenharmony_ci kDrawRRect_OpType, 57cb93a386Sopenharmony_ci kDrawRegion_OpType, 58cb93a386Sopenharmony_ci kDrawShadow_OpType, 59cb93a386Sopenharmony_ci kDrawTextBlob_OpType, 60cb93a386Sopenharmony_ci kDrawVertices_OpType, 61cb93a386Sopenharmony_ci kDrawAtlas_OpType, 62cb93a386Sopenharmony_ci kDrawDrawable_OpType, 63cb93a386Sopenharmony_ci kDrawEdgeAAQuad_OpType, 64cb93a386Sopenharmony_ci kDrawEdgeAAImageSet_OpType, 65cb93a386Sopenharmony_ci kEndDrawPicture_OpType, 66cb93a386Sopenharmony_ci kRestore_OpType, 67cb93a386Sopenharmony_ci kSave_OpType, 68cb93a386Sopenharmony_ci kSaveLayer_OpType, 69cb93a386Sopenharmony_ci kSetMatrix_OpType, 70cb93a386Sopenharmony_ci kSetM44_OpType, 71cb93a386Sopenharmony_ci 72cb93a386Sopenharmony_ci kLast_OpType = kSetM44_OpType 73cb93a386Sopenharmony_ci }; 74cb93a386Sopenharmony_ci 75cb93a386Sopenharmony_ci static const int kOpTypeCount = kLast_OpType + 1; 76cb93a386Sopenharmony_ci 77cb93a386Sopenharmony_ci static void WritePNG(SkBitmap bitmap, SkWStream& out); 78cb93a386Sopenharmony_ci 79cb93a386Sopenharmony_ci DrawCommand(OpType opType); 80cb93a386Sopenharmony_ci 81cb93a386Sopenharmony_ci virtual ~DrawCommand() {} 82cb93a386Sopenharmony_ci 83cb93a386Sopenharmony_ci bool isVisible() const { return fVisible; } 84cb93a386Sopenharmony_ci 85cb93a386Sopenharmony_ci void setVisible(bool toggle) { fVisible = toggle; } 86cb93a386Sopenharmony_ci 87cb93a386Sopenharmony_ci virtual void execute(SkCanvas*) const = 0; 88cb93a386Sopenharmony_ci 89cb93a386Sopenharmony_ci virtual bool render(SkCanvas* canvas) const { return false; } 90cb93a386Sopenharmony_ci 91cb93a386Sopenharmony_ci virtual void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const; 92cb93a386Sopenharmony_ci 93cb93a386Sopenharmony_ci static const char* GetCommandString(OpType type); 94cb93a386Sopenharmony_ci 95cb93a386Sopenharmony_ci // Helper methods for converting things to JSON 96cb93a386Sopenharmony_ci static void MakeJsonColor(SkJSONWriter&, const SkColor color); 97cb93a386Sopenharmony_ci static void MakeJsonColor4f(SkJSONWriter&, const SkColor4f& color); 98cb93a386Sopenharmony_ci static void MakeJsonPoint(SkJSONWriter&, const SkPoint& point); 99cb93a386Sopenharmony_ci static void MakeJsonPoint(SkJSONWriter&, SkScalar x, SkScalar y); 100cb93a386Sopenharmony_ci static void MakeJsonPoint3(SkJSONWriter&, const SkPoint3& point); 101cb93a386Sopenharmony_ci static void MakeJsonRect(SkJSONWriter&, const SkRect& rect); 102cb93a386Sopenharmony_ci static void MakeJsonIRect(SkJSONWriter&, const SkIRect&); 103cb93a386Sopenharmony_ci static void MakeJsonMatrix(SkJSONWriter&, const SkMatrix&); 104cb93a386Sopenharmony_ci static void MakeJsonMatrix44(SkJSONWriter&, const SkM44&); 105cb93a386Sopenharmony_ci static void MakeJsonPath(SkJSONWriter&, const SkPath& path); 106cb93a386Sopenharmony_ci static void MakeJsonRegion(SkJSONWriter&, const SkRegion& region); 107cb93a386Sopenharmony_ci static void MakeJsonPaint(SkJSONWriter&, const SkPaint& paint, UrlDataManager& urlDataManager); 108cb93a386Sopenharmony_ci static void MakeJsonLattice(SkJSONWriter&, const SkCanvas::Lattice& lattice); 109cb93a386Sopenharmony_ci 110cb93a386Sopenharmony_ci static void flatten(const SkFlattenable* flattenable, 111cb93a386Sopenharmony_ci SkJSONWriter& writer, 112cb93a386Sopenharmony_ci UrlDataManager& urlDataManager); 113cb93a386Sopenharmony_ci static bool flatten(const SkImage& image, SkJSONWriter& writer, UrlDataManager& urlDataManager); 114cb93a386Sopenharmony_ci static bool flatten(const SkBitmap& bitmap, 115cb93a386Sopenharmony_ci SkJSONWriter& writer, 116cb93a386Sopenharmony_ci UrlDataManager& urlDataManager); 117cb93a386Sopenharmony_ci OpType getOpType() const { return fOpType; } 118cb93a386Sopenharmony_ci 119cb93a386Sopenharmony_ciprivate: 120cb93a386Sopenharmony_ci OpType fOpType; 121cb93a386Sopenharmony_ci bool fVisible; 122cb93a386Sopenharmony_ci}; 123cb93a386Sopenharmony_ci 124cb93a386Sopenharmony_ciclass RestoreCommand : public DrawCommand { 125cb93a386Sopenharmony_cipublic: 126cb93a386Sopenharmony_ci RestoreCommand(); 127cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 128cb93a386Sopenharmony_ci 129cb93a386Sopenharmony_ciprivate: 130cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 131cb93a386Sopenharmony_ci}; 132cb93a386Sopenharmony_ci 133cb93a386Sopenharmony_ciclass ClearCommand : public DrawCommand { 134cb93a386Sopenharmony_cipublic: 135cb93a386Sopenharmony_ci ClearCommand(SkColor color); 136cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 137cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 138cb93a386Sopenharmony_ci 139cb93a386Sopenharmony_ciprivate: 140cb93a386Sopenharmony_ci SkColor fColor; 141cb93a386Sopenharmony_ci 142cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 143cb93a386Sopenharmony_ci}; 144cb93a386Sopenharmony_ci 145cb93a386Sopenharmony_ciclass ClipPathCommand : public DrawCommand { 146cb93a386Sopenharmony_cipublic: 147cb93a386Sopenharmony_ci ClipPathCommand(const SkPath& path, SkClipOp op, bool doAA); 148cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 149cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 150cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 151cb93a386Sopenharmony_ci 152cb93a386Sopenharmony_ciprivate: 153cb93a386Sopenharmony_ci SkPath fPath; 154cb93a386Sopenharmony_ci SkClipOp fOp; 155cb93a386Sopenharmony_ci bool fDoAA; 156cb93a386Sopenharmony_ci 157cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 158cb93a386Sopenharmony_ci}; 159cb93a386Sopenharmony_ci 160cb93a386Sopenharmony_ciclass ClipRegionCommand : public DrawCommand { 161cb93a386Sopenharmony_cipublic: 162cb93a386Sopenharmony_ci ClipRegionCommand(const SkRegion& region, SkClipOp op); 163cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 164cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 165cb93a386Sopenharmony_ci 166cb93a386Sopenharmony_ciprivate: 167cb93a386Sopenharmony_ci SkRegion fRegion; 168cb93a386Sopenharmony_ci SkClipOp fOp; 169cb93a386Sopenharmony_ci 170cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 171cb93a386Sopenharmony_ci}; 172cb93a386Sopenharmony_ci 173cb93a386Sopenharmony_ciclass ClipRectCommand : public DrawCommand { 174cb93a386Sopenharmony_cipublic: 175cb93a386Sopenharmony_ci ClipRectCommand(const SkRect& rect, SkClipOp op, bool doAA); 176cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 177cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 178cb93a386Sopenharmony_ci 179cb93a386Sopenharmony_ciprivate: 180cb93a386Sopenharmony_ci SkRect fRect; 181cb93a386Sopenharmony_ci SkClipOp fOp; 182cb93a386Sopenharmony_ci bool fDoAA; 183cb93a386Sopenharmony_ci 184cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 185cb93a386Sopenharmony_ci}; 186cb93a386Sopenharmony_ci 187cb93a386Sopenharmony_ciclass ClipRRectCommand : public DrawCommand { 188cb93a386Sopenharmony_cipublic: 189cb93a386Sopenharmony_ci ClipRRectCommand(const SkRRect& rrect, SkClipOp op, bool doAA); 190cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 191cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 192cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 193cb93a386Sopenharmony_ci 194cb93a386Sopenharmony_ciprivate: 195cb93a386Sopenharmony_ci SkRRect fRRect; 196cb93a386Sopenharmony_ci SkClipOp fOp; 197cb93a386Sopenharmony_ci bool fDoAA; 198cb93a386Sopenharmony_ci 199cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 200cb93a386Sopenharmony_ci}; 201cb93a386Sopenharmony_ci 202cb93a386Sopenharmony_ciclass ClipShaderCommand : public DrawCommand { 203cb93a386Sopenharmony_cipublic: 204cb93a386Sopenharmony_ci ClipShaderCommand(sk_sp<SkShader>, SkClipOp); 205cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 206cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 207cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 208cb93a386Sopenharmony_ci 209cb93a386Sopenharmony_ciprivate: 210cb93a386Sopenharmony_ci sk_sp<SkShader> fShader; 211cb93a386Sopenharmony_ci SkClipOp fOp; 212cb93a386Sopenharmony_ci 213cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 214cb93a386Sopenharmony_ci}; 215cb93a386Sopenharmony_ci 216cb93a386Sopenharmony_ciclass ResetClipCommand : public DrawCommand { 217cb93a386Sopenharmony_cipublic: 218cb93a386Sopenharmony_ci ResetClipCommand(); 219cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 220cb93a386Sopenharmony_ci 221cb93a386Sopenharmony_ciprivate: 222cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 223cb93a386Sopenharmony_ci}; 224cb93a386Sopenharmony_ci 225cb93a386Sopenharmony_ciclass ConcatCommand : public DrawCommand { 226cb93a386Sopenharmony_cipublic: 227cb93a386Sopenharmony_ci ConcatCommand(const SkMatrix& matrix); 228cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 229cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 230cb93a386Sopenharmony_ci 231cb93a386Sopenharmony_ciprivate: 232cb93a386Sopenharmony_ci SkMatrix fMatrix; 233cb93a386Sopenharmony_ci 234cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 235cb93a386Sopenharmony_ci}; 236cb93a386Sopenharmony_ci 237cb93a386Sopenharmony_ciclass Concat44Command : public DrawCommand { 238cb93a386Sopenharmony_cipublic: 239cb93a386Sopenharmony_ci Concat44Command(const SkM44& matrix); 240cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 241cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 242cb93a386Sopenharmony_ci 243cb93a386Sopenharmony_ciprivate: 244cb93a386Sopenharmony_ci SkM44 fMatrix; 245cb93a386Sopenharmony_ci 246cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 247cb93a386Sopenharmony_ci}; 248cb93a386Sopenharmony_ci 249cb93a386Sopenharmony_ciclass DrawAnnotationCommand : public DrawCommand { 250cb93a386Sopenharmony_cipublic: 251cb93a386Sopenharmony_ci DrawAnnotationCommand(const SkRect&, const char key[], sk_sp<SkData> value); 252cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 253cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 254cb93a386Sopenharmony_ci 255cb93a386Sopenharmony_ciprivate: 256cb93a386Sopenharmony_ci SkRect fRect; 257cb93a386Sopenharmony_ci SkString fKey; 258cb93a386Sopenharmony_ci sk_sp<SkData> fValue; 259cb93a386Sopenharmony_ci 260cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 261cb93a386Sopenharmony_ci}; 262cb93a386Sopenharmony_ci 263cb93a386Sopenharmony_ciclass DrawImageCommand : public DrawCommand { 264cb93a386Sopenharmony_cipublic: 265cb93a386Sopenharmony_ci DrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, 266cb93a386Sopenharmony_ci const SkSamplingOptions&, const SkPaint* paint); 267cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 268cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 269cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 270cb93a386Sopenharmony_ci uint64_t imageId(UrlDataManager& udb) const; 271cb93a386Sopenharmony_ci 272cb93a386Sopenharmony_ciprivate: 273cb93a386Sopenharmony_ci sk_sp<const SkImage> fImage; 274cb93a386Sopenharmony_ci SkScalar fLeft; 275cb93a386Sopenharmony_ci SkScalar fTop; 276cb93a386Sopenharmony_ci SkSamplingOptions fSampling; 277cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 278cb93a386Sopenharmony_ci 279cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 280cb93a386Sopenharmony_ci}; 281cb93a386Sopenharmony_ci 282cb93a386Sopenharmony_ciclass DrawImageLatticeCommand : public DrawCommand { 283cb93a386Sopenharmony_cipublic: 284cb93a386Sopenharmony_ci DrawImageLatticeCommand(const SkImage* image, 285cb93a386Sopenharmony_ci const SkCanvas::Lattice& lattice, 286cb93a386Sopenharmony_ci const SkRect& dst, 287cb93a386Sopenharmony_ci SkFilterMode, 288cb93a386Sopenharmony_ci const SkPaint* paint); 289cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 290cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 291cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 292cb93a386Sopenharmony_ci uint64_t imageId(UrlDataManager& udb) const; 293cb93a386Sopenharmony_ci 294cb93a386Sopenharmony_ciprivate: 295cb93a386Sopenharmony_ci sk_sp<const SkImage> fImage; 296cb93a386Sopenharmony_ci SkCanvas::Lattice fLattice; 297cb93a386Sopenharmony_ci SkRect fDst; 298cb93a386Sopenharmony_ci SkFilterMode fFilter; 299cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 300cb93a386Sopenharmony_ci 301cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 302cb93a386Sopenharmony_ci}; 303cb93a386Sopenharmony_ci 304cb93a386Sopenharmony_ciclass DrawImageRectCommand : public DrawCommand { 305cb93a386Sopenharmony_cipublic: 306cb93a386Sopenharmony_ci DrawImageRectCommand(const SkImage* image, 307cb93a386Sopenharmony_ci const SkRect& src, 308cb93a386Sopenharmony_ci const SkRect& dst, 309cb93a386Sopenharmony_ci const SkSamplingOptions& sampling, 310cb93a386Sopenharmony_ci const SkPaint* paint, 311cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint constraint); 312cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 313cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 314cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 315cb93a386Sopenharmony_ci uint64_t imageId(UrlDataManager& udm) const; 316cb93a386Sopenharmony_ci 317cb93a386Sopenharmony_ciprivate: 318cb93a386Sopenharmony_ci sk_sp<const SkImage> fImage; 319cb93a386Sopenharmony_ci SkRect fSrc; 320cb93a386Sopenharmony_ci SkRect fDst; 321cb93a386Sopenharmony_ci SkSamplingOptions fSampling; 322cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 323cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint fConstraint; 324cb93a386Sopenharmony_ci 325cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 326cb93a386Sopenharmony_ci}; 327cb93a386Sopenharmony_ci 328cb93a386Sopenharmony_ci// Command for resolving the deferred SkImage representing an android layer 329cb93a386Sopenharmony_ci// Functions like DrawImageRect except it uses the saved UrlDataManager to resolve the image 330cb93a386Sopenharmony_ci// at the time execute() is called. 331cb93a386Sopenharmony_ciclass DrawImageRectLayerCommand : public DrawCommand { 332cb93a386Sopenharmony_cipublic: 333cb93a386Sopenharmony_ci DrawImageRectLayerCommand(DebugLayerManager* layerManager, 334cb93a386Sopenharmony_ci const int nodeId, 335cb93a386Sopenharmony_ci const int frame, 336cb93a386Sopenharmony_ci const SkRect& src, 337cb93a386Sopenharmony_ci const SkRect& dst, 338cb93a386Sopenharmony_ci const SkSamplingOptions& sampling, 339cb93a386Sopenharmony_ci const SkPaint* paint, 340cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint constraint); 341cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 342cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 343cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 344cb93a386Sopenharmony_ci 345cb93a386Sopenharmony_ciprivate: 346cb93a386Sopenharmony_ci DebugLayerManager* fLayerManager; 347cb93a386Sopenharmony_ci int fNodeId; 348cb93a386Sopenharmony_ci int fFrame; 349cb93a386Sopenharmony_ci SkRect fSrc; 350cb93a386Sopenharmony_ci SkRect fDst; 351cb93a386Sopenharmony_ci SkSamplingOptions fSampling; 352cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 353cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint fConstraint; 354cb93a386Sopenharmony_ci 355cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 356cb93a386Sopenharmony_ci}; 357cb93a386Sopenharmony_ci 358cb93a386Sopenharmony_ciclass DrawOvalCommand : public DrawCommand { 359cb93a386Sopenharmony_cipublic: 360cb93a386Sopenharmony_ci DrawOvalCommand(const SkRect& oval, const SkPaint& paint); 361cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 362cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 363cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 364cb93a386Sopenharmony_ci 365cb93a386Sopenharmony_ciprivate: 366cb93a386Sopenharmony_ci SkRect fOval; 367cb93a386Sopenharmony_ci SkPaint fPaint; 368cb93a386Sopenharmony_ci 369cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 370cb93a386Sopenharmony_ci}; 371cb93a386Sopenharmony_ci 372cb93a386Sopenharmony_ciclass DrawArcCommand : public DrawCommand { 373cb93a386Sopenharmony_cipublic: 374cb93a386Sopenharmony_ci DrawArcCommand(const SkRect& oval, 375cb93a386Sopenharmony_ci SkScalar startAngle, 376cb93a386Sopenharmony_ci SkScalar sweepAngle, 377cb93a386Sopenharmony_ci bool useCenter, 378cb93a386Sopenharmony_ci const SkPaint& paint); 379cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 380cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 381cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 382cb93a386Sopenharmony_ci 383cb93a386Sopenharmony_ciprivate: 384cb93a386Sopenharmony_ci SkRect fOval; 385cb93a386Sopenharmony_ci SkScalar fStartAngle; 386cb93a386Sopenharmony_ci SkScalar fSweepAngle; 387cb93a386Sopenharmony_ci bool fUseCenter; 388cb93a386Sopenharmony_ci SkPaint fPaint; 389cb93a386Sopenharmony_ci 390cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 391cb93a386Sopenharmony_ci}; 392cb93a386Sopenharmony_ci 393cb93a386Sopenharmony_ciclass DrawPaintCommand : public DrawCommand { 394cb93a386Sopenharmony_cipublic: 395cb93a386Sopenharmony_ci DrawPaintCommand(const SkPaint& paint); 396cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 397cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 398cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 399cb93a386Sopenharmony_ci 400cb93a386Sopenharmony_ciprivate: 401cb93a386Sopenharmony_ci SkPaint fPaint; 402cb93a386Sopenharmony_ci 403cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 404cb93a386Sopenharmony_ci}; 405cb93a386Sopenharmony_ci 406cb93a386Sopenharmony_ciclass DrawBehindCommand : public DrawCommand { 407cb93a386Sopenharmony_cipublic: 408cb93a386Sopenharmony_ci DrawBehindCommand(const SkPaint& paint); 409cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 410cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 411cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 412cb93a386Sopenharmony_ci 413cb93a386Sopenharmony_ciprivate: 414cb93a386Sopenharmony_ci SkPaint fPaint; 415cb93a386Sopenharmony_ci 416cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 417cb93a386Sopenharmony_ci}; 418cb93a386Sopenharmony_ci 419cb93a386Sopenharmony_ciclass DrawPathCommand : public DrawCommand { 420cb93a386Sopenharmony_cipublic: 421cb93a386Sopenharmony_ci DrawPathCommand(const SkPath& path, const SkPaint& paint); 422cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 423cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 424cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 425cb93a386Sopenharmony_ci 426cb93a386Sopenharmony_ciprivate: 427cb93a386Sopenharmony_ci SkPath fPath; 428cb93a386Sopenharmony_ci SkPaint fPaint; 429cb93a386Sopenharmony_ci 430cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 431cb93a386Sopenharmony_ci}; 432cb93a386Sopenharmony_ci 433cb93a386Sopenharmony_ciclass BeginDrawPictureCommand : public DrawCommand { 434cb93a386Sopenharmony_cipublic: 435cb93a386Sopenharmony_ci BeginDrawPictureCommand(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint); 436cb93a386Sopenharmony_ci 437cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 438cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 439cb93a386Sopenharmony_ci 440cb93a386Sopenharmony_ciprivate: 441cb93a386Sopenharmony_ci sk_sp<const SkPicture> fPicture; 442cb93a386Sopenharmony_ci SkTLazy<SkMatrix> fMatrix; 443cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 444cb93a386Sopenharmony_ci 445cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 446cb93a386Sopenharmony_ci}; 447cb93a386Sopenharmony_ci 448cb93a386Sopenharmony_ciclass EndDrawPictureCommand : public DrawCommand { 449cb93a386Sopenharmony_cipublic: 450cb93a386Sopenharmony_ci EndDrawPictureCommand(bool restore); 451cb93a386Sopenharmony_ci 452cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 453cb93a386Sopenharmony_ci 454cb93a386Sopenharmony_ciprivate: 455cb93a386Sopenharmony_ci bool fRestore; 456cb93a386Sopenharmony_ci 457cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 458cb93a386Sopenharmony_ci}; 459cb93a386Sopenharmony_ci 460cb93a386Sopenharmony_ciclass DrawPointsCommand : public DrawCommand { 461cb93a386Sopenharmony_cipublic: 462cb93a386Sopenharmony_ci DrawPointsCommand(SkCanvas::PointMode mode, 463cb93a386Sopenharmony_ci size_t count, 464cb93a386Sopenharmony_ci const SkPoint pts[], 465cb93a386Sopenharmony_ci const SkPaint& paint); 466cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 467cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 468cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 469cb93a386Sopenharmony_ci 470cb93a386Sopenharmony_ciprivate: 471cb93a386Sopenharmony_ci SkCanvas::PointMode fMode; 472cb93a386Sopenharmony_ci SkTDArray<SkPoint> fPts; 473cb93a386Sopenharmony_ci SkPaint fPaint; 474cb93a386Sopenharmony_ci 475cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 476cb93a386Sopenharmony_ci}; 477cb93a386Sopenharmony_ci 478cb93a386Sopenharmony_ciclass DrawRegionCommand : public DrawCommand { 479cb93a386Sopenharmony_cipublic: 480cb93a386Sopenharmony_ci DrawRegionCommand(const SkRegion& region, const SkPaint& paint); 481cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 482cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 483cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 484cb93a386Sopenharmony_ci 485cb93a386Sopenharmony_ciprivate: 486cb93a386Sopenharmony_ci SkRegion fRegion; 487cb93a386Sopenharmony_ci SkPaint fPaint; 488cb93a386Sopenharmony_ci 489cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 490cb93a386Sopenharmony_ci}; 491cb93a386Sopenharmony_ci 492cb93a386Sopenharmony_ciclass DrawTextBlobCommand : public DrawCommand { 493cb93a386Sopenharmony_cipublic: 494cb93a386Sopenharmony_ci DrawTextBlobCommand(sk_sp<SkTextBlob> blob, SkScalar x, SkScalar y, const SkPaint& paint); 495cb93a386Sopenharmony_ci 496cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 497cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 498cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 499cb93a386Sopenharmony_ci 500cb93a386Sopenharmony_ciprivate: 501cb93a386Sopenharmony_ci sk_sp<SkTextBlob> fBlob; 502cb93a386Sopenharmony_ci SkScalar fXPos; 503cb93a386Sopenharmony_ci SkScalar fYPos; 504cb93a386Sopenharmony_ci SkPaint fPaint; 505cb93a386Sopenharmony_ci 506cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 507cb93a386Sopenharmony_ci}; 508cb93a386Sopenharmony_ci 509cb93a386Sopenharmony_ciclass DrawPatchCommand : public DrawCommand { 510cb93a386Sopenharmony_cipublic: 511cb93a386Sopenharmony_ci DrawPatchCommand(const SkPoint cubics[12], 512cb93a386Sopenharmony_ci const SkColor colors[4], 513cb93a386Sopenharmony_ci const SkPoint texCoords[4], 514cb93a386Sopenharmony_ci SkBlendMode bmode, 515cb93a386Sopenharmony_ci const SkPaint& paint); 516cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 517cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 518cb93a386Sopenharmony_ci 519cb93a386Sopenharmony_ciprivate: 520cb93a386Sopenharmony_ci SkPoint fCubics[12]; 521cb93a386Sopenharmony_ci SkColor* fColorsPtr; 522cb93a386Sopenharmony_ci SkColor fColors[4]; 523cb93a386Sopenharmony_ci SkPoint* fTexCoordsPtr; 524cb93a386Sopenharmony_ci SkPoint fTexCoords[4]; 525cb93a386Sopenharmony_ci SkBlendMode fBlendMode; 526cb93a386Sopenharmony_ci SkPaint fPaint; 527cb93a386Sopenharmony_ci 528cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 529cb93a386Sopenharmony_ci}; 530cb93a386Sopenharmony_ci 531cb93a386Sopenharmony_ciclass DrawRectCommand : public DrawCommand { 532cb93a386Sopenharmony_cipublic: 533cb93a386Sopenharmony_ci DrawRectCommand(const SkRect& rect, const SkPaint& paint); 534cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 535cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 536cb93a386Sopenharmony_ci 537cb93a386Sopenharmony_ciprivate: 538cb93a386Sopenharmony_ci SkRect fRect; 539cb93a386Sopenharmony_ci SkPaint fPaint; 540cb93a386Sopenharmony_ci 541cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 542cb93a386Sopenharmony_ci}; 543cb93a386Sopenharmony_ci 544cb93a386Sopenharmony_ciclass DrawRRectCommand : public DrawCommand { 545cb93a386Sopenharmony_cipublic: 546cb93a386Sopenharmony_ci DrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); 547cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 548cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 549cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 550cb93a386Sopenharmony_ci 551cb93a386Sopenharmony_ciprivate: 552cb93a386Sopenharmony_ci SkRRect fRRect; 553cb93a386Sopenharmony_ci SkPaint fPaint; 554cb93a386Sopenharmony_ci 555cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 556cb93a386Sopenharmony_ci}; 557cb93a386Sopenharmony_ci 558cb93a386Sopenharmony_ciclass DrawDRRectCommand : public DrawCommand { 559cb93a386Sopenharmony_cipublic: 560cb93a386Sopenharmony_ci DrawDRRectCommand(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint); 561cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 562cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 563cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 564cb93a386Sopenharmony_ci 565cb93a386Sopenharmony_ciprivate: 566cb93a386Sopenharmony_ci SkRRect fOuter; 567cb93a386Sopenharmony_ci SkRRect fInner; 568cb93a386Sopenharmony_ci SkPaint fPaint; 569cb93a386Sopenharmony_ci 570cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 571cb93a386Sopenharmony_ci}; 572cb93a386Sopenharmony_ci 573cb93a386Sopenharmony_ciclass DrawVerticesCommand : public DrawCommand { 574cb93a386Sopenharmony_cipublic: 575cb93a386Sopenharmony_ci DrawVerticesCommand(sk_sp<SkVertices>, SkBlendMode, const SkPaint&); 576cb93a386Sopenharmony_ci 577cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 578cb93a386Sopenharmony_ci 579cb93a386Sopenharmony_ciprivate: 580cb93a386Sopenharmony_ci sk_sp<SkVertices> fVertices; 581cb93a386Sopenharmony_ci SkBlendMode fBlendMode; 582cb93a386Sopenharmony_ci SkPaint fPaint; 583cb93a386Sopenharmony_ci 584cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 585cb93a386Sopenharmony_ci}; 586cb93a386Sopenharmony_ci 587cb93a386Sopenharmony_ciclass DrawAtlasCommand : public DrawCommand { 588cb93a386Sopenharmony_cipublic: 589cb93a386Sopenharmony_ci DrawAtlasCommand(const SkImage*, 590cb93a386Sopenharmony_ci const SkRSXform[], 591cb93a386Sopenharmony_ci const SkRect[], 592cb93a386Sopenharmony_ci const SkColor[], 593cb93a386Sopenharmony_ci int, 594cb93a386Sopenharmony_ci SkBlendMode, 595cb93a386Sopenharmony_ci const SkSamplingOptions&, 596cb93a386Sopenharmony_ci const SkRect*, 597cb93a386Sopenharmony_ci const SkPaint*); 598cb93a386Sopenharmony_ci 599cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 600cb93a386Sopenharmony_ci 601cb93a386Sopenharmony_ciprivate: 602cb93a386Sopenharmony_ci sk_sp<const SkImage> fImage; 603cb93a386Sopenharmony_ci SkTDArray<SkRSXform> fXform; 604cb93a386Sopenharmony_ci SkTDArray<SkRect> fTex; 605cb93a386Sopenharmony_ci SkTDArray<SkColor> fColors; 606cb93a386Sopenharmony_ci SkBlendMode fBlendMode; 607cb93a386Sopenharmony_ci SkSamplingOptions fSampling; 608cb93a386Sopenharmony_ci SkTLazy<SkRect> fCull; 609cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 610cb93a386Sopenharmony_ci 611cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 612cb93a386Sopenharmony_ci}; 613cb93a386Sopenharmony_ci 614cb93a386Sopenharmony_ciclass SaveCommand : public DrawCommand { 615cb93a386Sopenharmony_cipublic: 616cb93a386Sopenharmony_ci SaveCommand(); 617cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 618cb93a386Sopenharmony_ci 619cb93a386Sopenharmony_ciprivate: 620cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 621cb93a386Sopenharmony_ci}; 622cb93a386Sopenharmony_ci 623cb93a386Sopenharmony_ciclass SaveLayerCommand : public DrawCommand { 624cb93a386Sopenharmony_cipublic: 625cb93a386Sopenharmony_ci SaveLayerCommand(const SkCanvas::SaveLayerRec&); 626cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 627cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 628cb93a386Sopenharmony_ci 629cb93a386Sopenharmony_ciprivate: 630cb93a386Sopenharmony_ci SkTLazy<SkRect> fBounds; 631cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 632cb93a386Sopenharmony_ci sk_sp<const SkImageFilter> fBackdrop; 633cb93a386Sopenharmony_ci uint32_t fSaveLayerFlags; 634cb93a386Sopenharmony_ci SkScalar fBackdropScale; 635cb93a386Sopenharmony_ci 636cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 637cb93a386Sopenharmony_ci}; 638cb93a386Sopenharmony_ci 639cb93a386Sopenharmony_ciclass SetMatrixCommand : public DrawCommand { 640cb93a386Sopenharmony_cipublic: 641cb93a386Sopenharmony_ci SetMatrixCommand(const SkMatrix& matrix); 642cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 643cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 644cb93a386Sopenharmony_ci 645cb93a386Sopenharmony_ciprivate: 646cb93a386Sopenharmony_ci SkMatrix fMatrix; 647cb93a386Sopenharmony_ci 648cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 649cb93a386Sopenharmony_ci}; 650cb93a386Sopenharmony_ci 651cb93a386Sopenharmony_ciclass SetM44Command : public DrawCommand { 652cb93a386Sopenharmony_cipublic: 653cb93a386Sopenharmony_ci SetM44Command(const SkM44& matrix); 654cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 655cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 656cb93a386Sopenharmony_ci 657cb93a386Sopenharmony_ciprivate: 658cb93a386Sopenharmony_ci SkM44 fMatrix; 659cb93a386Sopenharmony_ci 660cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 661cb93a386Sopenharmony_ci}; 662cb93a386Sopenharmony_ci 663cb93a386Sopenharmony_ciclass DrawShadowCommand : public DrawCommand { 664cb93a386Sopenharmony_cipublic: 665cb93a386Sopenharmony_ci DrawShadowCommand(const SkPath& path, const SkDrawShadowRec& rec); 666cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 667cb93a386Sopenharmony_ci bool render(SkCanvas* canvas) const override; 668cb93a386Sopenharmony_ci void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override; 669cb93a386Sopenharmony_ci 670cb93a386Sopenharmony_ciprivate: 671cb93a386Sopenharmony_ci SkPath fPath; 672cb93a386Sopenharmony_ci SkDrawShadowRec fShadowRec; 673cb93a386Sopenharmony_ci 674cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 675cb93a386Sopenharmony_ci}; 676cb93a386Sopenharmony_ci 677cb93a386Sopenharmony_ciclass DrawDrawableCommand : public DrawCommand { 678cb93a386Sopenharmony_cipublic: 679cb93a386Sopenharmony_ci DrawDrawableCommand(SkDrawable*, const SkMatrix*); 680cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 681cb93a386Sopenharmony_ci 682cb93a386Sopenharmony_ciprivate: 683cb93a386Sopenharmony_ci sk_sp<SkDrawable> fDrawable; 684cb93a386Sopenharmony_ci SkTLazy<SkMatrix> fMatrix; 685cb93a386Sopenharmony_ci 686cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 687cb93a386Sopenharmony_ci}; 688cb93a386Sopenharmony_ci 689cb93a386Sopenharmony_ciclass DrawEdgeAAQuadCommand : public DrawCommand { 690cb93a386Sopenharmony_cipublic: 691cb93a386Sopenharmony_ci DrawEdgeAAQuadCommand(const SkRect& rect, 692cb93a386Sopenharmony_ci const SkPoint clip[4], 693cb93a386Sopenharmony_ci SkCanvas::QuadAAFlags aa, 694cb93a386Sopenharmony_ci const SkColor4f& color, 695cb93a386Sopenharmony_ci SkBlendMode mode); 696cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 697cb93a386Sopenharmony_ci 698cb93a386Sopenharmony_ciprivate: 699cb93a386Sopenharmony_ci SkRect fRect; 700cb93a386Sopenharmony_ci SkPoint fClip[4]; 701cb93a386Sopenharmony_ci int fHasClip; 702cb93a386Sopenharmony_ci SkCanvas::QuadAAFlags fAA; 703cb93a386Sopenharmony_ci SkColor4f fColor; 704cb93a386Sopenharmony_ci SkBlendMode fMode; 705cb93a386Sopenharmony_ci 706cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 707cb93a386Sopenharmony_ci}; 708cb93a386Sopenharmony_ci 709cb93a386Sopenharmony_ciclass DrawEdgeAAImageSetCommand : public DrawCommand { 710cb93a386Sopenharmony_cipublic: 711cb93a386Sopenharmony_ci DrawEdgeAAImageSetCommand(const SkCanvas::ImageSetEntry[], 712cb93a386Sopenharmony_ci int count, 713cb93a386Sopenharmony_ci const SkPoint[], 714cb93a386Sopenharmony_ci const SkMatrix[], 715cb93a386Sopenharmony_ci const SkSamplingOptions&, 716cb93a386Sopenharmony_ci const SkPaint*, 717cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint); 718cb93a386Sopenharmony_ci void execute(SkCanvas* canvas) const override; 719cb93a386Sopenharmony_ci 720cb93a386Sopenharmony_ciprivate: 721cb93a386Sopenharmony_ci SkAutoTArray<SkCanvas::ImageSetEntry> fSet; 722cb93a386Sopenharmony_ci int fCount; 723cb93a386Sopenharmony_ci SkAutoTArray<SkPoint> fDstClips; 724cb93a386Sopenharmony_ci SkAutoTArray<SkMatrix> fPreViewMatrices; 725cb93a386Sopenharmony_ci SkSamplingOptions fSampling; 726cb93a386Sopenharmony_ci SkTLazy<SkPaint> fPaint; 727cb93a386Sopenharmony_ci SkCanvas::SrcRectConstraint fConstraint; 728cb93a386Sopenharmony_ci 729cb93a386Sopenharmony_ci using INHERITED = DrawCommand; 730cb93a386Sopenharmony_ci}; 731cb93a386Sopenharmony_ci#endif 732