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 bool Update( 27 ResourceUpdateQueue* queue, 28 const OcclusionTracker* occlusion) OVERRIDE; 29 30 protected: 31 ContentsScalingLayer(); 32 virtual ~ContentsScalingLayer(); 33 34 gfx::Size ComputeContentBoundsForScale(float scale_x, float scale_y) const; 35 36 private: 37 float last_update_contents_scale_x_; 38 float last_update_contents_scale_y_; 39 40 DISALLOW_COPY_AND_ASSIGN(ContentsScalingLayer); 41}; 42 43} // namespace cc 44 45#endif // CC_LAYERS_CONTENTS_SCALING_LAYER_H__ 46