| 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 | 
|---|