scrollbar_layer_impl_base.h revision 58537e28ecd584eab876aee8be7156509866d23a
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 12namespace cc { 13 14class LayerTreeImpl; 15 16class CC_EXPORT ScrollbarLayerImplBase : public LayerImpl { 17 public: 18 int ScrollLayerId() const { return scroll_layer_id_; } 19 void set_scroll_layer_id(int id) { scroll_layer_id_ = id; } 20 21 float current_pos() const { return current_pos_; } 22 void SetCurrentPos(float current_pos); 23 int maximum() const { return maximum_; } 24 void SetMaximum(int maximum); 25 26 void SetVerticalAdjust(float vertical_adjust); 27 28 bool is_overlay_scrollbar() const { return is_overlay_scrollbar_; } 29 void set_is_overlay_scrollbar(bool is_overlay) { 30 is_overlay_scrollbar_ = is_overlay; 31 } 32 33 ScrollbarOrientation orientation() const { return orientation_; } 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 44 float thumb_thickness_scale_factor() { 45 return thumb_thickness_scale_factor_; 46 } 47 void set_thumb_thickness_scale_factor(float thumb_thickness_scale_factor) { 48 thumb_thickness_scale_factor_ = thumb_thickness_scale_factor; 49 } 50 51 protected: 52 ScrollbarLayerImplBase(LayerTreeImpl* tree_impl, 53 int id, 54 ScrollbarOrientation orientation, 55 bool is_left_side_vertical_scrollbar); 56 virtual ~ScrollbarLayerImplBase() {} 57 58 gfx::Rect ScrollbarLayerRectToContentRect(gfx::RectF layer_rect) const; 59 60 float visible_to_total_length_ratio() const { 61 return visible_to_total_length_ratio_; 62 } 63 float vertical_adjust() const { return vertical_adjust_; } 64 65 virtual int ThumbThickness() const = 0; 66 virtual int ThumbLength() const = 0; 67 virtual float TrackLength() const = 0; 68 virtual int TrackStart() const = 0; 69 70 private: 71 int scroll_layer_id_; 72 bool is_overlay_scrollbar_; 73 74 float thumb_thickness_scale_factor_; 75 float current_pos_; 76 int maximum_; 77 ScrollbarOrientation orientation_; 78 bool is_left_side_vertical_scrollbar_; 79 80 // Difference between the clip layer's height and the visible viewport 81 // height (which may differ in the presence of top-controls hiding). 82 float vertical_adjust_; 83 84 float visible_to_total_length_ratio_; 85 86 DISALLOW_COPY_AND_ASSIGN(ScrollbarLayerImplBase); 87}; 88 89} // namespace cc 90 91#endif // CC_LAYERS_SCROLLBAR_LAYER_IMPL_BASE_H_ 92