Try out scalar picture sizes

This paves the way for removing the 'fTile' parameter from SkPictureShader (although that should be a different CL). If we like this we could also move to providing an entire cull SkRect.

R=reed@google.com, mtklein@google.com, fmalita@google.com, fmalita@chromium.org

Author: robertphillips@google.com

Review URL: https://codereview.chromium.org/513983002
diff --git a/debugger/QT/SkGLWidget.cpp b/debugger/QT/SkGLWidget.cpp
index 602dc24..dece641 100644
--- a/debugger/QT/SkGLWidget.cpp
+++ b/debugger/QT/SkGLWidget.cpp
@@ -68,7 +68,7 @@
         fGpuDevice = SkGpuDevice::Create(curRenderTarget);
         fCanvas = new SkCanvas(fGpuDevice);
     }
-    fDebugger->resize(w, h);
+    fDebugger->setWindowSize(w, h);
     draw();
 }
 
diff --git a/debugger/QT/SkRasterWidget.cpp b/debugger/QT/SkRasterWidget.cpp
index 705fdf0..ad05d39 100644
--- a/debugger/QT/SkRasterWidget.cpp
+++ b/debugger/QT/SkRasterWidget.cpp
@@ -29,7 +29,7 @@
     SkSafeUnref(fDevice);
     fDevice = new SkBitmapDevice(fBitmap);
     fCanvas = new SkCanvas(fDevice);
-    fDebugger->resize(event->size().width(), event->size().height());
+    fDebugger->setWindowSize(event->size().width(), event->size().height());
     this->update();
 }
 
diff --git a/debugger/SkDebugger.cpp b/debugger/SkDebugger.cpp
index af6900c..fda8f9a 100644
--- a/debugger/SkDebugger.cpp
+++ b/debugger/SkDebugger.cpp
@@ -13,10 +13,8 @@
 
 SkDebugger::SkDebugger() {
     // Create this some other dynamic way?
-    fDebugCanvas = new SkDebugCanvas(100, 100);
+    fDebugCanvas = new SkDebugCanvas(0, 0);
     fPicture = NULL;
-    fPictureWidth = 0;
-    fPictureHeight = 0;
     fIndex = 0;
 }
 
@@ -27,23 +25,23 @@
 }
 
 void SkDebugger::loadPicture(SkPicture* picture) {
-    fPictureWidth = picture->width();
-    fPictureHeight = picture->height();
+    SkRefCnt_SafeAssign(fPicture, picture);
+
     delete fDebugCanvas;
-    fDebugCanvas = new SkDebugCanvas(fPictureWidth, fPictureHeight);
-    fDebugCanvas->setBounds(fPictureWidth, fPictureHeight);
+    fDebugCanvas = new SkDebugCanvas(SkScalarCeilToInt(this->pictureCull().width()), 
+                                     SkScalarCeilToInt(this->pictureCull().height()));
     fDebugCanvas->setPicture(picture);
     picture->draw(fDebugCanvas);
     fDebugCanvas->setPicture(NULL);
     fIndex = fDebugCanvas->getSize() - 1;
-    SkRefCnt_SafeAssign(fPicture, picture);
 }
 
 SkPicture* SkDebugger::copyPicture() {
     // We can't just call clone here since we want to removed the "deleted"
     // commands. Playing back will strip those out.
     SkPictureRecorder recorder;
-    SkCanvas* canvas = recorder.beginRecording(fPictureWidth, fPictureHeight, NULL, 0);
+    SkCanvas* canvas = recorder.beginRecording(this->pictureCull().width(), 
+                                               this->pictureCull().height());
 
     bool vizMode = fDebugCanvas->getMegaVizMode();
     fDebugCanvas->setMegaVizMode(false);
@@ -143,13 +141,15 @@
     totalStr.append("<br/>");
     overview->insert(0, totalStr);
 
+    overview->append("<br/>SkPicture L: ");
+    overview->appendScalar(this->pictureCull().fLeft);
+    overview->append(" T: ");
+    overview->appendScalar(this->pictureCull().fTop);
+    overview->append(" R: ");
+    overview->appendScalar(this->pictureCull().fRight);
+    overview->append(" B: ");
+    overview->appendScalar(this->pictureCull().fBottom);
     overview->append("<br/>");
-    overview->append("SkPicture Width: ");
-    overview->appendS32(pictureWidth());
-    overview->append("px<br/>");
-    overview->append("SkPicture Height: ");
-    overview->appendS32(pictureHeight());
-    overview->append("px");
 }
 
 void SkDebugger::getClipStackText(SkString* clipStack) {
diff --git a/debugger/SkDebugger.h b/debugger/SkDebugger.h
index ffb2953..9ad21e2 100644
--- a/debugger/SkDebugger.h
+++ b/debugger/SkDebugger.h
@@ -60,9 +60,7 @@
         fDebugCanvas->toggleFilter(on);
     }
 
-    void resize(int width, int height) {
-        fDebugCanvas->setBounds(width, height);
-    }
+    void setWindowSize(int width, int height) { fDebugCanvas->setWindowSize(width, height); }
 
     void loadPicture(SkPicture* picture);
 
@@ -93,12 +91,8 @@
         return fDebugCanvas->getCurrentClip();
     }
 
-    int pictureHeight() {
-        return fPictureHeight;
-    }
-
-    int pictureWidth() {
-        return fPictureWidth;
+    SkRect pictureCull() const   { 
+        return NULL == fPicture ? SkRect::MakeEmpty() : fPicture->cullRect();
     }
 
     int index() {
@@ -138,8 +132,6 @@
     SkDebugCanvas* fDebugCanvas;
     SkPicture* fPicture;
 
-    int fPictureWidth;
-    int fPictureHeight;
     int fIndex;
 };