picture_image_layer_impl.cc revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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 12namespace cc { 13 14PictureImageLayerImpl::PictureImageLayerImpl(LayerTreeImpl* tree_impl, int id) 15 : PictureLayerImpl(tree_impl, id) { 16} 17 18PictureImageLayerImpl::~PictureImageLayerImpl() { 19} 20 21const char* PictureImageLayerImpl::LayerTypeAsString() const { 22 return "cc::PictureImageLayerImpl"; 23} 24 25scoped_ptr<LayerImpl> PictureImageLayerImpl::CreateLayerImpl( 26 LayerTreeImpl* tree_impl) { 27 return PictureImageLayerImpl::Create(tree_impl, id()).PassAs<LayerImpl>(); 28} 29 30void PictureImageLayerImpl::CalculateContentsScale( 31 float ideal_contents_scale, 32 float device_scale_factor, 33 float page_scale_factor, 34 float maximum_animation_contents_scale, 35 bool animating_transform_to_screen, 36 float* contents_scale_x, 37 float* contents_scale_y, 38 gfx::Size* content_bounds) { 39 // CalculateRasterContentsScale always returns 1.f, so make that the ideal 40 // scale. 41 ideal_contents_scale = 1.f; 42 PictureLayerImpl::CalculateContentsScale(ideal_contents_scale, 43 device_scale_factor, 44 page_scale_factor, 45 maximum_animation_contents_scale, 46 animating_transform_to_screen, 47 contents_scale_x, 48 contents_scale_y, 49 content_bounds); 50} 51 52void PictureImageLayerImpl::GetDebugBorderProperties( 53 SkColor* color, float* width) const { 54 *color = DebugColors::ImageLayerBorderColor(); 55 *width = DebugColors::ImageLayerBorderWidth(layer_tree_impl()); 56} 57 58bool PictureImageLayerImpl::ShouldAdjustRasterScale( 59 bool animating_transform_to_screen) const { 60 return false; 61} 62 63void PictureImageLayerImpl::RecalculateRasterScales( 64 bool animating_transform_to_screen, 65 float maximum_animation_contents_scale) { 66 // Defaults from PictureLayerImpl. 67 PictureLayerImpl::RecalculateRasterScales(animating_transform_to_screen, 68 maximum_animation_contents_scale); 69 70 // Don't scale images during rastering to ensure image quality, save memory 71 // and avoid frequent re-rastering on change of scale. 72 raster_contents_scale_ = std::max(1.f, MinimumContentsScale()); 73 // We don't need low res tiles. 74 low_res_raster_contents_scale_ = raster_contents_scale_; 75} 76 77} // namespace cc 78