1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/utils/debugger/SkDrawCommand.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,630 @@ 1.4 + 1.5 +/* 1.6 + * Copyright 2012 Google Inc. 1.7 + * 1.8 + * Use of this source code is governed by a BSD-style license that can be 1.9 + * found in the LICENSE file. 1.10 + */ 1.11 + 1.12 +#ifndef SKDRAWCOMMAND_H_ 1.13 +#define SKDRAWCOMMAND_H_ 1.14 + 1.15 +#include "SkPictureFlat.h" 1.16 +#include "SkCanvas.h" 1.17 +#include "SkString.h" 1.18 + 1.19 +class SK_API SkDrawCommand { 1.20 +public: 1.21 + /* TODO(chudy): Remove subclasses. */ 1.22 + SkDrawCommand(DrawType drawType); 1.23 + SkDrawCommand(); 1.24 + 1.25 + virtual ~SkDrawCommand(); 1.26 + 1.27 + virtual SkString toString(); 1.28 + 1.29 + virtual const char* toCString() { 1.30 + return GetCommandString(fDrawType); 1.31 + } 1.32 + 1.33 + bool isVisible() const { 1.34 + return fVisible; 1.35 + } 1.36 + 1.37 + void setVisible(bool toggle) { 1.38 + fVisible = toggle; 1.39 + } 1.40 + 1.41 + SkTDArray<SkString*>* Info() {return &fInfo; }; 1.42 + virtual void execute(SkCanvas* canvas) = 0; 1.43 + virtual void vizExecute(SkCanvas* canvas) { }; 1.44 + /** Does nothing by default, but used by save() and restore()-type 1.45 + subclasses to track unresolved save() calls. */ 1.46 + virtual void trackSaveState(int* state) { }; 1.47 + 1.48 + // The next "active" system is only used by save, saveLayer, restore, 1.49 + // pushCull and popCull. It is used in two ways: 1.50 + // To determine which saveLayers are currently active (at a 1.51 + // given point in the rendering). 1.52 + // save just return a kPushLayer action but don't track active state 1.53 + // restore just return a kPopLayer action 1.54 + // saveLayers return kPushLayer but also track the active state 1.55 + // To determine which culls are currently active (at a given point) 1.56 + // in the rendering). 1.57 + // pushCull returns a kPushCull action 1.58 + // popCull returns a kPopCull action 1.59 + enum Action { 1.60 + kNone_Action, 1.61 + kPopLayer_Action, 1.62 + kPushLayer_Action, 1.63 + kPopCull_Action, 1.64 + kPushCull_Action 1.65 + }; 1.66 + virtual Action action() const { return kNone_Action; } 1.67 + virtual void setActive(bool active) {} 1.68 + virtual bool active() const { return false; } 1.69 + 1.70 + DrawType getType() { return fDrawType; }; 1.71 + 1.72 + virtual bool render(SkCanvas* canvas) const { return false; } 1.73 + 1.74 + static const char* GetCommandString(DrawType type); 1.75 + 1.76 +protected: 1.77 + DrawType fDrawType; 1.78 + SkTDArray<SkString*> fInfo; 1.79 + 1.80 +private: 1.81 + bool fVisible; 1.82 +}; 1.83 + 1.84 +class SkRestoreCommand : public SkDrawCommand { 1.85 +public: 1.86 + SkRestoreCommand(); 1.87 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.88 + virtual void trackSaveState(int* state) SK_OVERRIDE; 1.89 + virtual Action action() const SK_OVERRIDE { return kPopLayer_Action; } 1.90 + 1.91 +private: 1.92 + typedef SkDrawCommand INHERITED; 1.93 +}; 1.94 + 1.95 +class SkClearCommand : public SkDrawCommand { 1.96 +public: 1.97 + SkClearCommand(SkColor color); 1.98 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.99 +private: 1.100 + SkColor fColor; 1.101 + 1.102 + typedef SkDrawCommand INHERITED; 1.103 +}; 1.104 + 1.105 +class SkClipPathCommand : public SkDrawCommand { 1.106 +public: 1.107 + SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA); 1.108 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.109 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.110 +private: 1.111 + SkPath fPath; 1.112 + SkRegion::Op fOp; 1.113 + bool fDoAA; 1.114 + 1.115 + typedef SkDrawCommand INHERITED; 1.116 +}; 1.117 + 1.118 +class SkClipRegionCommand : public SkDrawCommand { 1.119 +public: 1.120 + SkClipRegionCommand(const SkRegion& region, SkRegion::Op op); 1.121 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.122 +private: 1.123 + SkRegion fRegion; 1.124 + SkRegion::Op fOp; 1.125 + 1.126 + typedef SkDrawCommand INHERITED; 1.127 +}; 1.128 + 1.129 +class SkClipRectCommand : public SkDrawCommand { 1.130 +public: 1.131 + SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA); 1.132 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.133 + 1.134 + const SkRect& rect() const { return fRect; } 1.135 + SkRegion::Op op() const { return fOp; } 1.136 + bool doAA() const { return fDoAA; } 1.137 + 1.138 +private: 1.139 + SkRect fRect; 1.140 + SkRegion::Op fOp; 1.141 + bool fDoAA; 1.142 + 1.143 + typedef SkDrawCommand INHERITED; 1.144 +}; 1.145 + 1.146 +class SkClipRRectCommand : public SkDrawCommand { 1.147 +public: 1.148 + SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA); 1.149 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.150 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.151 + 1.152 + const SkRRect& rrect() const { return fRRect; } 1.153 + SkRegion::Op op() const { return fOp; } 1.154 + bool doAA() const { return fDoAA; } 1.155 + 1.156 +private: 1.157 + SkRRect fRRect; 1.158 + SkRegion::Op fOp; 1.159 + bool fDoAA; 1.160 + 1.161 + typedef SkDrawCommand INHERITED; 1.162 +}; 1.163 + 1.164 +class SkConcatCommand : public SkDrawCommand { 1.165 +public: 1.166 + SkConcatCommand(const SkMatrix& matrix); 1.167 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.168 +private: 1.169 + SkMatrix fMatrix; 1.170 + 1.171 + typedef SkDrawCommand INHERITED; 1.172 +}; 1.173 + 1.174 +class SkDrawBitmapCommand : public SkDrawCommand { 1.175 +public: 1.176 + SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, 1.177 + const SkPaint* paint); 1.178 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.179 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.180 +private: 1.181 + SkBitmap fBitmap; 1.182 + SkScalar fLeft; 1.183 + SkScalar fTop; 1.184 + SkPaint fPaint; 1.185 + SkPaint* fPaintPtr; 1.186 + 1.187 + typedef SkDrawCommand INHERITED; 1.188 +}; 1.189 + 1.190 +class SkDrawBitmapMatrixCommand : public SkDrawCommand { 1.191 +public: 1.192 + SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, const SkMatrix& matrix, 1.193 + const SkPaint* paint); 1.194 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.195 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.196 +private: 1.197 + SkBitmap fBitmap; 1.198 + SkMatrix fMatrix; 1.199 + SkPaint fPaint; 1.200 + SkPaint* fPaintPtr; 1.201 + 1.202 + typedef SkDrawCommand INHERITED; 1.203 +}; 1.204 + 1.205 +class SkDrawBitmapNineCommand : public SkDrawCommand { 1.206 +public: 1.207 + SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, 1.208 + const SkRect& dst, const SkPaint* paint); 1.209 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.210 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.211 +private: 1.212 + SkBitmap fBitmap; 1.213 + SkIRect fCenter; 1.214 + SkRect fDst; 1.215 + SkPaint fPaint; 1.216 + SkPaint* fPaintPtr; 1.217 + 1.218 + typedef SkDrawCommand INHERITED; 1.219 +}; 1.220 + 1.221 +class SkDrawBitmapRectCommand : public SkDrawCommand { 1.222 +public: 1.223 + SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, 1.224 + const SkRect& dst, const SkPaint* paint, 1.225 + SkCanvas::DrawBitmapRectFlags flags); 1.226 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.227 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.228 + 1.229 + const SkBitmap& bitmap() const { return fBitmap; } 1.230 + 1.231 + // The non-const 'paint' method allows modification of this object's 1.232 + // SkPaint. For this reason the ctor and setPaint method make a local copy. 1.233 + // The 'fPaintPtr' member acts a signal that the local SkPaint is valid 1.234 + // (since only an SkPaint* is passed into the ctor). 1.235 + const SkPaint* paint() const { return fPaintPtr; } 1.236 + SkPaint* paint() { return fPaintPtr; } 1.237 + 1.238 + void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } 1.239 + 1.240 + const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } 1.241 + void setSrcRect(const SkRect& src) { fSrc = src; } 1.242 + 1.243 + const SkRect& dstRect() const { return fDst; } 1.244 + void setDstRect(const SkRect& dst) { fDst = dst; } 1.245 + 1.246 + SkCanvas::DrawBitmapRectFlags flags() const { return fFlags; } 1.247 + void setFlags(SkCanvas::DrawBitmapRectFlags flags) { fFlags = flags; } 1.248 + 1.249 +private: 1.250 + SkBitmap fBitmap; 1.251 + SkRect fSrc; 1.252 + SkRect fDst; 1.253 + SkPaint fPaint; 1.254 + SkPaint* fPaintPtr; 1.255 + SkCanvas::DrawBitmapRectFlags fFlags; 1.256 + 1.257 + typedef SkDrawCommand INHERITED; 1.258 +}; 1.259 + 1.260 +class SkDrawDataCommand : public SkDrawCommand { 1.261 +public: 1.262 + SkDrawDataCommand(const void* data, size_t length); 1.263 + virtual ~SkDrawDataCommand() { delete [] fData; } 1.264 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.265 +private: 1.266 + char* fData; 1.267 + size_t fLength; 1.268 + 1.269 + typedef SkDrawCommand INHERITED; 1.270 +}; 1.271 + 1.272 +class SkBeginCommentGroupCommand : public SkDrawCommand { 1.273 +public: 1.274 + SkBeginCommentGroupCommand(const char* description); 1.275 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 1.276 + canvas->beginCommentGroup(fDescription.c_str()); 1.277 + }; 1.278 +private: 1.279 + SkString fDescription; 1.280 + 1.281 + typedef SkDrawCommand INHERITED; 1.282 +}; 1.283 + 1.284 +class SkCommentCommand : public SkDrawCommand { 1.285 +public: 1.286 + SkCommentCommand(const char* kywd, const char* value); 1.287 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 1.288 + canvas->addComment(fKywd.c_str(), fValue.c_str()); 1.289 + }; 1.290 +private: 1.291 + SkString fKywd; 1.292 + SkString fValue; 1.293 + 1.294 + typedef SkDrawCommand INHERITED; 1.295 +}; 1.296 + 1.297 +class SkEndCommentGroupCommand : public SkDrawCommand { 1.298 +public: 1.299 + SkEndCommentGroupCommand(); 1.300 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 1.301 + canvas->endCommentGroup(); 1.302 + }; 1.303 +private: 1.304 + typedef SkDrawCommand INHERITED; 1.305 +}; 1.306 + 1.307 +class SkDrawOvalCommand : public SkDrawCommand { 1.308 +public: 1.309 + SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint); 1.310 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.311 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.312 +private: 1.313 + SkRect fOval; 1.314 + SkPaint fPaint; 1.315 + 1.316 + typedef SkDrawCommand INHERITED; 1.317 +}; 1.318 + 1.319 +class SkDrawPaintCommand : public SkDrawCommand { 1.320 +public: 1.321 + SkDrawPaintCommand(const SkPaint& paint); 1.322 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.323 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.324 +private: 1.325 + SkPaint fPaint; 1.326 + 1.327 + typedef SkDrawCommand INHERITED; 1.328 +}; 1.329 + 1.330 +class SkDrawPathCommand : public SkDrawCommand { 1.331 +public: 1.332 + SkDrawPathCommand(const SkPath& path, const SkPaint& paint); 1.333 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.334 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.335 + 1.336 +private: 1.337 + SkPath fPath; 1.338 + SkPaint fPaint; 1.339 + 1.340 + typedef SkDrawCommand INHERITED; 1.341 +}; 1.342 + 1.343 +class SkDrawPictureCommand : public SkDrawCommand { 1.344 +public: 1.345 + SkDrawPictureCommand(SkPicture& picture); 1.346 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.347 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.348 + 1.349 +private: 1.350 + SkPicture fPicture; 1.351 + 1.352 + typedef SkDrawCommand INHERITED; 1.353 +}; 1.354 + 1.355 +class SkDrawPointsCommand : public SkDrawCommand { 1.356 +public: 1.357 + SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], 1.358 + const SkPaint& paint); 1.359 + virtual ~SkDrawPointsCommand() { delete [] fPts; } 1.360 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.361 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.362 +private: 1.363 + SkCanvas::PointMode fMode; 1.364 + size_t fCount; 1.365 + SkPoint* fPts; 1.366 + SkPaint fPaint; 1.367 + 1.368 + typedef SkDrawCommand INHERITED; 1.369 +}; 1.370 + 1.371 +class SkDrawTextCommand : public SkDrawCommand { 1.372 +public: 1.373 + SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y, 1.374 + const SkPaint& paint); 1.375 + virtual ~SkDrawTextCommand() { delete [] fText; } 1.376 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.377 +private: 1.378 + char* fText; 1.379 + size_t fByteLength; 1.380 + SkScalar fX; 1.381 + SkScalar fY; 1.382 + SkPaint fPaint; 1.383 + 1.384 + typedef SkDrawCommand INHERITED; 1.385 +}; 1.386 + 1.387 +class SkDrawPosTextCommand : public SkDrawCommand { 1.388 +public: 1.389 + SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[], 1.390 + const SkPaint& paint); 1.391 + virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; } 1.392 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.393 +private: 1.394 + char* fText; 1.395 + size_t fByteLength; 1.396 + SkPoint* fPos; 1.397 + SkPaint fPaint; 1.398 + 1.399 + typedef SkDrawCommand INHERITED; 1.400 +}; 1.401 + 1.402 +class SkDrawTextOnPathCommand : public SkDrawCommand { 1.403 +public: 1.404 + SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path, 1.405 + const SkMatrix* matrix, const SkPaint& paint); 1.406 + virtual ~SkDrawTextOnPathCommand() { delete [] fText; } 1.407 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.408 +private: 1.409 + char* fText; 1.410 + size_t fByteLength; 1.411 + SkPath fPath; 1.412 + SkMatrix fMatrix; 1.413 + SkPaint fPaint; 1.414 + 1.415 + typedef SkDrawCommand INHERITED; 1.416 +}; 1.417 + 1.418 +class SkDrawPosTextHCommand : public SkDrawCommand { 1.419 +public: 1.420 + SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[], 1.421 + SkScalar constY, const SkPaint& paint); 1.422 + virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; } 1.423 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.424 +private: 1.425 + SkScalar* fXpos; 1.426 + char* fText; 1.427 + size_t fByteLength; 1.428 + SkScalar fConstY; 1.429 + SkPaint fPaint; 1.430 + 1.431 + typedef SkDrawCommand INHERITED; 1.432 +}; 1.433 + 1.434 +class SkDrawRectCommand : public SkDrawCommand { 1.435 +public: 1.436 + SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); 1.437 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.438 + 1.439 + const SkRect& rect() const { return fRect; } 1.440 + const SkPaint& paint() const { return fPaint; } 1.441 +private: 1.442 + SkRect fRect; 1.443 + SkPaint fPaint; 1.444 + 1.445 + typedef SkDrawCommand INHERITED; 1.446 +}; 1.447 + 1.448 +class SkDrawRRectCommand : public SkDrawCommand { 1.449 +public: 1.450 + SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); 1.451 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.452 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.453 +private: 1.454 + SkRRect fRRect; 1.455 + SkPaint fPaint; 1.456 + 1.457 + typedef SkDrawCommand INHERITED; 1.458 +}; 1.459 + 1.460 +class SkDrawDRRectCommand : public SkDrawCommand { 1.461 +public: 1.462 + SkDrawDRRectCommand(const SkRRect& outer, const SkRRect& inner, 1.463 + const SkPaint& paint); 1.464 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.465 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.466 +private: 1.467 + SkRRect fOuter; 1.468 + SkRRect fInner; 1.469 + SkPaint fPaint; 1.470 + 1.471 + typedef SkDrawCommand INHERITED; 1.472 +}; 1.473 + 1.474 +class SkDrawSpriteCommand : public SkDrawCommand { 1.475 +public: 1.476 + SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int top, const SkPaint* paint); 1.477 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.478 + virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 1.479 +private: 1.480 + SkBitmap fBitmap; 1.481 + int fLeft; 1.482 + int fTop; 1.483 + SkPaint fPaint; 1.484 + SkPaint* fPaintPtr; 1.485 + 1.486 + typedef SkDrawCommand INHERITED; 1.487 +}; 1.488 + 1.489 +class SkDrawVerticesCommand : public SkDrawCommand { 1.490 +public: 1.491 + SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount, 1.492 + const SkPoint vertices[], const SkPoint texs[], 1.493 + const SkColor colors[], SkXfermode* xfermode, 1.494 + const uint16_t indices[], int indexCount, 1.495 + const SkPaint& paint); 1.496 + virtual ~SkDrawVerticesCommand(); 1.497 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.498 +private: 1.499 + SkCanvas::VertexMode fVmode; 1.500 + int fVertexCount; 1.501 + SkPoint* fVertices; 1.502 + SkPoint* fTexs; 1.503 + SkColor* fColors; 1.504 + SkXfermode* fXfermode; 1.505 + uint16_t* fIndices; 1.506 + int fIndexCount; 1.507 + SkPaint fPaint; 1.508 + 1.509 + typedef SkDrawCommand INHERITED; 1.510 +}; 1.511 + 1.512 +class SkRotateCommand : public SkDrawCommand { 1.513 +public: 1.514 + SkRotateCommand(SkScalar degrees); 1.515 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.516 +private: 1.517 + SkScalar fDegrees; 1.518 + 1.519 + typedef SkDrawCommand INHERITED; 1.520 +}; 1.521 + 1.522 +class SkSaveCommand : public SkDrawCommand { 1.523 +public: 1.524 + SkSaveCommand(SkCanvas::SaveFlags flags); 1.525 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.526 + virtual void trackSaveState(int* state) SK_OVERRIDE; 1.527 + virtual Action action() const SK_OVERRIDE { return kPushLayer_Action; } 1.528 +private: 1.529 + SkCanvas::SaveFlags fFlags; 1.530 + 1.531 + typedef SkDrawCommand INHERITED; 1.532 +}; 1.533 + 1.534 +class SkSaveLayerCommand : public SkDrawCommand { 1.535 +public: 1.536 + SkSaveLayerCommand(const SkRect* bounds, const SkPaint* paint, 1.537 + SkCanvas::SaveFlags flags); 1.538 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.539 + virtual void vizExecute(SkCanvas* canvas) SK_OVERRIDE; 1.540 + virtual void trackSaveState(int* state) SK_OVERRIDE; 1.541 + virtual Action action() const SK_OVERRIDE{ return kPushLayer_Action; } 1.542 + virtual void setActive(bool active) SK_OVERRIDE { fActive = active; } 1.543 + virtual bool active() const SK_OVERRIDE { return fActive; } 1.544 + 1.545 + const SkPaint* paint() const { return fPaintPtr; } 1.546 + 1.547 +private: 1.548 + SkRect fBounds; 1.549 + SkPaint fPaint; 1.550 + SkPaint* fPaintPtr; 1.551 + SkCanvas::SaveFlags fFlags; 1.552 + 1.553 + bool fActive; 1.554 + 1.555 + typedef SkDrawCommand INHERITED; 1.556 +}; 1.557 + 1.558 +class SkScaleCommand : public SkDrawCommand { 1.559 +public: 1.560 + SkScaleCommand(SkScalar sx, SkScalar sy); 1.561 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.562 + 1.563 + SkScalar x() const { return fSx; } 1.564 + SkScalar y() const { return fSy; } 1.565 + 1.566 +private: 1.567 + SkScalar fSx; 1.568 + SkScalar fSy; 1.569 + 1.570 + typedef SkDrawCommand INHERITED; 1.571 +}; 1.572 + 1.573 +class SkSetMatrixCommand : public SkDrawCommand { 1.574 +public: 1.575 + SkSetMatrixCommand(const SkMatrix& matrix); 1.576 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.577 +private: 1.578 + SkMatrix fMatrix; 1.579 + 1.580 + typedef SkDrawCommand INHERITED; 1.581 +}; 1.582 + 1.583 +class SkSkewCommand : public SkDrawCommand { 1.584 +public: 1.585 + SkSkewCommand(SkScalar sx, SkScalar sy); 1.586 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.587 +private: 1.588 + SkScalar fSx; 1.589 + SkScalar fSy; 1.590 + 1.591 + typedef SkDrawCommand INHERITED; 1.592 +}; 1.593 + 1.594 +class SkTranslateCommand : public SkDrawCommand { 1.595 +public: 1.596 + SkTranslateCommand(SkScalar dx, SkScalar dy); 1.597 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.598 + 1.599 + SkScalar x() const { return fDx; } 1.600 + SkScalar y() const { return fDy; } 1.601 + 1.602 +private: 1.603 + SkScalar fDx; 1.604 + SkScalar fDy; 1.605 + 1.606 + typedef SkDrawCommand INHERITED; 1.607 +}; 1.608 + 1.609 +class SkPushCullCommand : public SkDrawCommand { 1.610 +public: 1.611 + SkPushCullCommand(const SkRect&); 1.612 + virtual void execute(SkCanvas*) SK_OVERRIDE; 1.613 + virtual void vizExecute(SkCanvas* canvas) SK_OVERRIDE; 1.614 + virtual Action action() const { return kPushCull_Action; } 1.615 + virtual void setActive(bool active) { fActive = active; } 1.616 + virtual bool active() const { return fActive; } 1.617 +private: 1.618 + SkRect fCullRect; 1.619 + bool fActive; 1.620 + 1.621 + typedef SkDrawCommand INHERITED; 1.622 +}; 1.623 + 1.624 +class SkPopCullCommand : public SkDrawCommand { 1.625 +public: 1.626 + SkPopCullCommand(); 1.627 + virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 1.628 + virtual Action action() const { return kPopCull_Action; } 1.629 +private: 1.630 + typedef SkDrawCommand INHERITED; 1.631 +}; 1.632 + 1.633 +#endif