180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc. 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SKDRAWCOMMAND_H_ 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SKDRAWCOMMAND_H_ 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkPictureFlat.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkCanvas.h" 1458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkString.h" 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SK_API SkDrawCommand { 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru /* TODO(chudy): Remove subclasses. */ 1958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawCommand(DrawType drawType); 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkDrawCommand(); 2180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual ~SkDrawCommand(); 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual SkString toString(); 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual const char* toCString() { 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return GetCommandString(fDrawType); 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool isVisible() const { 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru return fVisible; 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru void setVisible(bool toggle) { 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru fVisible = toggle; 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDArray<SkString*>* Info() {return &fInfo; }; 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas)=0; 40363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger /** Does nothing by default, but used by save() and restore()-type 41363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger subclassse to track unresolved save() calls. */ 42363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void trackSaveState(int* state) { }; 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru DrawType getType() { return fDrawType; }; 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const { return false; } 46363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 47363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger static const char* GetCommandString(DrawType type); 48363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprotected: 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru DrawType fDrawType; 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkTDArray<SkString*> fInfo; 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru bool fVisible; 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 5758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkRestoreCommand : public SkDrawCommand { 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 5958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkRestoreCommand(); 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 61363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void trackSaveState(int* state) SK_OVERRIDE; 62e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 63e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenbergerprivate: 64e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 6758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkClearCommand : public SkDrawCommand { 6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 6958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkClearCommand(SkColor color); 7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkColor fColor; 73e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 74e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 7758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkClipPathCommand : public SkDrawCommand { 7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 7958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkClipPathCommand(const SkPath& path, SkRegion::Op op, bool doAA); 8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 8158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 83e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPath fPath; 8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkRegion::Op fOp; 85e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger bool fDoAA; 86096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 87096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkDrawCommand INHERITED; 8880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 8980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 9058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkClipRegionCommand : public SkDrawCommand { 9180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 9258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkClipRegionCommand(const SkRegion& region, SkRegion::Op op); 9380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 9480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 95e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRegion fRegion; 9680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkRegion::Op fOp; 97e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 98e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 9980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 10080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 10158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkClipRectCommand : public SkDrawCommand { 10280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 10358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkClipRectCommand(const SkRect& rect, SkRegion::Op op, bool doAA); 10480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 105096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 106e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger const SkRect& rect() const { return fRect; } 107096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkRegion::Op op() const { return fOp; } 108096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger bool doAA() const { return fDoAA; } 109096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 11080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 111e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fRect; 11280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkRegion::Op fOp; 113e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger bool fDoAA; 114e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 115e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 11680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 11780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 11858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkClipRRectCommand : public SkDrawCommand { 119d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerpublic: 12058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkClipRRectCommand(const SkRRect& rrect, SkRegion::Op op, bool doAA); 121d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 12258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 123096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 124096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger const SkRRect& rrect() const { return fRRect; } 125096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkRegion::Op op() const { return fOp; } 126096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger bool doAA() const { return fDoAA; } 127096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 128d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerprivate: 129e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRRect fRRect; 130d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger SkRegion::Op fOp; 131e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger bool fDoAA; 132e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 133e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 134d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger}; 135d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 13658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkConcatCommand : public SkDrawCommand { 13780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 13858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkConcatCommand(const SkMatrix& matrix); 13980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 14080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 141e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkMatrix fMatrix; 142e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 143e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 14480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 14580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 14658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawBitmapCommand : public SkDrawCommand { 14780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 14858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, 14958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkPaint* paint); 15080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 15158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 15280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 153e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkBitmap fBitmap; 15480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fLeft; 15580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fTop; 156e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 157e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint* fPaintPtr; 158e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 159e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 16080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 16180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 16258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawBitmapMatrixCommand : public SkDrawCommand { 16380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 16458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawBitmapMatrixCommand(const SkBitmap& bitmap, const SkMatrix& matrix, 16558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkPaint* paint); 16680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 16758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 16880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 169e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkBitmap fBitmap; 170e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkMatrix fMatrix; 171e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 172e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint* fPaintPtr; 173e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 174e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 17580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 17680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 17758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawBitmapNineCommand : public SkDrawCommand { 17880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 17958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawBitmapNineCommand(const SkBitmap& bitmap, const SkIRect& center, 18058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& dst, const SkPaint* paint); 18180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 18258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 18380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 184e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkBitmap fBitmap; 185e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkIRect fCenter; 186e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fDst; 187e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 188e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint* fPaintPtr; 189e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 190e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 19180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 19280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 19358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawBitmapRectCommand : public SkDrawCommand { 19480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 19558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawBitmapRectCommand(const SkBitmap& bitmap, const SkRect* src, 19658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkRect& dst, const SkPaint* paint); 19780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 19858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 199d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 2007839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger const SkBitmap& bitmap() const { return fBitmap; } 2017839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 202d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger // The non-const 'paint' method allows modification of this object's 203d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger // SkPaint. For this reason the ctor and setPaint method make a local copy. 204d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger // The 'fPaintPtr' member acts a signal that the local SkPaint is valid 205d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger // (since only an SkPaint* is passed into the ctor). 206d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger const SkPaint* paint() const { return fPaintPtr; } 207d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger SkPaint* paint() { return fPaintPtr; } 208d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 209d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; } 210d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 211096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger const SkRect* srcRect() const { return fSrc.isEmpty() ? NULL : &fSrc; } 212096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger const SkRect& dstRect() const { return fDst; } 213096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 2147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger void setSrcRect(const SkRect& src) { fSrc = src; } 2157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger void setDstRect(const SkRect& dst) { fDst = dst; } 2167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 21780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 218096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkBitmap fBitmap; 219e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fSrc; 220e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fDst; 221e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 222e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint* fPaintPtr; 223096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 224096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkDrawCommand INHERITED; 22580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 22680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 22758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawDataCommand : public SkDrawCommand { 22880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 22958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawDataCommand(const void* data, size_t length); 23058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawDataCommand() { delete [] fData; } 23180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 23280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 2337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger char* fData; 23480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru size_t fLength; 2357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 2367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 23780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 23880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 23958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkBeginCommentGroupCommand : public SkDrawCommand { 240d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerpublic: 24158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkBeginCommentGroupCommand(const char* description); 24258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 24358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger canvas->beginCommentGroup(fDescription.c_str()); 24458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger }; 24558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprivate: 24658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkString fDescription; 24758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 24858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger typedef SkDrawCommand INHERITED; 24958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger}; 25058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 25158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkCommentCommand : public SkDrawCommand { 25258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerpublic: 25358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkCommentCommand(const char* kywd, const char* value); 25458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 25558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger canvas->addComment(fKywd.c_str(), fValue.c_str()); 25658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger }; 25758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprivate: 25858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkString fKywd; 25958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkString fValue; 26058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 26158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger typedef SkDrawCommand INHERITED; 26258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger}; 26358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 26458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkEndCommentGroupCommand : public SkDrawCommand { 26558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerpublic: 26658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkEndCommentGroupCommand(); 26758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE { 26858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger canvas->endCommentGroup(); 26958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger }; 27058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprivate: 27158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger typedef SkDrawCommand INHERITED; 27258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger}; 27358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger 27458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawOvalCommand : public SkDrawCommand { 27558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerpublic: 27658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawOvalCommand(const SkRect& oval, const SkPaint& paint); 277d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 27858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 279d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerprivate: 280e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fOval; 281e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 282e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 283e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 284d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger}; 285d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 28658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPaintCommand : public SkDrawCommand { 28780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 28858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPaintCommand(const SkPaint& paint); 28980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 29058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 29180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 292e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 293e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 294e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 29580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 29680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 29758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPathCommand : public SkDrawCommand { 29880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 29958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPathCommand(const SkPath& path, const SkPaint& paint); 30080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 30158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 302363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 30380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3047839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPath fPath; 3057839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 306096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 307096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkDrawCommand INHERITED; 30880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 30980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 31058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPictureCommand : public SkDrawCommand { 31180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 31258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPictureCommand(SkPicture& picture); 31380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 31480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPicture fPicture; 3167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 3177839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 31880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 31980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 32058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPointsCommand : public SkDrawCommand { 32180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 32258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPointsCommand(SkCanvas::PointMode mode, size_t count, const SkPoint pts[], 323e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger const SkPaint& paint); 32458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawPointsCommand() { delete [] fPts; } 32580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 32658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 32780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 32880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas::PointMode fMode; 329e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger size_t fCount; 330e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPoint* fPts; 331e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 332e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 333e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 33480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 33580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 33658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawTextCommand : public SkDrawCommand { 33780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 33858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawTextCommand(const void* text, size_t byteLength, SkScalar x, SkScalar y, 3397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger const SkPaint& paint); 34058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawTextCommand() { delete [] fText; } 34180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 34280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3437839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger char* fText; 3447839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger size_t fByteLength; 34580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fX; 34680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fY; 3477839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 3487839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 3497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 35080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 35180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 35258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPosTextCommand : public SkDrawCommand { 35380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 35458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPosTextCommand(const void* text, size_t byteLength, const SkPoint pos[], 35558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkPaint& paint); 35658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawPosTextCommand() { delete [] fPos; delete [] fText; } 35780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 35880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3597839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger char* fText; 3607839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger size_t fByteLength; 361e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPoint* fPos; 3627839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 3637839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 3647839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 36580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 36680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 36758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawTextOnPathCommand : public SkDrawCommand { 36880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 36958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawTextOnPathCommand(const void* text, size_t byteLength, const SkPath& path, 37058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkMatrix* matrix, const SkPaint& paint); 37158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawTextOnPathCommand() { delete [] fText; } 37280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 37380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 3747839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger char* fText; 3757839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger size_t fByteLength; 3767839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPath fPath; 3777839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkMatrix fMatrix; 3787839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 3797839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 3807839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 38180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 38280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 38358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawPosTextHCommand : public SkDrawCommand { 38480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 38558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawPosTextHCommand(const void* text, size_t byteLength, const SkScalar xpos[], 38658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkScalar constY, const SkPaint& paint); 38758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawPosTextHCommand() { delete [] fXpos; delete [] fText; } 38880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 38980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 390e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkScalar* fXpos; 3917839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger char* fText; 3927839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger size_t fByteLength; 3937839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkScalar fConstY; 3947839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 395096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 396096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkDrawCommand INHERITED; 39780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 39880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 39958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawRectCommand : public SkDrawCommand { 40080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 40158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawRectCommand(const SkRect& rect, const SkPaint& paint); 40280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 403096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 404096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger const SkRect& rect() const { return fRect; } 405096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger const SkPaint& paint() const { return fPaint; } 40680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 407096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkRect fRect; 408096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkPaint fPaint; 409096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 410096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger typedef SkDrawCommand INHERITED; 41180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 41280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 41358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawRRectCommand : public SkDrawCommand { 414d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerpublic: 41558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); 416d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 41758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 418d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenbergerprivate: 419d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger SkRRect fRRect; 420096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkPaint fPaint; 4217839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 4227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 423d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger}; 424d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 42558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawSpriteCommand : public SkDrawCommand { 42680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 42758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawSpriteCommand(const SkBitmap& bitmap, int left, int top, const SkPaint* paint); 42880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 42958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual bool render(SkCanvas* canvas) const SK_OVERRIDE; 43080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 4317839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkBitmap fBitmap; 4327839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int fLeft; 4337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int fTop; 4347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 4357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint* fPaintPtr; 4367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 4377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 43880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 43980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 44058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkDrawVerticesCommand : public SkDrawCommand { 44180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 44258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkDrawVerticesCommand(SkCanvas::VertexMode vmode, int vertexCount, 44358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkPoint vertices[], const SkPoint texs[], 44458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkColor colors[], SkXfermode* xfermode, 44558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const uint16_t indices[], int indexCount, 44658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger const SkPaint& paint); 44758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger virtual ~SkDrawVerticesCommand(); 44880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 44980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 45080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas::VertexMode fVmode; 4517839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int fVertexCount; 4527839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPoint* fVertices; 4537839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPoint* fTexs; 4547839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkColor* fColors; 45580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkXfermode* fXfermode; 4567839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger uint16_t* fIndices; 4577839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger int fIndexCount; 4587839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger SkPaint fPaint; 4597839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 4607839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 46180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 46280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 46358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkRotateCommand : public SkDrawCommand { 46480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 46558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkRotateCommand(SkScalar degrees); 46680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 46780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 46880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fDegrees; 4697839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 4707839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 47180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 47280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 47358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkSaveCommand : public SkDrawCommand { 47480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 47558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkSaveCommand(SkCanvas::SaveFlags flags); 47680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 477363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void trackSaveState(int* state) SK_OVERRIDE; 47880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 47980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas::SaveFlags fFlags; 480e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 481e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 48280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 48380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 48458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkSaveLayerCommand : public SkDrawCommand { 48580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 48658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkSaveLayerCommand(const SkRect* bounds, const SkPaint* paint, 48758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkCanvas::SaveFlags flags); 48880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 489363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger virtual void trackSaveState(int* state) SK_OVERRIDE; 490d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 491e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger const SkPaint* paint() const { return fPaintPtr; } 492d686ac77c2c485c4a3302eda9c1de597a6f8c568Derek Sollenberger 49380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 494e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkRect fBounds; 495e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint fPaint; 496e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger SkPaint* fPaintPtr; 49780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkCanvas::SaveFlags fFlags; 498e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger 499e2022cc36e47b9f0d219eb5cd24be61772c28d3bDerek Sollenberger typedef SkDrawCommand INHERITED; 50080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 50180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 50258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkScaleCommand : public SkDrawCommand { 50380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 50458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkScaleCommand(SkScalar sx, SkScalar sy); 50580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 506096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 507096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkScalar x() const { return fSx; } 508096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkScalar y() const { return fSy; } 509096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 51080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 51180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fSx; 51280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fSy; 5137839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 5147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 51580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 51680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 51758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkSetMatrixCommand : public SkDrawCommand { 51880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 51958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkSetMatrixCommand(const SkMatrix& matrix); 52080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 52180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 522096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkMatrix fMatrix; 5237839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 5247839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 52580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 52680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 52758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkSkewCommand : public SkDrawCommand { 52880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 52958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkSkewCommand(SkScalar sx, SkScalar sy); 53080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 53180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 53280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fSx; 53380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fSy; 5347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 5357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 53680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 53780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 53858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkTranslateCommand : public SkDrawCommand { 53980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querupublic: 54058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger SkTranslateCommand(SkScalar dx, SkScalar dy); 54180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru virtual void execute(SkCanvas* canvas) SK_OVERRIDE; 542096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 543096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkScalar x() const { return fDx; } 544096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger SkScalar y() const { return fDy; } 545096defe64d408e54474fe19f418c95bf1a554fc7Derek Sollenberger 54680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queruprivate: 54780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fDx; 54880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkScalar fDy; 5497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger 5507839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger typedef SkDrawCommand INHERITED; 55180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 55280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 55380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 554