| OLD | NEW |
| (Empty) |
| 1 | |
| 2 /* | |
| 3 * Copyright 2012 Google Inc. | |
| 4 * | |
| 5 * Use of this source code is governed by a BSD-style license that can be | |
| 6 * found in the LICENSE file. | |
| 7 */ | |
| 8 | |
| 9 #ifndef SKDRAWCOMMAND_H_ | |
| 10 #define SKDRAWCOMMAND_H_ | |
| 11 | |
| 12 #include "SkCanvas.h" | |
| 13 #include "SkTLazy.h" | |
| 14 #include "SkPath.h" | |
| 15 #include "SkRRect.h" | |
| 16 #include "SkString.h" | |
| 17 #include "SkTDArray.h" | |
| 18 | |
| 19 class SK_API SkDrawCommand { | |
| 20 public: | |
| 21 enum OpType { | |
| 22 kBeginDrawPicture_OpType, | |
| 23 kClipPath_OpType, | |
| 24 kClipRegion_OpType, | |
| 25 kClipRect_OpType, | |
| 26 kClipRRect_OpType, | |
| 27 kConcat_OpType, | |
| 28 kDrawBitmap_OpType, | |
| 29 kDrawBitmapNine_OpType, | |
| 30 kDrawBitmapRect_OpType, | |
| 31 kDrawClear_OpType, | |
| 32 kDrawDRRect_OpType, | |
| 33 kDrawImage_OpType, | |
| 34 kDrawImageRect_OpType, | |
| 35 kDrawOval_OpType, | |
| 36 kDrawPaint_OpType, | |
| 37 kDrawPatch_OpType, | |
| 38 kDrawPath_OpType, | |
| 39 kDrawPoints_OpType, | |
| 40 kDrawPosText_OpType, | |
| 41 kDrawPosTextH_OpType, | |
| 42 kDrawRect_OpType, | |
| 43 kDrawRRect_OpType, | |
| 44 kDrawText_OpType, | |
| 45 kDrawTextBlob_OpType, | |
| 46 kDrawTextOnPath_OpType, | |
| 47 kDrawVertices_OpType, | |
| 48 kEndDrawPicture_OpType, | |
| 49 kRestore_OpType, | |
| 50 kSave_OpType, | |
| 51 kSaveLayer_OpType, | |
| 52 kSetMatrix_OpType, | |
| 53 | |
| 54 kLast_OpType = kSetMatrix_OpType | |
| 55 }; | |
| 56 | |
| 57 static const int kOpTypeCount = kLast_OpType + 1; | |
| 58 | |
| 59 SkDrawCommand(OpType opType); | |
| 60 | |
| 61 virtual ~SkDrawCommand(); | |
| 62 | |
| 63 virtual SkString toString() const; | |
| 64 | |
| 65 virtual const char* toCString() const { | |
| 66 return GetCommandString(fOpType); | |
| 67 } | |
| 68 | |
| 69 bool isVisible() const { | |
| 70 return fVisible; | |
| 71 } | |
| 72 | |
| 73 void setVisible(bool toggle) { | |
| 74 fVisible = toggle; | |
| 75 } | |
| 76 | |
| 77 const SkTDArray<SkString*>* Info() const { return &fInfo; } | |
| 78 virtual void execute(SkCanvas*) const = 0; | |
| 79 virtual void vizExecute(SkCanvas*) const {} | |
| 80 | |
| 81 virtual void setUserMatrix(const SkMatrix&) {} | |
| 82 | |
| 83 // The next "active" system is only used by save, saveLayer, and restore. | |
| 84 // It is used to determine which saveLayers are currently active (at a | |
| 85 // given point in the rendering). | |
| 86 // saves just return a kPushLayer action but don't track active state | |
| 87 // restores just return a kPopLayer action | |
| 88 // saveLayers return kPushLayer but also track the active state | |
| 89 enum Action { | |
| 90 kNone_Action, | |
| 91 kPopLayer_Action, | |
| 92 kPushLayer_Action, | |
| 93 }; | |
| 94 virtual Action action() const { return kNone_Action; } | |
| 95 virtual void setActive(bool active) {} | |
| 96 virtual bool active() const { return false; } | |
| 97 | |
| 98 OpType getType() const { return fOpType; } | |
| 99 | |
| 100 virtual bool render(SkCanvas* canvas) const { return false; } | |
| 101 | |
| 102 static const char* GetCommandString(OpType type); | |
| 103 | |
| 104 protected: | |
| 105 SkTDArray<SkString*> fInfo; | |
| 106 | |
| 107 private: | |
| 108 OpType fOpType; | |
| 109 bool fVisible; | |
| 110 }; | |
| 111 | |
| 112 class SkRestoreCommand : public SkDrawCommand { | |
| 113 public: | |
| 114 SkRestoreCommand(); | |
| 115 void execute(SkCanvas* canvas) const override; | |
| 116 Action action() const override { return kPopLayer_Action; } | |
| 117 | |
| 118 private: | |
| 119 typedef SkDrawCommand INHERITED; | |
| 120 }; | |
| 121 | |
| 122 class SkClearCommand : public SkDrawCommand { | |
| 123 public: | |
| 124 SkClearCommand(SkColor color); | |
| 125 void execute(SkCanvas* canvas) const override; | |
| 126 private: | |
| 127 SkColor fColor; | |
| 128 | |
| 129 typedef SkDrawCommand INHERITED; | |
| 130 }; | |
| 131 | |
| 132 class SkClipPathCommand : public SkDrawCommand { | |
| 133 public: | |
| 134 SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA); | |
| 135 void execute(SkCanvas* canvas) const override; | |
| 136 bool render(SkCanvas* canvas) const override; | |
| 137 private: | |
| 138 SkPath fPath; | |
| 139 SkRegion::Op fOp; | |
| 140 bool fDoAA; | |
| 141 | |
| 142 typedef SkDrawCommand INHERITED; | |
| 143 }; | |
| 144 | |
| 145 class SkClipRegionCommand : public SkDrawCommand { | |
| 146 public: | |
| 147 SkClipRegionCommand(const SkRegion& region, SkRegion::Op op); | |
| 148 void execute(SkCanvas* canvas) const override; | |
| 149 private: | |
| 150 SkRegion fRegion; | |
| 151 SkRegion::Op fOp; | |
| 152 | |
| 153 typedef SkDrawCommand INHERITED; | |
| 154 }; | |
| 155 | |
| 156 class SkClipRectCommand : public SkDrawCommand { | |
| 157 public: | |
| 158 SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA); | |
| 159 void execute(SkCanvas* canvas) const override; | |
| 160 | |
| 161 const SkRect& rect() const { return fRect; } | |
| 162 SkRegion::Op op() const { return fOp; } | |
| 163 bool doAA() const { return fDoAA; } | |
| 164 | |
| 165 private: | |
| 166 SkRect fRect; | |
| 167 SkRegion::Op fOp; | |
| 168 bool fDoAA; | |
| 169 | |
| 170 typedef SkDrawCommand INHERITED; | |
| 171 }; | |
| 172 | |
| 173 class SkClipRRectCommand : public SkDrawCommand { | |
| 174 public: | |
| 175 SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA); | |
| 176 void execute(SkCanvas* canvas) const override; | |
| 177 bool render(SkCanvas* canvas) const override; | |
| 178 | |
| 179 const SkRRect& rrect() const { return fRRect; } | |
| 180 SkRegion::Op op() const { return fOp; } | |
| 181 bool doAA() const { return fDoAA; } | |
| 182 | |
| 183 private: | |
| 184 SkRRect fRRect; | |
| 185 SkRegion::Op fOp; | |
| 186 bool fDoAA; | |
| 187 | |
| 188 typedef SkDrawCommand INHERITED; | |
| 189 }; | |
| 190 | |
| 191 class SkConcatCommand : public SkDrawCommand { | |
| 192 public: | |
| 193 SkConcatCommand(const SkMatrix& matrix); | |
| 194 void execute(SkCanvas* canvas) const override; | |
| 195 private: | |
| 196 SkMatrix fMatrix; | |
| 197 | |
| 198 typedef SkDrawCommand INHERITED; | |
| 199 }; | |
| 200 | |
| 201 class SkDrawBitmapCommand : public SkDrawCommand { | |
| 202 public: | |
| 203 SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, | |
| 204 const SkPaint* paint); | |
| 205 void execute(SkCanvas* canvas) const override; | |
| 206 bool render(SkCanvas* canvas) const override; | |
| 207 private: | |
| 208 SkBitmap fBitmap; | |
| 209 SkScalar fLeft; | |
| 210 SkScalar fTop; | |
| 211 SkPaint fPaint; | |
| 212 SkPaint* fPaintPtr; | |
| 213 | |
| 214 typedef SkDrawCommand INHERITED; | |
| 215 }; | |
| 216 | |
| 217 class SkDrawBitmapNineCommand : public SkDrawCommand { | |
| 218 public: | |
| 219 SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, | |
| 220 const SkRect& dst, const SkPaint* paint); | |
| 221 void execute(SkCanvas* canvas) const override; | |
| 222 bool render(SkCanvas* canvas) const override; | |
| 223 private: | |
| 224 SkBitmap fBitmap; | |
| 225 SkIRect fCenter; | |
| 226 SkRect fDst; | |
| 227 SkPaint fPaint; | |
| 228 SkPaint* fPaintPtr; | |
| 229 | |
| 230 typedef SkDrawCommand INHERITED; | |
| 231 }; | |
| 232 | |
| 233 class SkDrawBitmapRectCommand : public SkDrawCommand { | |
| 234 public: | |
| 235 SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, | |
| 236 const SkRect& dst, const SkPaint* paint, | |
| 237 SkCanvas::SrcRectConstraint); | |
| 238 void execute(SkCanvas* canvas) const override; | |
| 239 bool render(SkCanvas* canvas) const override; | |
| 240 | |
| 241 const SkBitmap& bitmap() const { return fBitmap; } | |
| 242 | |
| 243 // The non-const 'paint' method allows modification of this object's | |
| 244 // SkPaint. For this reason the ctor and setPaint method make a local copy. | |
| 245 // The 'fPaintPtr' member acts a signal that the local SkPaint is valid | |
| 246 // (since only an SkPaint* is passed into the ctor). | |
| 247 const SkPaint* paint() const { return fPaintPtr; } | |
| 248 SkPaint* paint() { return fPaintPtr; } | |
| 249 | |
| 250 void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } | |
| 251 | |
| 252 const SkRect* srcRect() const { return fSrc.isEmpty() ? nullptr : &fSrc; } | |
| 253 void setSrcRect(const SkRect& src) { fSrc = src; } | |
| 254 | |
| 255 const SkRect& dstRect() const { return fDst; } | |
| 256 void setDstRect(const SkRect& dst) { fDst = dst; } | |
| 257 | |
| 258 SkCanvas::SrcRectConstraint constraint() const { return fConstraint; } | |
| 259 void setConstraint(SkCanvas::SrcRectConstraint constraint) { fConstraint = c
onstraint; } | |
| 260 | |
| 261 private: | |
| 262 SkBitmap fBitmap; | |
| 263 SkRect fSrc; | |
| 264 SkRect fDst; | |
| 265 SkPaint fPaint; | |
| 266 SkPaint* fPaintPtr; | |
| 267 SkCanvas::SrcRectConstraint fConstraint; | |
| 268 | |
| 269 typedef SkDrawCommand INHERITED; | |
| 270 }; | |
| 271 | |
| 272 class SkDrawImageCommand : public SkDrawCommand { | |
| 273 public: | |
| 274 SkDrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, const
SkPaint* paint); | |
| 275 void execute(SkCanvas* canvas) const override; | |
| 276 bool render(SkCanvas* canvas) const override; | |
| 277 private: | |
| 278 SkAutoTUnref<const SkImage> fImage; | |
| 279 SkScalar fLeft; | |
| 280 SkScalar fTop; | |
| 281 SkTLazy<SkPaint> fPaint; | |
| 282 | |
| 283 typedef SkDrawCommand INHERITED; | |
| 284 }; | |
| 285 | |
| 286 class SkDrawImageRectCommand : public SkDrawCommand { | |
| 287 public: | |
| 288 SkDrawImageRectCommand(const SkImage* image, const SkRect* src, const SkRect
& dst, | |
| 289 const SkPaint* paint, SkCanvas::SrcRectConstraint con
straint); | |
| 290 void execute(SkCanvas* canvas) const override; | |
| 291 bool render(SkCanvas* canvas) const override; | |
| 292 private: | |
| 293 SkAutoTUnref<const SkImage> fImage; | |
| 294 SkTLazy<SkRect> fSrc; | |
| 295 SkRect fDst; | |
| 296 SkTLazy<SkPaint> fPaint; | |
| 297 SkCanvas::SrcRectConstraint fConstraint; | |
| 298 | |
| 299 typedef SkDrawCommand INHERITED; | |
| 300 }; | |
| 301 | |
| 302 class SkDrawOvalCommand : public SkDrawCommand { | |
| 303 public: | |
| 304 SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint); | |
| 305 void execute(SkCanvas* canvas) const override; | |
| 306 bool render(SkCanvas* canvas) const override; | |
| 307 private: | |
| 308 SkRect fOval; | |
| 309 SkPaint fPaint; | |
| 310 | |
| 311 typedef SkDrawCommand INHERITED; | |
| 312 }; | |
| 313 | |
| 314 class SkDrawPaintCommand : public SkDrawCommand { | |
| 315 public: | |
| 316 SkDrawPaintCommand(const SkPaint& paint); | |
| 317 void execute(SkCanvas* canvas) const override; | |
| 318 bool render(SkCanvas* canvas) const override; | |
| 319 private: | |
| 320 SkPaint fPaint; | |
| 321 | |
| 322 typedef SkDrawCommand INHERITED; | |
| 323 }; | |
| 324 | |
| 325 class SkDrawPathCommand : public SkDrawCommand { | |
| 326 public: | |
| 327 SkDrawPathCommand(const SkPath& path, const SkPaint& paint); | |
| 328 void execute(SkCanvas* canvas) const override; | |
| 329 bool render(SkCanvas* canvas) const override; | |
| 330 | |
| 331 private: | |
| 332 SkPath fPath; | |
| 333 SkPaint fPaint; | |
| 334 | |
| 335 typedef SkDrawCommand INHERITED; | |
| 336 }; | |
| 337 | |
| 338 class SkBeginDrawPictureCommand : public SkDrawCommand { | |
| 339 public: | |
| 340 SkBeginDrawPictureCommand(const SkPicture* picture, | |
| 341 const SkMatrix* matrix, | |
| 342 const SkPaint* paint); | |
| 343 | |
| 344 void execute(SkCanvas* canvas) const override; | |
| 345 bool render(SkCanvas* canvas) const override; | |
| 346 | |
| 347 private: | |
| 348 SkAutoTUnref<const SkPicture> fPicture; | |
| 349 SkTLazy<SkMatrix> fMatrix; | |
| 350 SkTLazy<SkPaint> fPaint; | |
| 351 | |
| 352 typedef SkDrawCommand INHERITED; | |
| 353 }; | |
| 354 | |
| 355 class SkEndDrawPictureCommand : public SkDrawCommand { | |
| 356 public: | |
| 357 SkEndDrawPictureCommand(bool restore); | |
| 358 | |
| 359 void execute(SkCanvas* canvas) const override; | |
| 360 | |
| 361 private: | |
| 362 bool fRestore; | |
| 363 | |
| 364 typedef SkDrawCommand INHERITED; | |
| 365 }; | |
| 366 | |
| 367 class SkDrawPointsCommand : public SkDrawCommand { | |
| 368 public: | |
| 369 SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pt
s[], | |
| 370 const SkPaint& paint); | |
| 371 virtual ~SkDrawPointsCommand() { delete [] fPts; } | |
| 372 void execute(SkCanvas* canvas) const override; | |
| 373 bool render(SkCanvas* canvas) const override; | |
| 374 private: | |
| 375 SkCanvas::PointMode fMode; | |
| 376 size_t fCount; | |
| 377 SkPoint* fPts; | |
| 378 SkPaint fPaint; | |
| 379 | |
| 380 typedef SkDrawCommand INHERITED; | |
| 381 }; | |
| 382 | |
| 383 class SkDrawTextCommand : public SkDrawCommand { | |
| 384 public: | |
| 385 SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar
y, | |
| 386 const SkPaint& paint); | |
| 387 virtual ~SkDrawTextCommand() { delete [] fText; } | |
| 388 void execute(SkCanvas* canvas) const override; | |
| 389 private: | |
| 390 char* fText; | |
| 391 size_t fByteLength; | |
| 392 SkScalar fX; | |
| 393 SkScalar fY; | |
| 394 SkPaint fPaint; | |
| 395 | |
| 396 typedef SkDrawCommand INHERITED; | |
| 397 }; | |
| 398 | |
| 399 class SkDrawPosTextCommand : public SkDrawCommand { | |
| 400 public: | |
| 401 SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[
], | |
| 402 const SkPaint& paint); | |
| 403 virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; } | |
| 404 void execute(SkCanvas* canvas) const override; | |
| 405 private: | |
| 406 char* fText; | |
| 407 size_t fByteLength; | |
| 408 SkPoint* fPos; | |
| 409 SkPaint fPaint; | |
| 410 | |
| 411 typedef SkDrawCommand INHERITED; | |
| 412 }; | |
| 413 | |
| 414 class SkDrawTextOnPathCommand : public SkDrawCommand { | |
| 415 public: | |
| 416 SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& p
ath, | |
| 417 const SkMatrix* matrix, const SkPaint& paint); | |
| 418 virtual ~SkDrawTextOnPathCommand() { delete [] fText; } | |
| 419 void execute(SkCanvas* canvas) const override; | |
| 420 private: | |
| 421 char* fText; | |
| 422 size_t fByteLength; | |
| 423 SkPath fPath; | |
| 424 SkMatrix fMatrix; | |
| 425 SkPaint fPaint; | |
| 426 | |
| 427 typedef SkDrawCommand INHERITED; | |
| 428 }; | |
| 429 | |
| 430 class SkDrawPosTextHCommand : public SkDrawCommand { | |
| 431 public: | |
| 432 SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xp
os[], | |
| 433 SkScalar constY, const SkPaint& paint); | |
| 434 virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; } | |
| 435 void execute(SkCanvas* canvas) const override; | |
| 436 private: | |
| 437 SkScalar* fXpos; | |
| 438 char* fText; | |
| 439 size_t fByteLength; | |
| 440 SkScalar fConstY; | |
| 441 SkPaint fPaint; | |
| 442 | |
| 443 typedef SkDrawCommand INHERITED; | |
| 444 }; | |
| 445 | |
| 446 class SkDrawTextBlobCommand : public SkDrawCommand { | |
| 447 public: | |
| 448 SkDrawTextBlobCommand(const SkTextBlob* blob, SkScalar x, SkScalar y, const
SkPaint& paint); | |
| 449 | |
| 450 void execute(SkCanvas* canvas) const override; | |
| 451 bool render(SkCanvas* canvas) const override; | |
| 452 | |
| 453 private: | |
| 454 SkAutoTUnref<const SkTextBlob> fBlob; | |
| 455 SkScalar fXPos; | |
| 456 SkScalar fYPos; | |
| 457 SkPaint fPaint; | |
| 458 | |
| 459 typedef SkDrawCommand INHERITED; | |
| 460 }; | |
| 461 | |
| 462 class SkDrawPatchCommand : public SkDrawCommand { | |
| 463 public: | |
| 464 SkDrawPatchCommand(const SkPoint cubics[12], const SkColor colors[4], | |
| 465 const SkPoint texCoords[4], SkXfermode* xmode, | |
| 466 const SkPaint& paint); | |
| 467 void execute(SkCanvas* canvas) const override; | |
| 468 | |
| 469 private: | |
| 470 SkPoint fCubics[12]; | |
| 471 SkColor fColors[4]; | |
| 472 SkPoint fTexCoords[4]; | |
| 473 SkAutoTUnref<SkXfermode> fXfermode; | |
| 474 SkPaint fPaint; | |
| 475 | |
| 476 typedef SkDrawCommand INHERITED; | |
| 477 }; | |
| 478 | |
| 479 | |
| 480 class SkDrawRectCommand : public SkDrawCommand { | |
| 481 public: | |
| 482 SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); | |
| 483 void execute(SkCanvas* canvas) const override; | |
| 484 | |
| 485 const SkRect& rect() const { return fRect; } | |
| 486 const SkPaint& paint() const { return fPaint; } | |
| 487 private: | |
| 488 SkRect fRect; | |
| 489 SkPaint fPaint; | |
| 490 | |
| 491 typedef SkDrawCommand INHERITED; | |
| 492 }; | |
| 493 | |
| 494 class SkDrawRRectCommand : public SkDrawCommand { | |
| 495 public: | |
| 496 SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); | |
| 497 void execute(SkCanvas* canvas) const override; | |
| 498 bool render(SkCanvas* canvas) const override; | |
| 499 private: | |
| 500 SkRRect fRRect; | |
| 501 SkPaint fPaint; | |
| 502 | |
| 503 typedef SkDrawCommand INHERITED; | |
| 504 }; | |
| 505 | |
| 506 class SkDrawDRRectCommand : public SkDrawCommand { | |
| 507 public: | |
| 508 SkDrawDRRectCommand(const SkRRect& outer, const SkRRect& inner, | |
| 509 const SkPaint& paint); | |
| 510 void execute(SkCanvas* canvas) const override; | |
| 511 bool render(SkCanvas* canvas) const override; | |
| 512 private: | |
| 513 SkRRect fOuter; | |
| 514 SkRRect fInner; | |
| 515 SkPaint fPaint; | |
| 516 | |
| 517 typedef SkDrawCommand INHERITED; | |
| 518 }; | |
| 519 | |
| 520 class SkDrawVerticesCommand : public SkDrawCommand { | |
| 521 public: | |
| 522 SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount, | |
| 523 const SkPoint vertices[], const SkPoint texs[], | |
| 524 const SkColor colors[], SkXfermode* xfermode, | |
| 525 const uint16_t indices[], int indexCount, | |
| 526 const SkPaint& paint); | |
| 527 virtual ~SkDrawVerticesCommand(); | |
| 528 void execute(SkCanvas* canvas) const override; | |
| 529 private: | |
| 530 SkCanvas::VertexMode fVmode; | |
| 531 int fVertexCount; | |
| 532 SkPoint* fVertices; | |
| 533 SkPoint* fTexs; | |
| 534 SkColor* fColors; | |
| 535 SkXfermode* fXfermode; | |
| 536 uint16_t* fIndices; | |
| 537 int fIndexCount; | |
| 538 SkPaint fPaint; | |
| 539 | |
| 540 typedef SkDrawCommand INHERITED; | |
| 541 }; | |
| 542 | |
| 543 class SkSaveCommand : public SkDrawCommand { | |
| 544 public: | |
| 545 SkSaveCommand(); | |
| 546 void execute(SkCanvas* canvas) const override; | |
| 547 Action action() const override { return kPushLayer_Action; } | |
| 548 private: | |
| 549 typedef SkDrawCommand INHERITED; | |
| 550 }; | |
| 551 | |
| 552 class SkSaveLayerCommand : public SkDrawCommand { | |
| 553 public: | |
| 554 SkSaveLayerCommand(const SkCanvas::SaveLayerRec&); | |
| 555 void execute(SkCanvas* canvas) const override; | |
| 556 void vizExecute(SkCanvas* canvas) const override; | |
| 557 Action action() const override{ return kPushLayer_Action; } | |
| 558 void setActive(bool active) override { fActive = active; } | |
| 559 bool active() const override { return fActive; } | |
| 560 | |
| 561 const SkPaint* paint() const { return fPaintPtr; } | |
| 562 | |
| 563 private: | |
| 564 SkRect fBounds; | |
| 565 SkPaint fPaint; | |
| 566 SkPaint* fPaintPtr; | |
| 567 uint32_t fSaveLayerFlags; | |
| 568 | |
| 569 bool fActive; | |
| 570 | |
| 571 typedef SkDrawCommand INHERITED; | |
| 572 }; | |
| 573 | |
| 574 class SkSetMatrixCommand : public SkDrawCommand { | |
| 575 public: | |
| 576 SkSetMatrixCommand(const SkMatrix& matrix); | |
| 577 void setUserMatrix(const SkMatrix&) override; | |
| 578 void execute(SkCanvas* canvas) const override; | |
| 579 private: | |
| 580 SkMatrix fUserMatrix; | |
| 581 SkMatrix fMatrix; | |
| 582 | |
| 583 typedef SkDrawCommand INHERITED; | |
| 584 }; | |
| 585 | |
| 586 #endif | |
| OLD | NEW |