Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / cc / layers / solid_color_scrollbar_layer.cc
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