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_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 6 #define CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 7 8 #include "cc/base/cc_export.h" 9 #include "cc/input/scrollbar.h" 10 #include "cc/layers/scrollbar_layer_impl_base.h" 11 #include "cc/resources/ui_resource_client.h" 12 13 namespace cc { 14 15 class LayerTreeImpl; 16 class ScrollView; 17 18 class CC_EXPORT PaintedScrollbarLayerImpl : public ScrollbarLayerImplBase { 19 public: 20 static scoped_ptr<PaintedScrollbarLayerImpl> Create( 21 LayerTreeImpl* tree_impl, 22 int id, 23 ScrollbarOrientation orientation); 24 virtual ~PaintedScrollbarLayerImpl(); 25 26 // LayerImpl implementation. 27 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) 28 OVERRIDE; 29 virtual void PushPropertiesTo(LayerImpl* layer) OVERRIDE; 30 31 virtual bool WillDraw(DrawMode draw_mode, 32 ResourceProvider* resource_provider) OVERRIDE; 33 virtual void AppendQuads(QuadSink* quad_sink, 34 AppendQuadsData* append_quads_data) OVERRIDE; 35 36 void SetThumbThickness(int thumb_thickness); 37 void SetThumbLength(int thumb_length); 38 void SetTrackStart(int track_start); 39 void SetTrackLength(int track_length); 40 set_track_ui_resource_id(UIResourceId uid)41 void set_track_ui_resource_id(UIResourceId uid) { 42 track_ui_resource_id_ = uid; 43 } set_thumb_ui_resource_id(UIResourceId uid)44 void set_thumb_ui_resource_id(UIResourceId uid) { 45 thumb_ui_resource_id_ = uid; 46 } 47 48 protected: 49 PaintedScrollbarLayerImpl(LayerTreeImpl* tree_impl, 50 int id, 51 ScrollbarOrientation orientation); 52 53 // ScrollbarLayerImplBase implementation. 54 virtual int ThumbThickness() const OVERRIDE; 55 virtual int ThumbLength() const OVERRIDE; 56 virtual float TrackLength() const OVERRIDE; 57 virtual int TrackStart() const OVERRIDE; 58 59 private: 60 virtual const char* LayerTypeAsString() const OVERRIDE; 61 62 UIResourceId track_ui_resource_id_; 63 UIResourceId thumb_ui_resource_id_; 64 65 int thumb_thickness_; 66 int thumb_length_; 67 int track_start_; 68 int track_length_; 69 70 // Difference between the clip layer's height and the visible viewport 71 // height (which may differ in the presence of top-controls hiding). 72 float vertical_adjust_; 73 74 int scroll_layer_id_; 75 76 DISALLOW_COPY_AND_ASSIGN(PaintedScrollbarLayerImpl); 77 }; 78 79 } // namespace cc 80 #endif // CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 81