contents_scaling_layer.cc revision b2df76ea8fec9e32f6f3718986dba0d95315b29c
1// Copyright 2012 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/contents_scaling_layer.h" 6#include "ui/gfx/size_conversions.h" 7 8namespace cc { 9 10gfx::Size ContentsScalingLayer::ComputeContentBoundsForScale( 11 float scale_x, 12 float scale_y) const { 13 return gfx::ToCeiledSize(gfx::ScaleSize(bounds(), scale_x, scale_y)); 14} 15 16ContentsScalingLayer::ContentsScalingLayer() 17 : last_update_contents_scale_x_(0.f), 18 last_update_contents_scale_y_(0.f) {} 19 20ContentsScalingLayer::~ContentsScalingLayer() { 21} 22 23void ContentsScalingLayer::CalculateContentsScale( 24 float ideal_contents_scale, 25 float device_scale_factor, 26 float page_scale_factor, 27 bool animating_transform_to_screen, 28 float* contents_scale_x, 29 float* contents_scale_y, 30 gfx::Size* content_bounds) { 31 *contents_scale_x = ideal_contents_scale; 32 *contents_scale_y = ideal_contents_scale; 33 *content_bounds = ComputeContentBoundsForScale( 34 ideal_contents_scale, 35 ideal_contents_scale); 36} 37 38void ContentsScalingLayer::Update( 39 ResourceUpdateQueue* queue, 40 const OcclusionTracker* occlusion, 41 RenderingStats* stats) { 42 if (draw_properties().contents_scale_x == last_update_contents_scale_x_ && 43 draw_properties().contents_scale_y == last_update_contents_scale_y_) 44 return; 45 46 last_update_contents_scale_x_ = draw_properties().contents_scale_x; 47 last_update_contents_scale_y_ = draw_properties().contents_scale_y; 48 // Invalidate the whole layer if scale changed. 49 SetNeedsDisplayRect(gfx::Rect(paint_properties().bounds)); 50} 51 52} // namespace cc 53