1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "cc/layers/picture_image_layer_impl.h" 6 7 #include <algorithm> 8 9 #include "cc/debug/debug_colors.h" 10 #include "cc/trees/layer_tree_impl.h" 11 12 namespace cc { 13 14 PictureImageLayerImpl::PictureImageLayerImpl(LayerTreeImpl* tree_impl, int id) 15 : PictureLayerImpl(tree_impl, id) { 16 } 17 18 PictureImageLayerImpl::~PictureImageLayerImpl() { 19 } 20 21 const char* PictureImageLayerImpl::LayerTypeAsString() const { 22 return "cc::PictureImageLayerImpl"; 23 } 24 25 scoped_ptr<LayerImpl> PictureImageLayerImpl::CreateLayerImpl( 26 LayerTreeImpl* tree_impl) { 27 return PictureImageLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); 28 } 29 30 void PictureImageLayerImpl::CalculateContentsScale( 31 float ideal_contents_scale, 32 float device_scale_factor, 33 float page_scale_factor, 34 bool animating_transform_to_screen, 35 float* contents_scale_x, 36 float* contents_scale_y, 37 gfx::Size* content_bounds) { 38 // CalculateRasterContentsScale always returns 1.f, so make that the ideal 39 // scale. 40 ideal_contents_scale = 1.f; 41 PictureLayerImpl::CalculateContentsScale(ideal_contents_scale, 42 device_scale_factor, 43 page_scale_factor, 44 animating_transform_to_screen, 45 contents_scale_x, 46 contents_scale_y, 47 content_bounds); 48 } 49 50 void PictureImageLayerImpl::GetDebugBorderProperties( 51 SkColor* color, float* width) const { 52 *color = DebugColors::ImageLayerBorderColor(); 53 *width = DebugColors::ImageLayerBorderWidth(layer_tree_impl()); 54 } 55 56 bool PictureImageLayerImpl::ShouldAdjustRasterScale( 57 bool animating_transform_to_screen) const { 58 return false; 59 } 60 61 void PictureImageLayerImpl::RecalculateRasterScales( 62 bool animating_transform_to_screen) { 63 // Defaults from PictureLayerImpl. 64 PictureLayerImpl::RecalculateRasterScales(animating_transform_to_screen); 65 66 // Don't scale images during rastering to ensure image quality, save memory 67 // and avoid frequent re-rastering on change of scale. 68 raster_contents_scale_ = std::max(1.f, MinimumContentsScale()); 69 // We don't need low res tiles. 70 low_res_raster_contents_scale_ = raster_contents_scale_; 71 } 72 73 } // namespace cc 74