• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2013 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_SCROLLBAR_LAYER_IMPL_BASE_H_
6 #define CC_LAYERS_SCROLLBAR_LAYER_IMPL_BASE_H_
7 
8 #include "cc/base/cc_export.h"
9 #include "cc/input/scrollbar.h"
10 #include "cc/layers/layer_impl.h"
11 
12 namespace cc {
13 
14 class LayerTreeImpl;
15 
16 class CC_EXPORT ScrollbarLayerImplBase : public LayerImpl {
17  public:
ScrollLayerId()18   int ScrollLayerId() const { return scroll_layer_id_; }
set_scroll_layer_id(int id)19   void set_scroll_layer_id(int id) { scroll_layer_id_ = id; }
20 
current_pos()21   float current_pos() const { return current_pos_; }
22   void SetCurrentPos(float current_pos);
maximum()23   int maximum() const { return maximum_; }
24   void SetMaximum(int maximum);
25 
26   void SetVerticalAdjust(float vertical_adjust);
27 
is_overlay_scrollbar()28   bool is_overlay_scrollbar() const { return is_overlay_scrollbar_; }
set_is_overlay_scrollbar(bool is_overlay)29   void set_is_overlay_scrollbar(bool is_overlay) {
30     is_overlay_scrollbar_ = is_overlay;
31   }
32 
orientation()33   ScrollbarOrientation orientation() const { return orientation_; }
is_left_side_vertical_scrollbar()34   bool is_left_side_vertical_scrollbar() {
35     return is_left_side_vertical_scrollbar_;
36   }
37 
38   virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE;
39   virtual ScrollbarLayerImplBase* ToScrollbarLayer() OVERRIDE;
40 
41   void SetVisibleToTotalLengthRatio(float ratio);
42   virtual gfx::Rect ComputeThumbQuadRect() const;
43 
thumb_thickness_scale_factor()44   float thumb_thickness_scale_factor() {
45     return thumb_thickness_scale_factor_;
46   }
47   void SetThumbThicknessScaleFactor(float thumb_thickness_scale_factor);
48 
49  protected:
50   ScrollbarLayerImplBase(LayerTreeImpl* tree_impl,
51                          int id,
52                          ScrollbarOrientation orientation,
53                          bool is_left_side_vertical_scrollbar);
~ScrollbarLayerImplBase()54   virtual ~ScrollbarLayerImplBase() {}
55 
56   gfx::Rect ScrollbarLayerRectToContentRect(gfx::RectF layer_rect) const;
57 
visible_to_total_length_ratio()58   float visible_to_total_length_ratio() const {
59     return visible_to_total_length_ratio_;
60   }
vertical_adjust()61   float vertical_adjust() const { return vertical_adjust_; }
62 
63   virtual int ThumbThickness() const = 0;
64   virtual int ThumbLength() const = 0;
65   virtual float TrackLength() const = 0;
66   virtual int TrackStart() const = 0;
67 
68  private:
69   int scroll_layer_id_;
70   bool is_overlay_scrollbar_;
71 
72   float thumb_thickness_scale_factor_;
73   float current_pos_;
74   int maximum_;
75   ScrollbarOrientation orientation_;
76   bool is_left_side_vertical_scrollbar_;
77 
78   // Difference between the clip layer's height and the visible viewport
79   // height (which may differ in the presence of top-controls hiding).
80   float vertical_adjust_;
81 
82   float visible_to_total_length_ratio_;
83 
84   DISALLOW_COPY_AND_ASSIGN(ScrollbarLayerImplBase);
85 };
86 
87 }  // namespace cc
88 
89 #endif  // CC_LAYERS_SCROLLBAR_LAYER_IMPL_BASE_H_
90