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