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 "cc/animation/scrollbar_animation_controller.h" | 7 #include "cc/animation/scrollbar_animation_controller.h" |
8 #include "cc/layers/layer.h" | 8 #include "cc/layers/layer.h" |
9 #include "cc/layers/quad_sink.h" | 9 #include "cc/layers/quad_sink.h" |
10 #include "cc/quads/solid_color_draw_quad.h" | 10 #include "cc/quads/solid_color_draw_quad.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 scrollbar_layer->set_fore_track_resource_id(fore_track_resource_id_); | 144 scrollbar_layer->set_fore_track_resource_id(fore_track_resource_id_); |
145 scrollbar_layer->set_thumb_resource_id(thumb_resource_id_); | 145 scrollbar_layer->set_thumb_resource_id(thumb_resource_id_); |
146 } | 146 } |
147 | 147 |
148 void ScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink, | 148 void ScrollbarLayerImpl::AppendQuads(QuadSink* quad_sink, |
149 AppendQuadsData* append_quads_data) { | 149 AppendQuadsData* append_quads_data) { |
150 bool premultipled_alpha = true; | 150 bool premultipled_alpha = true; |
151 bool flipped = false; | 151 bool flipped = false; |
152 gfx::PointF uv_top_left(0.f, 0.f); | 152 gfx::PointF uv_top_left(0.f, 0.f); |
153 gfx::PointF uv_bottom_right(1.f, 1.f); | 153 gfx::PointF uv_bottom_right(1.f, 1.f); |
154 gfx::Rect boundsRect(bounds()); | 154 gfx::Rect bounds_rect(bounds()); |
155 gfx::Rect contentBoundsRect(content_bounds()); | 155 gfx::Rect content_bounds_rect(content_bounds()); |
156 | 156 |
157 SharedQuadState* shared_quad_state = | 157 SharedQuadState* shared_quad_state = |
158 quad_sink->UseSharedQuadState(CreateSharedQuadState()); | 158 quad_sink->UseSharedQuadState(CreateSharedQuadState()); |
159 AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data); | 159 AppendDebugBorderQuad(quad_sink, shared_quad_state, append_quads_data); |
160 | 160 |
161 if (layer_tree_impl()->settings().solid_color_scrollbars) { | 161 if (layer_tree_impl()->settings().solid_color_scrollbars) { |
162 gfx::Rect track_rect = geometry_->trackRect(&scrollbar_); | 162 gfx::Rect track_rect = geometry_->trackRect(&scrollbar_); |
163 int thickness_override = | 163 int thickness_override = |
164 layer_tree_impl()->settings().solid_color_scrollbar_thickness_dip; | 164 layer_tree_impl()->settings().solid_color_scrollbar_thickness_dip; |
165 gfx::RectF thumb_rect; | 165 gfx::RectF thumb_rect; |
(...skipping 18 matching lines...) Expand all Loading... |
184 } | 184 } |
185 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect(thumb_rect)); | 185 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect(thumb_rect)); |
186 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); | 186 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); |
187 quad->SetNew(shared_quad_state, | 187 quad->SetNew(shared_quad_state, |
188 quad_rect, | 188 quad_rect, |
189 layer_tree_impl()->settings().solid_color_scrollbar_color); | 189 layer_tree_impl()->settings().solid_color_scrollbar_color); |
190 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 190 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
191 return; | 191 return; |
192 } | 192 } |
193 | 193 |
194 WebRect thumb_rect, back_track_rect, foreTrackRect; | 194 WebRect thumb_rect, back_track_rect, fore_track_rect; |
195 geometry_->splitTrack(&scrollbar_, | 195 geometry_->splitTrack(&scrollbar_, |
196 geometry_->trackRect(&scrollbar_), | 196 geometry_->trackRect(&scrollbar_), |
197 back_track_rect, | 197 back_track_rect, |
198 thumb_rect, | 198 thumb_rect, |
199 foreTrackRect); | 199 fore_track_rect); |
200 if (!geometry_->hasThumb(&scrollbar_)) | 200 if (!geometry_->hasThumb(&scrollbar_)) |
201 thumb_rect = WebRect(); | 201 thumb_rect = WebRect(); |
202 | 202 |
203 if (thumb_resource_id_ && !thumb_rect.isEmpty()) { | 203 if (thumb_resource_id_ && !thumb_rect.isEmpty()) { |
204 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect(gfx::Rect(thumb_rect))); | 204 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect(gfx::Rect(thumb_rect))); |
205 gfx::Rect opaque_rect; | 205 gfx::Rect opaque_rect; |
206 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 206 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
207 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 207 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
208 quad->SetNew(shared_quad_state, | 208 quad->SetNew(shared_quad_state, |
209 quad_rect, | 209 quad_rect, |
210 opaque_rect, | 210 opaque_rect, |
211 thumb_resource_id_, | 211 thumb_resource_id_, |
212 premultipled_alpha, | 212 premultipled_alpha, |
213 uv_top_left, | 213 uv_top_left, |
214 uv_bottom_right, | 214 uv_bottom_right, |
215 opacity, | 215 opacity, |
216 flipped); | 216 flipped); |
217 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 217 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
218 } | 218 } |
219 | 219 |
220 if (!back_track_resource_id_) | 220 if (!back_track_resource_id_) |
221 return; | 221 return; |
222 | 222 |
223 // We only paint the track in two parts if we were given a texture for the | 223 // We only paint the track in two parts if we were given a texture for the |
224 // forward track part. | 224 // forward track part. |
225 if (fore_track_resource_id_ && !foreTrackRect.isEmpty()) { | 225 if (fore_track_resource_id_ && !fore_track_rect.isEmpty()) { |
226 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect( | 226 gfx::Rect quad_rect(ScrollbarLayerRectToContentRect( |
227 gfx::Rect(foreTrackRect))); | 227 gfx::Rect(fore_track_rect))); |
228 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); | 228 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); |
229 gfx::RectF uv_rect(ToUVRect(foreTrackRect, boundsRect)); | 229 gfx::RectF uv_rect(ToUVRect(fore_track_rect, bounds_rect)); |
230 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 230 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
231 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 231 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
232 quad->SetNew(shared_quad_state, | 232 quad->SetNew(shared_quad_state, |
233 quad_rect, | 233 quad_rect, |
234 opaque_rect, | 234 opaque_rect, |
235 fore_track_resource_id_, | 235 fore_track_resource_id_, |
236 premultipled_alpha, | 236 premultipled_alpha, |
237 uv_rect.origin(), | 237 uv_rect.origin(), |
238 uv_rect.bottom_right(), | 238 uv_rect.bottom_right(), |
239 opacity, | 239 opacity, |
240 flipped); | 240 flipped); |
241 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); | 241 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); |
242 } | 242 } |
243 | 243 |
244 // Order matters here: since the back track texture is being drawn to the | 244 // Order matters here: since the back track texture is being drawn to the |
245 // entire contents rect, we must append it after the thumb and fore track | 245 // entire contents rect, we must append it after the thumb and fore track |
246 // quads. The back track texture contains (and displays) the buttons. | 246 // quads. The back track texture contains (and displays) the buttons. |
247 if (!contentBoundsRect.IsEmpty()) { | 247 if (!content_bounds_rect.IsEmpty()) { |
248 gfx::Rect quad_rect(contentBoundsRect); | 248 gfx::Rect quad_rect(content_bounds_rect); |
249 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); | 249 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect()); |
250 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; | 250 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; |
251 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); | 251 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); |
252 quad->SetNew(shared_quad_state, | 252 quad->SetNew(shared_quad_state, |
253 quad_rect, | 253 quad_rect, |
254 opaque_rect, | 254 opaque_rect, |
255 back_track_resource_id_, | 255 back_track_resource_id_, |
256 premultipled_alpha, | 256 premultipled_alpha, |
257 uv_top_left, | 257 uv_top_left, |
258 uv_bottom_right, | 258 uv_bottom_right, |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 bool ScrollbarLayerImpl::Scrollbar::isCustomScrollbar() const { | 334 bool ScrollbarLayerImpl::Scrollbar::isCustomScrollbar() const { |
335 return owner_->is_custom_scrollbar_; | 335 return owner_->is_custom_scrollbar_; |
336 } | 336 } |
337 | 337 |
338 const char* ScrollbarLayerImpl::LayerTypeAsString() const { | 338 const char* ScrollbarLayerImpl::LayerTypeAsString() const { |
339 return "ScrollbarLayer"; | 339 return "ScrollbarLayer"; |
340 } | 340 } |
341 | 341 |
342 } // namespace cc | 342 } // namespace cc |
OLD | NEW |