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 #include "cc/layers/solid_color_scrollbar_layer.h" 6 7 #include "base/memory/scoped_ptr.h" 8 #include "cc/layers/layer_impl.h" 9 #include "cc/layers/solid_color_scrollbar_layer_impl.h" 10 11 namespace cc { 12 13 scoped_ptr<LayerImpl> SolidColorScrollbarLayer::CreateLayerImpl( 14 LayerTreeImpl* tree_impl) { 15 const bool kIsOverlayScrollbar = true; 16 return SolidColorScrollbarLayerImpl::Create(tree_impl, 17 id(), 18 orientation(), 19 thumb_thickness_, 20 track_start_, 21 is_left_side_vertical_scrollbar_, 22 kIsOverlayScrollbar) 23 .PassAs<LayerImpl>(); 24 } 25 26 scoped_refptr<SolidColorScrollbarLayer> SolidColorScrollbarLayer::Create( 27 ScrollbarOrientation orientation, 28 int thumb_thickness, 29 int track_start, 30 bool is_left_side_vertical_scrollbar, 31 int scroll_layer_id) { 32 return make_scoped_refptr( 33 new SolidColorScrollbarLayer(orientation, 34 thumb_thickness, 35 track_start, 36 is_left_side_vertical_scrollbar, 37 scroll_layer_id)); 38 } 39 40 SolidColorScrollbarLayer::SolidColorScrollbarLayer( 41 ScrollbarOrientation orientation, 42 int thumb_thickness, 43 int track_start, 44 bool is_left_side_vertical_scrollbar, 45 int scroll_layer_id) 46 : scroll_layer_id_(Layer::INVALID_ID), 47 clip_layer_id_(scroll_layer_id), 48 orientation_(orientation), 49 thumb_thickness_(thumb_thickness), 50 track_start_(track_start), 51 is_left_side_vertical_scrollbar_(is_left_side_vertical_scrollbar) {} 52 53 SolidColorScrollbarLayer::~SolidColorScrollbarLayer() {} 54 55 ScrollbarLayerInterface* SolidColorScrollbarLayer::ToScrollbarLayer() { 56 return this; 57 } 58 59 void SolidColorScrollbarLayer::PushPropertiesTo(LayerImpl* layer) { 60 Layer::PushPropertiesTo(layer); 61 PushScrollClipPropertiesTo(layer); 62 } 63 64 void SolidColorScrollbarLayer::PushScrollClipPropertiesTo(LayerImpl* layer) { 65 SolidColorScrollbarLayerImpl* scrollbar_layer = 66 static_cast<SolidColorScrollbarLayerImpl*>(layer); 67 68 scrollbar_layer->SetScrollLayerById(scroll_layer_id_); 69 scrollbar_layer->SetClipLayerById(clip_layer_id_); 70 } 71 72 void SolidColorScrollbarLayer::SetNeedsDisplayRect(const gfx::RectF&) { 73 // Never needs repaint. 74 } 75 76 bool SolidColorScrollbarLayer::OpacityCanAnimateOnImplThread() const { 77 return true; 78 } 79 80 int SolidColorScrollbarLayer::ScrollLayerId() const { 81 return scroll_layer_id_; 82 } 83 84 void SolidColorScrollbarLayer::SetScrollLayer(int layer_id) { 85 if (layer_id == scroll_layer_id_) 86 return; 87 88 scroll_layer_id_ = layer_id; 89 SetNeedsFullTreeSync(); 90 } 91 92 void SolidColorScrollbarLayer::SetClipLayer(int layer_id) { 93 if (layer_id == clip_layer_id_) 94 return; 95 96 clip_layer_id_ = layer_id; 97 SetNeedsFullTreeSync(); 98 } 99 100 ScrollbarOrientation SolidColorScrollbarLayer::orientation() const { 101 return orientation_; 102 } 103 104 } // namespace cc 105