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