Modifying SkTileGrid to support arbitrary query rectangles.
Exposing SkTileGrid functionality in the public API through SkTileGridPicture.
This patch also makes TileGrid and Rtree testable in gm, which revealed errors.

TEST=gm with '--tileGrid'
BUG=http://code.google.com/p/chromium/issues/detail?id=164636
Review URL: https://codereview.appspot.com/6933044

git-svn-id: http://skia.googlecode.com/svn/trunk@6783 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index 1f975cf..034e8fc 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -24,7 +24,7 @@
 #include "SkStream.h"
 #include "SkString.h"
 #include "SkTemplates.h"
-#include "SkTileGrid.h"
+#include "SkTileGridPicture.h"
 #include "SkTDArray.h"
 #include "SkThreadUtils.h"
 #include "SkTypes.h"
@@ -624,22 +624,6 @@
     }
 };
 
-class TileGridPicture : public SkPicture {
-public:
-    TileGridPicture(int tileWidth, int tileHeight, int xTileCount, int yTileCount) {
-        fTileWidth = tileWidth;
-        fTileHeight = tileHeight;
-        fXTileCount = xTileCount;
-        fYTileCount = yTileCount;
-    }
-
-    virtual SkBBoxHierarchy* createBBoxHierarchy() const SK_OVERRIDE{
-        return SkNEW_ARGS(SkTileGrid, (fTileWidth, fTileHeight, fXTileCount, fYTileCount));
-    }
-private:
-    int fTileWidth, fTileHeight, fXTileCount, fYTileCount;
-};
-
 SkPicture* PictureRenderer::createPicture() {
     switch (fBBoxHierarchyType) {
         case kNone_BBoxHierarchyType:
@@ -647,14 +631,8 @@
         case kRTree_BBoxHierarchyType:
             return SkNEW(RTreePicture);
         case kTileGrid_BBoxHierarchyType:
-            {
-                int xTileCount = fPicture->width() / fGridWidth +
-                    ((fPicture->width() % fGridWidth) ? 1 : 0);
-                int yTileCount = fPicture->height() / fGridHeight +
-                    ((fPicture->height() % fGridHeight) ? 1 : 0);
-                return SkNEW_ARGS(TileGridPicture, (fGridWidth, fGridHeight, xTileCount,
-                                                    yTileCount));
-            }
+            return SkNEW_ARGS(SkTileGridPicture, (fGridWidth, fGridHeight, fPicture->width(),
+                fPicture->height()));
     }
     SkASSERT(0); // invalid bbhType
     return NULL;