From 32f62deeab072763a78bf056b674fd33d85b82c9 Mon Sep 17 00:00:00 2001 From: Adam Barth Date: Mon, 11 Jan 2016 00:41:01 -0800 Subject: [PATCH] Simplify painting PictureLayer This patch uses some fancier Skia APIs to simplify how PictureLayer paints. --- sky/compositor/picture_layer.cc | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/sky/compositor/picture_layer.cc b/sky/compositor/picture_layer.cc index 43bfa9d67..c0478e33f 100644 --- a/sky/compositor/picture_layer.cc +++ b/sky/compositor/picture_layer.cc @@ -32,27 +32,13 @@ void PictureLayer::Paint(PaintContext::ScopedFrame& frame) { SkCanvas& canvas = frame.canvas(); if (image_) { - const SkMatrix& ctm = canvas.getTotalMatrix(); - SkScalar scaleX = ctm.getScaleX(); - SkScalar scaleY = ctm.getScaleY(); - - SkRect rect = picture_->cullRect(); - SkScalar dx = (offset_.x() + rect.left()) * scaleX; - SkScalar dy = (offset_.y() + rect.top()) * scaleY; - - canvas.save(); - canvas.scale(1.0 / scaleX, 1.0 / scaleY); - canvas.drawImage(image_.get(), dx, dy); - canvas.restore(); - + SkRect rect = picture_->cullRect().makeOffset(offset_.x(), offset_.y()); + canvas.drawImageRect(image_.get(), rect, nullptr, SkCanvas::kFast_SrcRectConstraint); if (kDebugCheckerboardRasterizedLayers) - DrawCheckerboard(&canvas, rect.makeOffset(offset_.x(), offset_.y())); - + DrawCheckerboard(&canvas, rect); } else { - canvas.save(); - canvas.translate(offset_.x(), offset_.y()); - canvas.drawPicture(picture_.get()); - canvas.restore(); + SkMatrix matrix = SkMatrix::MakeTrans(offset_.x(), offset_.y()); + canvas.drawPicture(picture_.get(), &matrix, nullptr); } } -- GitLab