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 11 namespace cc { 12 13 // Base class for layers that need contents scale. 14 // The content bounds are determined by bounds and scale of the contents. 15 class 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