Chromium Code Reviews| Index: ui/wm/core/image_grid.cc |
| diff --git a/ui/wm/core/image_grid.cc b/ui/wm/core/image_grid.cc |
| index 553e442d50bcbd87d9f51b331f663f23911e4364..82ca0e3af1ec6b39a3d4a14918235a350ab44d13 100644 |
| --- a/ui/wm/core/image_grid.cc |
| +++ b/ui/wm/core/image_grid.cc |
| @@ -29,18 +29,20 @@ namespace { |
| // right and bottom layers are stretched to the height or width of the |
| // center image. |
| -void ScaleWidth(gfx::Size center, ui::Layer* layer, gfx::Transform& transform) { |
| +void ScaleWidth(const gfx::Size& center, |
| + ui::Layer* layer, |
| + gfx::Transform* transform) { |
| float layer_width = layer->bounds().width() * layer->device_scale_factor(); |
| float scale = static_cast<float>(center.width()) / layer_width; |
| - transform.Scale(scale, 1.0); |
| + transform->Scale(scale, 1.0); |
| } |
| -void ScaleHeight(gfx::Size center, |
| +void ScaleHeight(const gfx::Size& center, |
| ui::Layer* layer, |
| - gfx::Transform& transform) { |
| + gfx::Transform* transform) { |
| float layer_height = layer->bounds().height() * layer->device_scale_factor(); |
| float scale = static_cast<float>(center.height()) / layer_height; |
| - transform.Scale(1.0, scale); |
| + transform->Scale(1.0, scale); |
| } |
| // Returns the dimensions of |image| if non-NULL or gfx::Size(0, 0) otherwise. |
| @@ -153,7 +155,7 @@ void ImageGrid::SetSize(const gfx::Size& size) { |
| if (center_width > 0) { |
| gfx::Transform transform; |
| transform.Translate(left, 0); |
| - ScaleWidth(center_size_in_pixels, top_layer_.get(), transform); |
| + ScaleWidth(center_size_in_pixels, top_layer_.get(), &transform); |
| top_layer_->SetTransform(transform); |
| } |
| top_layer_->SetVisible(center_width > 0); |
| @@ -163,7 +165,7 @@ void ImageGrid::SetSize(const gfx::Size& size) { |
| gfx::Transform transform; |
| transform.Translate( |
| left, size.height() - bottom_layer_->bounds().height()); |
| - ScaleWidth(center_size_in_pixels, bottom_layer_.get(), transform); |
| + ScaleWidth(center_size_in_pixels, bottom_layer_.get(), &transform); |
| bottom_layer_->SetTransform(transform); |
| } |
| bottom_layer_->SetVisible(center_width > 0); |
| @@ -172,7 +174,7 @@ void ImageGrid::SetSize(const gfx::Size& size) { |
| if (center_height > 0) { |
| gfx::Transform transform; |
| transform.Translate(0, top); |
| - ScaleHeight(center_size_in_pixels, left_layer_.get(), transform); |
| + ScaleHeight(center_size_in_pixels, left_layer_.get(), &transform); |
| left_layer_->SetTransform(transform); |
| } |
| left_layer_->SetVisible(center_height > 0); |
| @@ -182,7 +184,7 @@ void ImageGrid::SetSize(const gfx::Size& size) { |
| gfx::Transform transform; |
| transform.Translate( |
| size.width() - right_layer_->bounds().width(), top); |
| - ScaleHeight(center_size_in_pixels, right_layer_.get(), transform); |
| + ScaleHeight(center_size_in_pixels, right_layer_.get(), &transform); |
| right_layer_->SetTransform(transform); |
| } |
| right_layer_->SetVisible(center_height > 0); |
| @@ -268,7 +270,7 @@ void ImageGrid::ImagePainter::SetClipRect(const gfx::Rect& clip_rect, |
| } |
| void ImageGrid::ImagePainter::OnPaintLayer(const ui::PaintContext& context) { |
| - gfx::Size bounding_size(clip_rect_.right(), clip_rect_.bottom()); |
| + gfx::Size bounding_size(image_.width(), image_.height()); |
|
sky
2016/04/01 23:11:56
This is the important change. The rest are just ra
|
| ui::PaintRecorder recorder(context, bounding_size); |
| if (!clip_rect_.IsEmpty()) |
| recorder.canvas()->ClipRect(clip_rect_); |
| @@ -298,8 +300,6 @@ void ImageGrid::SetImage(const gfx::Image* image, |
| const int kMinimumSize = 20; |
| // Clean out old layers and painters. |
| - if (layer_ptr->get()) |
| - layer_->Remove(layer_ptr->get()); |
| layer_ptr->reset(); |
| painter_ptr->reset(); |