| Index: cc/picture.cc
|
| diff --git a/cc/picture.cc b/cc/picture.cc
|
| index c8fd76ffde70a01830f300dda033c40b37ee4ec9..f66c691bf38ed2bf2038de82b9df8087852a5a4e 100644
|
| --- a/cc/picture.cc
|
| +++ b/cc/picture.cc
|
| @@ -114,17 +114,26 @@ 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,
|
| + bool* is_solid,
|
| + SkColor* solid_color,
|
| + bool* is_transparent,
|
| + bool* is_cheap) {
|
| + // Verify outputs are valid.
|
| + DCHECK(is_solid && solid_color && is_transparent && is_cheap);
|
|
|
| - 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();
|
| + *is_solid = canvas->getColorIfSolid(solid_color);
|
| + *is_transparent = canvas->isTransparent();
|
| + *is_cheap = canvas->isCheap();
|
| }
|
|
|
| void Picture::GatherPixelRefs(const gfx::Rect& layer_rect,
|
|
|