| 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 |