Home | History | Annotate | Download | only in layers
      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::CalculateRasterContentsScale(
     62     bool animating_transform_to_screen,
     63     float* raster_contents_scale,
     64     float* low_res_raster_contents_scale) const {
     65   // Don't scale images during rastering to ensure image quality, save memory
     66   // and avoid frequent re-rastering on change of scale.
     67   *raster_contents_scale = std::max(1.f, MinimumContentsScale());
     68   // We don't need low res tiles.
     69   *low_res_raster_contents_scale = *raster_contents_scale;
     70 }
     71 
     72 }  // namespace cc
     73