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

changeset 0
6474c204b198
     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

mercurial