contents_scaling_layer.h 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#ifndef CC_LAYERS_CONTENTS_SCALING_LAYER_H_ 6#define CC_LAYERS_CONTENTS_SCALING_LAYER_H_ 7 8#include "cc/base/cc_export.h" 9#include "cc/layers/layer.h" 10 11namespace cc { 12 13// Base class for layers that need contents scale. 14// The content bounds are determined by bounds and scale of the contents. 15class CC_EXPORT ContentsScalingLayer : public Layer { 16 public: 17 virtual void CalculateContentsScale( 18 float ideal_contents_scale, 19 float device_scale_factor, 20 float page_scale_factor, 21 bool animating_transform_to_screen, 22 float* contents_scale_x, 23 float* contents_scale_y, 24 gfx::Size* content_bounds) OVERRIDE; 25 26 virtual void Update( 27 ResourceUpdateQueue* queue, 28 const OcclusionTracker* occlusion, 29 RenderingStats* stats) OVERRIDE; 30 31 protected: 32 ContentsScalingLayer(); 33 virtual ~ContentsScalingLayer(); 34 35 gfx::Size ComputeContentBoundsForScale(float scale_x, float scale_y) const; 36 37 private: 38 float last_update_contents_scale_x_; 39 float last_update_contents_scale_y_; 40 41 DISALLOW_COPY_AND_ASSIGN(ContentsScalingLayer); 42}; 43 44} // namespace cc 45 46#endif // CC_LAYERS_CONTENTS_SCALING_LAYER_H__ 47