TiledPictureRenderer now has tiles accelerated when appropiate.
git-svn-id: http://skia.googlecode.com/svn/trunk@5180 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tools/PictureRenderer.cpp b/tools/PictureRenderer.cpp
index 84e7f85..d014f0dd 100644
--- a/tools/PictureRenderer.cpp
+++ b/tools/PictureRenderer.cpp
@@ -32,25 +32,35 @@
}
fPicture = pict;
+ fCanvas.reset(this->setupCanvas());
+}
+
+SkCanvas* PictureRenderer::setupCanvas() {
+ return this->setupCanvas(fPicture->width(), fPicture->height());
+}
+
+SkCanvas* PictureRenderer::setupCanvas(int width, int height) {
switch(fDeviceType) {
case kBitmap_DeviceType: {
SkBitmap bitmap;
- sk_tools::setup_bitmap(&bitmap, fPicture->width(), fPicture->height());
- fCanvas.reset(SkNEW_ARGS(SkCanvas, (bitmap)));
+ sk_tools::setup_bitmap(&bitmap, width, height);
+ return SkNEW_ARGS(SkCanvas, (bitmap));
break;
}
#if SK_SUPPORT_GPU
case kGPU_DeviceType: {
SkAutoTUnref<SkGpuDevice> device(SkNEW_ARGS(SkGpuDevice,
(fGrContext, SkBitmap::kARGB_8888_Config,
- pict->width(), pict->height())));
- fCanvas.reset(SkNEW_ARGS(SkCanvas, (device.get())));
+ width, height)));
+ return SkNEW_ARGS(SkCanvas, (device.get()));
break;
}
#endif
default:
SkASSERT(0);
}
+
+ return NULL;
}
void PictureRenderer::end() {
@@ -146,10 +156,7 @@
void TiledPictureRenderer::addTile(int tile_x_start, int tile_y_start) {
TileInfo* tile = fTiles.push();
- tile->fBitmap = SkNEW(SkBitmap);
- sk_tools::setup_bitmap(tile->fBitmap, fTileWidth, fTileHeight);
-
- tile->fCanvas = SkNEW_ARGS(SkCanvas, (*(tile->fBitmap)));
+ tile->fCanvas = this->setupCanvas(fTileWidth, fTileHeight);
tile->fCanvas->translate(SkIntToScalar(-tile_x_start), SkIntToScalar(-tile_y_start));
this->clipTile(*tile);
}