• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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