| Index: cc/picture.cc
|
| diff --git a/cc/picture.cc b/cc/picture.cc
|
| index c8fd76ffde70a01830f300dda033c40b37ee4ec9..501621b0668249d3745dc7378e91d98a984a8930 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,
|
| @@ -155,4 +161,10 @@ void Picture::GatherPixelRefs(const gfx::Rect& layer_rect,
|
| pixel_refs->unref();
|
| }
|
|
|
| +Picture::Analysis::Analysis() :
|
| + is_solid_color(false),
|
| + is_transparent(false),
|
| + is_cheap_to_raster(false) {
|
| +}
|
| +
|
| } // namespace cc
|
|
|