Home | History | Annotate | Download | only in layers
      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