OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/layers/scrollbar_layer_impl.h" | 5 #include "cc/layers/scrollbar_layer_impl.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "cc/animation/scrollbar_animation_controller.h" | 9 #include "cc/animation/scrollbar_animation_controller.h" |
10 #include "cc/layers/layer.h" | 10 #include "cc/layers/layer.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 return make_scoped_ptr(new ScrollbarLayerImpl(tree_impl, | 24 return make_scoped_ptr(new ScrollbarLayerImpl(tree_impl, |
25 id, | 25 id, |
26 orientation)); | 26 orientation)); |
27 } | 27 } |
28 | 28 |
29 ScrollbarLayerImpl::ScrollbarLayerImpl( | 29 ScrollbarLayerImpl::ScrollbarLayerImpl( |
30 LayerTreeImpl* tree_impl, | 30 LayerTreeImpl* tree_impl, |
31 int id, | 31 int id, |
32 ScrollbarOrientation orientation) | 32 ScrollbarOrientation orientation) |
33 : LayerImpl(tree_impl, id), | 33 : LayerImpl(tree_impl, id), |
34 track_resource_id_(0), | 34 track_ui_resource_id_(0), |
35 thumb_resource_id_(0), | 35 thumb_ui_resource_id_(0), |
36 current_pos_(0.f), | 36 current_pos_(0.f), |
37 maximum_(0), | 37 maximum_(0), |
38 thumb_thickness_(0), | 38 thumb_thickness_(0), |
39 thumb_length_(0), | 39 thumb_length_(0), |
40 track_start_(0), | 40 track_start_(0), |
41 track_length_(0), | 41 track_length_(0), |
42 orientation_(orientation), | 42 orientation_(orientation), |
43 vertical_adjust_(0.f), | 43 vertical_adjust_(0.f), |
44 visible_to_total_length_ratio_(1.f), | 44 visible_to_total_length_ratio_(1.f), |
45 scroll_layer_id_(Layer::INVALID_ID), | 45 scroll_layer_id_(Layer::INVALID_ID), |
(...skipping 16 matching lines...) Expand all Loading... |
62 LayerImpl::PushPropertiesTo(layer); | 62 LayerImpl::PushPropertiesTo(layer); |
63 | 63 |
64 ScrollbarLayerImpl* scrollbar_layer = static_cast<ScrollbarLayerImpl*>(layer); | 64 ScrollbarLayerImpl* scrollbar_layer = static_cast<ScrollbarLayerImpl*>(layer); |
65 | 65 |
66 scrollbar_layer->set_thumb_thickness(thumb_thickness_); | 66 scrollbar_layer->set_thumb_thickness(thumb_thickness_); |
67 scrollbar_layer->set_thumb_length(thumb_length_); | 67 scrollbar_layer->set_thumb_length(thumb_length_); |
68 scrollbar_layer->set_track_start(track_start_); | 68 scrollbar_layer->set_track_start(track_start_); |
69 scrollbar_layer->set_track_length(track_length_); | 69 scrollbar_layer->set_track_length(track_length_); |
70 scrollbar_layer->set_is_overlay_scrollbar(is_overlay_scrollbar_); | 70 scrollbar_layer->set_is_overlay_scrollbar(is_overlay_scrollbar_); |
71 | 71 |
72 scrollbar_layer->set_track_resource_id(track_resource_id_); | 72 scrollbar_layer->set_track_ui_resource_id(track_ui_resource_id_); |
73 scrollbar_layer->set_thumb_resource_id(thumb_resource_id_); | 73 scrollbar_layer->set_thumb_ui_resource_id(thumb_ui_resource_id_); |
74 } | 74 } |
75 | 75 |
76 bool ScrollbarLayerImpl::WillDraw(DrawMode draw_mode, | 76 bool ScrollbarLayerImpl::WillDraw(DrawMode draw_mode, |
77 ResourceProvider* resource_provider) { | 77 ResourceProvider* resource_provider) { |
78 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE && | 78 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE && |
79 !layer_tree_impl()->settings().solid_color_scrollbars) | 79 !layer_tree_impl()->settings().solid_color_scrollbars) |
80 return false; | 80 return false; |
81 return LayerImpl::WillDraw(draw_mode, resource_provider); | 81 return LayerImpl::WillDraw(draw_mode, resource_provider); |
82 } | 82 } |
83 | 83 |
(...skipping 15 matching lines...) Expand all Loading... |
99 if (layer_tree_impl()->settings().solid_color_scrollbars) { | 99 if (layer_tree_impl()->settings().solid_color_scrollbars) { |
100 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 100 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
101 quad->SetNew(shared_quad_state, | 101 quad->SetNew(shared_quad_state, |
102 thumb_quad_rect, | 102 thumb_quad_rect, |
103 layer_tree_impl()->settings().solid_color_scrollbar_color, | 103 layer_tree_impl()->settings().solid_color_scrollbar_color, |
104 false); | 104 false); |
105 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 105 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
106 return; | 106 return; |
107 } | 107 } |
108 | 108 |
109 if (thumb_resource_id_ && !thumb_quad_rect.IsEmpty()) { | 109 ResourceProvider::ResourceId thumb_resource_id = |
| 110 layer_tree_impl()->ResourceIdForUIResource(thumb_ui_resource_id_); |
| 111 ResourceProvider::ResourceId track_resource_id = |
| 112 layer_tree_impl()->ResourceIdForUIResource(track_ui_resource_id_); |
| 113 |
| 114 if (thumb_resource_id && !thumb_quad_rect.IsEmpty()) { |
110 gfx::Rect opaque_rect; | 115 gfx::Rect opaque_rect; |
111 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 116 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
112 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 117 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
113 quad->SetNew(shared_quad_state, | 118 quad->SetNew(shared_quad_state, |
114 thumb_quad_rect, | 119 thumb_quad_rect, |
115 opaque_rect, | 120 opaque_rect, |
116 thumb_resource_id_, | 121 thumb_resource_id, |
117 premultipled_alpha, | 122 premultipled_alpha, |
118 uv_top_left, | 123 uv_top_left, |
119 uv_bottom_right, | 124 uv_bottom_right, |
120 SK_ColorTRANSPARENT, | 125 SK_ColorTRANSPARENT, |
121 opacity, | 126 opacity, |
122 flipped); | 127 flipped); |
123 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 128 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
124 } | 129 } |
125 | 130 |
126 if (!track_resource_id_) | 131 gfx::Rect track_quad_rect = content_bounds_rect; |
127 return; | 132 if (track_resource_id && !track_quad_rect.IsEmpty()) { |
128 | 133 gfx::Rect opaque_rect(contents_opaque() ? track_quad_rect : gfx::Rect()); |
129 // Order matters here: since the back track texture is being drawn to the | |
130 // entire contents rect, we must append it after the thumb and fore track | |
131 // quads. The back track texture contains (and displays) the buttons. | |
132 if (!content_bounds_rect.IsEmpty()) { | |
133 gfx::Rect quad_rect(content_bounds_rect); | |
134 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); | |
135 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 134 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
136 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 135 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
137 quad->SetNew(shared_quad_state, | 136 quad->SetNew(shared_quad_state, |
138 quad_rect, | 137 track_quad_rect, |
139 opaque_rect, | 138 opaque_rect, |
140 track_resource_id_, | 139 track_resource_id, |
141 premultipled_alpha, | 140 premultipled_alpha, |
142 uv_top_left, | 141 uv_top_left, |
143 uv_bottom_right, | 142 uv_bottom_right, |
144 SK_ColorTRANSPARENT, | 143 SK_ColorTRANSPARENT, |
145 opacity, | 144 opacity, |
146 flipped); | 145 flipped); |
147 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 146 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
148 } | 147 } |
149 } | 148 } |
150 | 149 |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
254 thumb_rect = gfx::RectF(thumb_offset, vertical_adjust_, | 253 thumb_rect = gfx::RectF(thumb_offset, vertical_adjust_, |
255 thumb_length, thumb_thickness_); | 254 thumb_length, thumb_thickness_); |
256 } else { | 255 } else { |
257 thumb_rect = gfx::RectF(0.f, thumb_offset, | 256 thumb_rect = gfx::RectF(0.f, thumb_offset, |
258 thumb_thickness_, thumb_length); | 257 thumb_thickness_, thumb_length); |
259 } | 258 } |
260 | 259 |
261 return ScrollbarLayerRectToContentRect(thumb_rect); | 260 return ScrollbarLayerRectToContentRect(thumb_rect); |
262 } | 261 } |
263 | 262 |
264 void ScrollbarLayerImpl::DidLoseOutputSurface() { | |
265 track_resource_id_ = 0; | |
266 thumb_resource_id_ = 0; | |
267 } | |
268 | |
269 const char* ScrollbarLayerImpl::LayerTypeAsString() const { | 263 const char* ScrollbarLayerImpl::LayerTypeAsString() const { |
270 return "cc::ScrollbarLayerImpl"; | 264 return "cc::ScrollbarLayerImpl"; |
271 } | 265 } |
272 | 266 |
273 } // namespace cc | 267 } // namespace cc |
OLD | NEW |