| Index: cc/picture.cc
|
| diff --git a/cc/picture.cc b/cc/picture.cc
|
| index c8fd76ffde70a01830f300dda033c40b37ee4ec9..423fb58770daee0a13ddae70166e4f3f80f535a0 100644
|
| --- a/cc/picture.cc
|
| +++ b/cc/picture.cc
|
| @@ -114,17 +114,23 @@ void Picture::Raster(
|
| canvas->restore();
|
| }
|
|
|
| -bool Picture::IsCheapInRect(const gfx::Rect& layer_rect) const {
|
| - TRACE_EVENT0("cc", "Picture::IsCheapInRect");
|
| +void Picture::AnalyzeInRect(skia::AnalysisCanvas* canvas,
|
| + const gfx::Rect& content_rect,
|
| + float contents_scale,
|
| + Analysis* analysis) {
|
| + // Verify the output is valid.
|
| + DCHECK(analysis);
|
|
|
| - SkBitmap emptyBitmap;
|
| - emptyBitmap.setConfig(SkBitmap::kNo_Config, layer_rect.width(),
|
| - layer_rect.height());
|
| - skia::AnalysisDevice device(emptyBitmap);
|
| - skia::AnalysisCanvas canvas(&device);
|
| + canvas->save();
|
| + canvas->clipRect(gfx::RectToSkRect(content_rect));
|
| + canvas->scale(contents_scale, contents_scale);
|
| + canvas->translate(layer_rect_.x(), layer_rect_.y());
|
| + canvas->drawPicture(*picture_);
|
| + canvas->restore();
|
|
|
| - canvas.drawPicture(*picture_);
|
| - return canvas.isCheap();
|
| + analysis->is_solid_color_ = canvas->getColorIfSolid(&analysis->solid_color_);
|
| + analysis->is_transparent_ = canvas->isTransparent();
|
| + analysis->is_cheap_to_raster_ = canvas->isCheap();
|
| }
|
|
|
| void Picture::GatherPixelRefs(const gfx::Rect& layer_rect,
|
|
|