• 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(
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