Debugger improvements

This CL:
  improves the 'SaveAs' functionality
  allows switching between # and offset indexing in the command list
  minor nit cleanup

R=bsalomon@google.com

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/211383003

git-svn-id: http://skia.googlecode.com/svn/trunk@13950 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/debugger/SkDebugger.cpp b/debugger/SkDebugger.cpp
index f684dd8..82b26a1 100644
--- a/debugger/SkDebugger.cpp
+++ b/debugger/SkDebugger.cpp
@@ -31,7 +31,9 @@
     delete fDebugCanvas;
     fDebugCanvas = new SkDebugCanvas(fPictureWidth, fPictureHeight);
     fDebugCanvas->setBounds(fPictureWidth, fPictureHeight);
+    fDebugCanvas->setPicture(picture);
     picture->draw(fDebugCanvas);
+    fDebugCanvas->setPicture(NULL);
     fIndex = fDebugCanvas->getSize() - 1;
     SkRefCnt_SafeAssign(fPicture, picture);
 }
@@ -41,7 +43,25 @@
     // commands. Playing back will strip those out.
     SkPicture* newPicture = new SkPicture;
     SkCanvas* canvas = newPicture->beginRecording(fPictureWidth, fPictureHeight);
+
+    bool vizMode = fDebugCanvas->getMegaVizMode();
+    fDebugCanvas->setMegaVizMode(false);
+    bool overDraw = fDebugCanvas->getOverdrawViz();
+    fDebugCanvas->setOverdrawViz(false);
+    int saveCount = fDebugCanvas->getOutstandingSaveCount();
+    fDebugCanvas->setOutstandingSaveCount(0);
+
     fDebugCanvas->draw(canvas);
+
+    int temp = fDebugCanvas->getOutstandingSaveCount();
+    for (int i = 0; i < temp; ++i) {
+        canvas->restore();
+    }
+
+    fDebugCanvas->setMegaVizMode(vizMode);
+    fDebugCanvas->setOverdrawViz(overDraw);
+    fDebugCanvas->setOutstandingSaveCount(saveCount);
+
     newPicture->endRecording();
     return newPicture;
 }