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(float ideal_contents_scale, 18 float* contents_scale_x, 19 float* contents_scale_y, 20 gfx::Size* content_bounds) OVERRIDE; 21 22 virtual bool Update(ResourceUpdateQueue* queue, 23 const OcclusionTracker<Layer>* occlusion) OVERRIDE; 24 25 protected: 26 ContentsScalingLayer(); 27 virtual ~ContentsScalingLayer(); 28 29 gfx::Size ComputeContentBoundsForScale(float scale_x, float scale_y) const; 30 31 private: 32 float last_update_contents_scale_x_; 33 float last_update_contents_scale_y_; 34 35 DISALLOW_COPY_AND_ASSIGN(ContentsScalingLayer); 36 }; 37 38 } // namespace cc 39 40 #endif // CC_LAYERS_CONTENTS_SCALING_LAYER_H__ 41