contents_scaling_layer.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
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 38bool ContentsScalingLayer::Update( 39 ResourceUpdateQueue* queue, 40 const OcclusionTracker* occlusion) { 41 if (draw_properties().contents_scale_x == last_update_contents_scale_x_ && 42 draw_properties().contents_scale_y == last_update_contents_scale_y_) 43 return false; 44 45 last_update_contents_scale_x_ = draw_properties().contents_scale_x; 46 last_update_contents_scale_y_ = draw_properties().contents_scale_y; 47 // Invalidate the whole layer if scale changed. 48 SetNeedsDisplayRect(gfx::Rect(paint_properties().bounds)); 49 return false; 50} 51 52} // namespace cc 53