gfx/skia/trunk/src/utils/debugger/SkDrawCommand.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

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

mercurial