aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 19:51:05 +0000
committerGravatar keyar@chromium.org <keyar@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-07-09 19:51:05 +0000
commit70b4222344fc290ba03922ce246da2b3e980071d (patch)
treeff05ca33d37622b0cd4188d0d90e4363f51414d2 /tools
parentcf6c44cf9287af8b425fb0d9d286a6d57ad03897 (diff)
Tiles that extend beyond the picture are now clipped.
Review URL: https://codereview.appspot.com/6352078 git-svn-id: http://skia.googlecode.com/svn/trunk@4491 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'tools')
-rw-r--r--tools/bench_pictures_main.cpp16
1 files changed, 11 insertions, 5 deletions
diff --git a/tools/bench_pictures_main.cpp b/tools/bench_pictures_main.cpp
index 88163110fb..0674598b04 100644
--- a/tools/bench_pictures_main.cpp
+++ b/tools/bench_pictures_main.cpp
@@ -84,17 +84,23 @@ struct TileInfo {
SkCanvas* fCanvas;
};
-static void setup_single_tile(const SkBitmap& bitmap, const Options& options,
- SkTArray<TileInfo>* tiles,
+static void clip_tile(SkPicture* picture, const TileInfo& tile) {
+ SkRect clip = SkRect::MakeWH(picture->width(), picture->height());
+ tile.fCanvas->clipRect(clip);
+}
+
+static void setup_single_tile(SkPicture* picture, const SkBitmap& bitmap,
+ const Options& options, SkTArray<TileInfo>* tiles,
int tile_x_start, int tile_y_start) {
TileInfo& tile = tiles->push_back();
tile.fBitmap = new SkBitmap();
SkIRect rect = SkIRect::MakeXYWH(tile_x_start, tile_y_start,
- options.fTileWidth,
- options.fTileHeight);
+ options.fTileWidth, options.fTileHeight);
bitmap.extractSubset(tile.fBitmap, rect);
tile.fCanvas = new SkCanvas(*(tile.fBitmap));
tile.fCanvas->translate(-tile_x_start, -tile_y_start);
+
+ clip_tile(picture, tile);
}
static void setup_tiles(SkPicture* picture, const SkBitmap& bitmap,
@@ -103,7 +109,7 @@ static void setup_tiles(SkPicture* picture, const SkBitmap& bitmap,
tile_y_start += options.fTileHeight) {
for (int tile_x_start = 0; tile_x_start < picture->width();
tile_x_start += options.fTileWidth) {
- setup_single_tile(bitmap, options, tiles, tile_x_start,
+ setup_single_tile(picture, bitmap, options, tiles, tile_x_start,
tile_y_start);
}
}