Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(905)

Side by Side Diff: cc/layers/scrollbar_layer_impl.cc

Issue 18191020: UI Resource Manager (Closed) Base URL: https://src.chromium.org/chrome/trunk/src/
Patch Set: Added DCHECK of resource queue size to PushPropertiesTo Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/scrollbar_layer_impl.h ('k') | cc/layers/scrollbar_layer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/layers/scrollbar_layer_impl.h ('k') | cc/layers/scrollbar_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698