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(RenderPass* render_pass, 34 const OcclusionTracker<LayerImpl>& occlusion_tracker, 35 AppendQuadsData* append_quads_data) OVERRIDE; 36 37 void SetThumbThickness(int thumb_thickness); 38 void SetThumbLength(int thumb_length); 39 void SetTrackStart(int track_start); 40 void SetTrackLength(int track_length); 41 set_track_ui_resource_id(UIResourceId uid)42 void set_track_ui_resource_id(UIResourceId uid) { 43 track_ui_resource_id_ = uid; 44 } set_thumb_ui_resource_id(UIResourceId uid)45 void set_thumb_ui_resource_id(UIResourceId uid) { 46 thumb_ui_resource_id_ = uid; 47 } 48 49 protected: 50 PaintedScrollbarLayerImpl(LayerTreeImpl* tree_impl, 51 int id, 52 ScrollbarOrientation orientation); 53 54 // ScrollbarLayerImplBase implementation. 55 virtual int ThumbThickness() const OVERRIDE; 56 virtual int ThumbLength() const OVERRIDE; 57 virtual float TrackLength() const OVERRIDE; 58 virtual int TrackStart() const OVERRIDE; 59 virtual bool IsThumbResizable() const OVERRIDE; 60 61 private: 62 virtual const char* LayerTypeAsString() const OVERRIDE; 63 64 UIResourceId track_ui_resource_id_; 65 UIResourceId thumb_ui_resource_id_; 66 67 int thumb_thickness_; 68 int thumb_length_; 69 int track_start_; 70 int track_length_; 71 72 // Difference between the clip layer's height and the visible viewport 73 // height (which may differ in the presence of top-controls hiding). 74 float vertical_adjust_; 75 76 int scroll_layer_id_; 77 78 DISALLOW_COPY_AND_ASSIGN(PaintedScrollbarLayerImpl); 79 }; 80 81 } // namespace cc 82 #endif // CC_LAYERS_PAINTED_SCROLLBAR_LAYER_IMPL_H_ 83