Add misc. optimizations to filter tool

https://codereview.appspot.com/7705043/



git-svn-id: http://skia.googlecode.com/svn/trunk@8087 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/SkDebugCanvas.cpp b/debugger/SkDebugCanvas.cpp
index 4e71bc3..e8589f3 100644
--- a/debugger/SkDebugCanvas.cpp
+++ b/debugger/SkDebugCanvas.cpp
@@ -226,6 +226,10 @@
     return fCommandVector;
 }
 
+SkTDArray <SkDrawCommand*>& SkDebugCanvas::getDrawCommands() {
+    return fCommandVector;
+}
+
 // TODO(chudy): Free command string memory.
 SkTArray<SkString>* SkDebugCanvas::getDrawCommandsAsStrings() const {
     SkTArray<SkString>* commandString = new SkTArray<SkString>(fCommandVector.count());
diff --git a/debugger/SkDebugCanvas.h b/debugger/SkDebugCanvas.h
index a29fe6a..5afc7fc 100644
--- a/debugger/SkDebugCanvas.h
+++ b/debugger/SkDebugCanvas.h
@@ -91,6 +91,12 @@
         Returns the vector of draw commands
      */
     const SkTDArray<SkDrawCommand*>& getDrawCommands() const;
+    
+    /**
+        Returns the vector of draw commands. Do not use this entry
+        point - it is going away!
+     */
+    SkTDArray<SkDrawCommand*>& getDrawCommands();
 
     /**
      * Returns the string vector of draw commands
diff --git a/debugger/SkDrawCommand.cpp b/debugger/SkDrawCommand.cpp
index 8ffcb4b..c85d8c9 100644
--- a/debugger/SkDrawCommand.cpp
+++ b/debugger/SkDrawCommand.cpp
@@ -394,7 +394,7 @@
 
 DrawRRect::DrawRRect(const SkRRect& rrect, const SkPaint& paint) {
     this->fRRect = rrect;
-    this->fPaint = &paint;
+    this->fPaint = paint;
     this->fDrawType = DRAW_RRECT;
 
     this->fInfo.push(SkObjectParser::RRectToString(rrect));
@@ -402,7 +402,7 @@
 }
 
 void DrawRRect::execute(SkCanvas* canvas) {
-    canvas->drawRRect(this->fRRect, *this->fPaint);
+    canvas->drawRRect(fRRect, fPaint);
 }
 
 DrawSprite::DrawSprite(const SkBitmap& bitmap, int left, int top,
diff --git a/debugger/SkDrawCommand.h b/debugger/SkDrawCommand.h
index c0c59e6..d06e7fe 100644
--- a/debugger/SkDrawCommand.h
+++ b/debugger/SkDrawCommand.h
@@ -92,6 +92,11 @@
 public:
     ClipRect(const SkRect& rect, SkRegion::Op op, bool doAA);
     virtual void execute(SkCanvas* canvas) SK_OVERRIDE;
+
+    const SkRect& rect() const { return *fRect; }
+    SkRegion::Op op() const { return fOp; }
+    bool doAA() const { return fDoAA; }
+
 private:
     const SkRect* fRect;
     SkRegion::Op fOp;
@@ -102,6 +107,11 @@
 public:
     ClipRRect(const SkRRect& rrect, SkRegion::Op op, bool doAA);
     virtual void execute(SkCanvas* canvas) SK_OVERRIDE;
+
+    const SkRRect& rrect() const { return fRRect; }
+    SkRegion::Op op() const { return fOp; }
+    bool doAA() const { return fDoAA; }
+
 private:
     SkRRect fRRect;
     SkRegion::Op fOp;
@@ -173,6 +183,8 @@
 
     void setPaint(const SkPaint& paint) { fPaint = paint; fPaintPtr = &fPaint; }
 
+    const SkRect& dstRect() { return *fDst; }
+
 private:
     const SkRect* fSrc;
     SkPaint fPaint;
@@ -298,6 +310,9 @@
 public:
     DrawRectC(const SkRect& rect, const SkPaint& paint);
     virtual void execute(SkCanvas* canvas) SK_OVERRIDE;
+
+    const SkRect& rect() const { return *fRect; }
+    const SkPaint* paint() const { return fPaint; }
 private:
     const SkRect* fRect;
     const SkPaint* fPaint;
@@ -309,7 +324,7 @@
     virtual void execute(SkCanvas* canvas) SK_OVERRIDE;
 private:
     SkRRect fRRect;
-    const SkPaint* fPaint;
+    SkPaint fPaint;
 };
 
 class DrawSprite : public SkDrawCommand {