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

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: 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
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 "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"
11 #include "cc/quads/texture_draw_quad.h" 11 #include "cc/quads/texture_draw_quad.h"
12 #include "cc/quads/tile_draw_quad.h"
12 #include "cc/trees/layer_tree_impl.h" 13 #include "cc/trees/layer_tree_impl.h"
13 #include "cc/trees/layer_tree_settings.h" 14 #include "cc/trees/layer_tree_settings.h"
14 #include "ui/gfx/rect_conversions.h" 15 #include "ui/gfx/rect_conversions.h"
15 16
16 namespace cc { 17 namespace cc {
17 18
18 scoped_ptr<ScrollbarLayerImpl> ScrollbarLayerImpl::Create( 19 scoped_ptr<ScrollbarLayerImpl> ScrollbarLayerImpl::Create(
19 LayerTreeImpl* tree_impl, 20 LayerTreeImpl* tree_impl,
20 int id, 21 int id,
21 ScrollbarOrientation orientation) { 22 ScrollbarOrientation orientation) {
22 return make_scoped_ptr(new ScrollbarLayerImpl(tree_impl, 23 return make_scoped_ptr(new ScrollbarLayerImpl(tree_impl,
23 id, 24 id,
24 orientation)); 25 orientation));
25 } 26 }
26 27
27 ScrollbarLayerImpl::ScrollbarLayerImpl( 28 ScrollbarLayerImpl::ScrollbarLayerImpl(
28 LayerTreeImpl* tree_impl, 29 LayerTreeImpl* tree_impl,
29 int id, 30 int id,
30 ScrollbarOrientation orientation) 31 ScrollbarOrientation orientation)
31 : LayerImpl(tree_impl, id), 32 : LayerImpl(tree_impl, id),
32 track_resource_id_(0), 33 track_ui_resource_id_(0),
33 thumb_resource_id_(0), 34 thumb_ui_resource_id_(0),
34 current_pos_(0.f), 35 current_pos_(0.f),
35 maximum_(0), 36 maximum_(0),
36 thumb_thickness_(0), 37 thumb_thickness_(0),
37 thumb_length_(0), 38 thumb_length_(0),
38 track_start_(0), 39 track_start_(0),
39 track_length_(0), 40 track_length_(0),
40 orientation_(orientation), 41 orientation_(orientation),
41 vertical_adjust_(0.f), 42 vertical_adjust_(0.f),
42 visible_to_total_length_ratio_(1.f), 43 visible_to_total_length_ratio_(1.f),
43 scroll_layer_id_(Layer::INVALID_ID), 44 scroll_layer_id_(Layer::INVALID_ID),
(...skipping 16 matching lines...) Expand all
60 LayerImpl::PushPropertiesTo(layer); 61 LayerImpl::PushPropertiesTo(layer);
61 62
62 ScrollbarLayerImpl* scrollbar_layer = static_cast<ScrollbarLayerImpl*>(layer); 63 ScrollbarLayerImpl* scrollbar_layer = static_cast<ScrollbarLayerImpl*>(layer);
63 64
64 scrollbar_layer->set_thumb_thickness(thumb_thickness_); 65 scrollbar_layer->set_thumb_thickness(thumb_thickness_);
65 scrollbar_layer->set_thumb_length(thumb_length_); 66 scrollbar_layer->set_thumb_length(thumb_length_);
66 scrollbar_layer->set_track_start(track_start_); 67 scrollbar_layer->set_track_start(track_start_);
67 scrollbar_layer->set_track_length(track_length_); 68 scrollbar_layer->set_track_length(track_length_);
68 scrollbar_layer->set_is_overlay_scrollbar(is_overlay_scrollbar_); 69 scrollbar_layer->set_is_overlay_scrollbar(is_overlay_scrollbar_);
69 70
70 scrollbar_layer->set_track_resource_id(track_resource_id_); 71 scrollbar_layer->set_track_ui_resource_id(track_ui_resource_id_);
71 scrollbar_layer->set_thumb_resource_id(thumb_resource_id_); 72 scrollbar_layer->set_thumb_ui_resource_id(thumb_ui_resource_id_);
72 } 73 }
73 74
74 bool ScrollbarLayerImpl::WillDraw(DrawMode draw_mode, 75 bool ScrollbarLayerImpl::WillDraw(DrawMode draw_mode,
75 ResourceProvider* resource_provider) { 76 ResourceProvider* resource_provider) {
76 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE && 77 if (draw_mode == DRAW_MODE_RESOURCELESS_SOFTWARE &&
77 !layer_tree_impl()->settings().solid_color_scrollbars) 78 !layer_tree_impl()->settings().solid_color_scrollbars)
78 return false; 79 return false;
79 return LayerImpl::WillDraw(draw_mode, resource_provider); 80 return LayerImpl::WillDraw(draw_mode, resource_provider);
80 } 81 }
81 82
(...skipping 15 matching lines...) Expand all
97 if (layer_tree_impl()->settings().solid_color_scrollbars) { 98 if (layer_tree_impl()->settings().solid_color_scrollbars) {
98 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 99 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
99 quad->SetNew(shared_quad_state, 100 quad->SetNew(shared_quad_state,
100 thumb_quad_rect, 101 thumb_quad_rect,
101 layer_tree_impl()->settings().solid_color_scrollbar_color, 102 layer_tree_impl()->settings().solid_color_scrollbar_color,
102 false); 103 false);
103 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); 104 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
104 return; 105 return;
105 } 106 }
106 107
107 if (thumb_resource_id_ && !thumb_quad_rect.IsEmpty()) { 108 gfx::Rect track_quad_rect = content_bounds_rect;
109
110 ResourceProvider::ResourceId thumb_resource_id =
111 layer_tree_impl()->ResourceIdForUIResource(thumb_ui_resource_id_);
112 ResourceProvider::ResourceId track_resource_id =
113 layer_tree_impl()->ResourceIdForUIResource(track_ui_resource_id_);
114
115 if (thumb_resource_id && !thumb_quad_rect.IsEmpty()) {
108 gfx::Rect opaque_rect; 116 gfx::Rect opaque_rect;
109 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 117 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
110 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); 118 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
111 quad->SetNew(shared_quad_state, 119 quad->SetNew(shared_quad_state,
112 thumb_quad_rect, 120 thumb_quad_rect,
113 opaque_rect, 121 opaque_rect,
114 thumb_resource_id_, 122 thumb_resource_id,
115 premultipled_alpha, 123 premultipled_alpha,
116 uv_top_left, 124 uv_top_left,
117 uv_bottom_right, 125 uv_bottom_right,
118 SK_ColorTRANSPARENT, 126 SK_ColorTRANSPARENT,
119 opacity, 127 opacity,
120 flipped); 128 flipped);
121 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); 129 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
122 } 130 }
123 131
124 if (!track_resource_id_) 132 if (track_resource_id && !track_quad_rect.IsEmpty()) {
125 return; 133 gfx::Rect opaque_rect(contents_opaque() ? track_quad_rect : gfx::Rect());
126
127 // Order matters here: since the back track texture is being drawn to the
128 // entire contents rect, we must append it after the thumb and fore track
129 // quads. The back track texture contains (and displays) the buttons.
130 if (!content_bounds_rect.IsEmpty()) {
131 gfx::Rect quad_rect(content_bounds_rect);
132 gfx::Rect opaque_rect(contents_opaque() ? quad_rect : gfx::Rect());
133 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f}; 134 const float opacity[] = {1.0f, 1.0f, 1.0f, 1.0f};
134 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create(); 135 scoped_ptr<TextureDrawQuad> quad = TextureDrawQuad::Create();
135 quad->SetNew(shared_quad_state, 136 quad->SetNew(shared_quad_state,
136 quad_rect, 137 track_quad_rect,
137 opaque_rect, 138 opaque_rect,
138 track_resource_id_, 139 track_resource_id,
139 premultipled_alpha, 140 premultipled_alpha,
140 uv_top_left, 141 uv_top_left,
141 uv_bottom_right, 142 uv_bottom_right,
142 SK_ColorTRANSPARENT, 143 SK_ColorTRANSPARENT,
143 opacity, 144 opacity,
144 flipped); 145 flipped);
145 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data); 146 quad_sink->Append(quad.PassAs<DrawQuad>(), append_quads_data);
146 } 147 }
147 } 148 }
148 149
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
250 thumb_rect = gfx::RectF(thumb_offset, vertical_adjust_, 251 thumb_rect = gfx::RectF(thumb_offset, vertical_adjust_,
251 thumb_length, thumb_thickness_); 252 thumb_length, thumb_thickness_);
252 } else { 253 } else {
253 thumb_rect = gfx::RectF(0.f, thumb_offset, 254 thumb_rect = gfx::RectF(0.f, thumb_offset,
254 thumb_thickness_, thumb_length); 255 thumb_thickness_, thumb_length);
255 } 256 }
256 257
257 return ScrollbarLayerRectToContentRect(thumb_rect); 258 return ScrollbarLayerRectToContentRect(thumb_rect);
258 } 259 }
259 260
260 void ScrollbarLayerImpl::DidLoseOutputSurface() {
261 track_resource_id_ = 0;
262 thumb_resource_id_ = 0;
263 }
264
265 const char* ScrollbarLayerImpl::LayerTypeAsString() const { 261 const char* ScrollbarLayerImpl::LayerTypeAsString() const {
266 return "cc::ScrollbarLayerImpl"; 262 return "cc::ScrollbarLayerImpl";
267 } 263 }
268 264
269 } // namespace cc 265 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698