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

Side by Side Diff: cc/layer_impl.cc

Issue 11519018: [cc] Make LayerImpls point at LayerTreeImpl instead of LTHI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/layer_impl.h" 5 #include "cc/layer_impl.h"
6 6
7 #include "base/debug/trace_event.h" 7 #include "base/debug/trace_event.h"
8 #include "base/stringprintf.h" 8 #include "base/stringprintf.h"
9 #include "base/values.h" 9 #include "base/values.h"
10 #include "cc/debug_border_draw_quad.h" 10 #include "cc/debug_border_draw_quad.h"
11 #include "cc/debug_colors.h" 11 #include "cc/debug_colors.h"
12 #include "cc/layer_tree_host_impl.h" 12 #include "cc/layer_tree_host_impl.h"
13 #include "cc/layer_tree_impl.h"
13 #include "cc/math_util.h" 14 #include "cc/math_util.h"
14 #include "cc/proxy.h" 15 #include "cc/proxy.h"
15 #include "cc/quad_sink.h" 16 #include "cc/quad_sink.h"
16 #include "cc/scrollbar_animation_controller.h" 17 #include "cc/scrollbar_animation_controller.h"
17 #include "ui/gfx/point_conversions.h" 18 #include "ui/gfx/point_conversions.h"
18 #include "ui/gfx/rect_conversions.h" 19 #include "ui/gfx/rect_conversions.h"
19 20
20 namespace cc { 21 namespace cc {
21 22
22 LayerImpl::LayerImpl(LayerTreeHostImpl* hostImpl, int id) 23 LayerImpl::LayerImpl(LayerTreeImpl* treeImpl, int id)
23 : m_parent(0) 24 : m_parent(0)
24 , m_maskLayerId(-1) 25 , m_maskLayerId(-1)
25 , m_replicaLayerId(-1) 26 , m_replicaLayerId(-1)
26 , m_layerId(id) 27 , m_layerId(id)
27 , m_layerTreeHostImpl(hostImpl) 28 , m_layerTreeImpl(treeImpl)
28 , m_anchorPoint(0.5, 0.5) 29 , m_anchorPoint(0.5, 0.5)
29 , m_anchorPointZ(0) 30 , m_anchorPointZ(0)
30 , m_contentsScaleX(1.0) 31 , m_contentsScaleX(1.0)
31 , m_contentsScaleY(1.0) 32 , m_contentsScaleY(1.0)
32 , m_scrollable(false) 33 , m_scrollable(false)
33 , m_shouldScrollOnMainThread(false) 34 , m_shouldScrollOnMainThread(false)
34 , m_haveWheelEventHandlers(false) 35 , m_haveWheelEventHandlers(false)
35 , m_backgroundColor(0) 36 , m_backgroundColor(0)
36 , m_doubleSided(true) 37 , m_doubleSided(true)
37 , m_layerPropertyChanged(false) 38 , m_layerPropertyChanged(false)
38 , m_layerSurfacePropertyChanged(false) 39 , m_layerSurfacePropertyChanged(false)
39 , m_masksToBounds(false) 40 , m_masksToBounds(false)
40 , m_contentsOpaque(false) 41 , m_contentsOpaque(false)
41 , m_opacity(1.0) 42 , m_opacity(1.0)
42 , m_preserves3D(false) 43 , m_preserves3D(false)
43 , m_useParentBackfaceVisibility(false) 44 , m_useParentBackfaceVisibility(false)
44 , m_drawCheckerboardForMissingTiles(false) 45 , m_drawCheckerboardForMissingTiles(false)
45 , m_useLCDText(false) 46 , m_useLCDText(false)
46 , m_drawsContent(false) 47 , m_drawsContent(false)
47 , m_forceRenderSurface(false) 48 , m_forceRenderSurface(false)
48 , m_isContainerForFixedPositionLayers(false) 49 , m_isContainerForFixedPositionLayers(false)
49 , m_fixedToContainerLayer(false) 50 , m_fixedToContainerLayer(false)
50 , m_drawDepth(0) 51 , m_drawDepth(0)
51 #ifndef NDEBUG 52 #ifndef NDEBUG
52 , m_betweenWillDrawAndDidDraw(false) 53 , m_betweenWillDrawAndDidDraw(false)
53 #endif 54 #endif
54 , m_layerAnimationController(LayerAnimationController::create(this)) 55 , m_layerAnimationController(LayerAnimationController::create(this))
55 { 56 {
56 DCHECK(m_layerId > 0); 57 DCHECK(m_layerId > 0);
57 DCHECK(m_layerTreeHostImpl); 58 DCHECK(m_layerTreeImpl);
58 } 59 }
59 60
60 LayerImpl::~LayerImpl() 61 LayerImpl::~LayerImpl()
61 { 62 {
62 #ifndef NDEBUG 63 #ifndef NDEBUG
63 DCHECK(!m_betweenWillDrawAndDidDraw); 64 DCHECK(!m_betweenWillDrawAndDidDraw);
64 #endif 65 #endif
65 } 66 }
66 67
67 void LayerImpl::addChild(scoped_ptr<LayerImpl> child) 68 void LayerImpl::addChild(scoped_ptr<LayerImpl> child)
68 { 69 {
69 child->setParent(this); 70 child->setParent(this);
70 DCHECK_EQ(layerTreeHostImpl(), child->layerTreeHostImpl()); 71 DCHECK_EQ(layerTreeHostImpl(), child->layerTreeHostImpl());
71 m_children.append(child.Pass()); 72 m_children.append(child.Pass());
72 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 73 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
73 } 74 }
74 75
75 scoped_ptr<LayerImpl> LayerImpl::removeChild(LayerImpl* child) 76 scoped_ptr<LayerImpl> LayerImpl::removeChild(LayerImpl* child)
76 { 77 {
77 for (size_t i = 0; i < m_children.size(); ++i) { 78 for (size_t i = 0; i < m_children.size(); ++i) {
78 if (m_children[i] == child) { 79 if (m_children[i] == child) {
79 scoped_ptr<LayerImpl> ret = m_children.take(i); 80 scoped_ptr<LayerImpl> ret = m_children.take(i);
80 m_children.remove(i); 81 m_children.remove(i);
81 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 82 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
82 return ret.Pass(); 83 return ret.Pass();
83 } 84 }
84 } 85 }
85 return scoped_ptr<LayerImpl>(); 86 return scoped_ptr<LayerImpl>();
86 } 87 }
87 88
88 void LayerImpl::removeAllChildren() 89 void LayerImpl::removeAllChildren()
89 { 90 {
90 m_children.clear(); 91 m_children.clear();
91 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 92 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
92 } 93 }
93 94
94 void LayerImpl::clearChildList() 95 void LayerImpl::clearChildList()
95 { 96 {
96 if (m_children.isEmpty()) 97 if (m_children.isEmpty())
97 return; 98 return;
98 99
99 m_children.clear(); 100 m_children.clear();
100 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 101 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
101 } 102 }
102 103
103 void LayerImpl::createRenderSurface() 104 void LayerImpl::createRenderSurface()
104 { 105 {
105 DCHECK(!m_drawProperties.render_surface); 106 DCHECK(!m_drawProperties.render_surface);
106 m_drawProperties.render_surface = make_scoped_ptr(new RenderSurfaceImpl(this )); 107 m_drawProperties.render_surface = make_scoped_ptr(new RenderSurfaceImpl(this ));
107 m_drawProperties.render_target = this; 108 m_drawProperties.render_target = this;
108 } 109 }
109 110
110 int LayerImpl::descendantsDrawContent() 111 int LayerImpl::descendantsDrawContent()
111 { 112 {
112 int result = 0; 113 int result = 0;
113 for (size_t i = 0; i < m_children.size(); ++i) { 114 for (size_t i = 0; i < m_children.size(); ++i) {
114 if (m_children[i]->drawsContent()) 115 if (m_children[i]->drawsContent())
115 ++result; 116 ++result;
116 result += m_children[i]->descendantsDrawContent(); 117 result += m_children[i]->descendantsDrawContent();
117 if (result > 1) 118 if (result > 1)
118 return result; 119 return result;
119 } 120 }
120 return result; 121 return result;
121 } 122 }
122 123
124 LayerTreeHostImpl* LayerImpl::layerTreeHostImpl() const {
125 return m_layerTreeImpl->layer_tree_host_impl();
126 }
127
123 scoped_ptr<SharedQuadState> LayerImpl::createSharedQuadState() const 128 scoped_ptr<SharedQuadState> LayerImpl::createSharedQuadState() const
124 { 129 {
125 scoped_ptr<SharedQuadState> state = SharedQuadState::Create(); 130 scoped_ptr<SharedQuadState> state = SharedQuadState::Create();
126 state->SetAll(m_drawProperties.target_space_transform, 131 state->SetAll(m_drawProperties.target_space_transform,
127 m_drawProperties.visible_content_rect, 132 m_drawProperties.visible_content_rect,
128 m_drawProperties.drawable_content_rect, 133 m_drawProperties.drawable_content_rect,
129 m_drawProperties.clip_rect, 134 m_drawProperties.clip_rect,
130 m_drawProperties.is_clipped, 135 m_drawProperties.is_clipped,
131 m_drawProperties.opacity); 136 m_drawProperties.opacity);
132 return state.Pass(); 137 return state.Pass();
(...skipping 11 matching lines...) Expand all
144 void LayerImpl::didDraw(ResourceProvider*) 149 void LayerImpl::didDraw(ResourceProvider*)
145 { 150 {
146 #ifndef NDEBUG 151 #ifndef NDEBUG
147 DCHECK(m_betweenWillDrawAndDidDraw); 152 DCHECK(m_betweenWillDrawAndDidDraw);
148 m_betweenWillDrawAndDidDraw = false; 153 m_betweenWillDrawAndDidDraw = false;
149 #endif 154 #endif
150 } 155 }
151 156
152 bool LayerImpl::showDebugBorders() const 157 bool LayerImpl::showDebugBorders() const
153 { 158 {
154 return m_layerTreeHostImpl->debugState().showDebugBorders; 159 return layerTreeHostImpl()->debugState().showDebugBorders;
155 } 160 }
156 161
157 void LayerImpl::getDebugBorderProperties(SkColor* color, float* width) const 162 void LayerImpl::getDebugBorderProperties(SkColor* color, float* width) const
158 { 163 {
159 if (m_drawsContent) { 164 if (m_drawsContent) {
160 *color = DebugColors::ContentLayerBorderColor(); 165 *color = DebugColors::ContentLayerBorderColor();
161 *width = DebugColors::ContentLayerBorderWidth(m_layerTreeHostImpl); 166 *width = DebugColors::ContentLayerBorderWidth(layerTreeHostImpl());
162 return; 167 return;
163 } 168 }
164 169
165 if (m_masksToBounds) { 170 if (m_masksToBounds) {
166 *color = DebugColors::MaskingLayerBorderColor(); 171 *color = DebugColors::MaskingLayerBorderColor();
167 *width = DebugColors::MaskingLayerBorderWidth(m_layerTreeHostImpl); 172 *width = DebugColors::MaskingLayerBorderWidth(layerTreeHostImpl());
168 return; 173 return;
169 } 174 }
170 175
171 *color = DebugColors::ContainerLayerBorderColor(); 176 *color = DebugColors::ContainerLayerBorderColor();
172 *width = DebugColors::ContainerLayerBorderWidth(m_layerTreeHostImpl); 177 *width = DebugColors::ContainerLayerBorderWidth(layerTreeHostImpl());
173 } 178 }
174 179
175 void LayerImpl::appendDebugBorderQuad(QuadSink& quadList, const SharedQuadState* sharedQuadState, AppendQuadsData& appendQuadsData) const 180 void LayerImpl::appendDebugBorderQuad(QuadSink& quadList, const SharedQuadState* sharedQuadState, AppendQuadsData& appendQuadsData) const
176 { 181 {
177 if (!showDebugBorders()) 182 if (!showDebugBorders())
178 return; 183 return;
179 184
180 SkColor color; 185 SkColor color;
181 float width; 186 float width;
182 getDebugBorderProperties(&color, &width); 187 getDebugBorderProperties(&color, &width);
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 if (!scrollable()) { 264 if (!scrollable()) {
260 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable"); 265 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored not scrollable");
261 return InputHandlerClient::ScrollIgnored; 266 return InputHandlerClient::ScrollIgnored;
262 } 267 }
263 268
264 return InputHandlerClient::ScrollStarted; 269 return InputHandlerClient::ScrollStarted;
265 } 270 }
266 271
267 bool LayerImpl::drawCheckerboardForMissingTiles() const 272 bool LayerImpl::drawCheckerboardForMissingTiles() const
268 { 273 {
269 return m_drawCheckerboardForMissingTiles && !m_layerTreeHostImpl->settings() .backgroundColorInsteadOfCheckerboard; 274 return m_drawCheckerboardForMissingTiles && !layerTreeHostImpl()->settings() .backgroundColorInsteadOfCheckerboard;
270 } 275 }
271 276
272 gfx::Rect LayerImpl::layerRectToContentRect(const gfx::RectF& layerRect) const 277 gfx::Rect LayerImpl::layerRectToContentRect(const gfx::RectF& layerRect) const
273 { 278 {
274 gfx::RectF contentRect = gfx::ScaleRect(layerRect, contentsScaleX(), content sScaleY()); 279 gfx::RectF contentRect = gfx::ScaleRect(layerRect, contentsScaleX(), content sScaleY());
275 // Intersect with content rect to avoid the extra pixel because for some 280 // Intersect with content rect to avoid the extra pixel because for some
276 // values x and y, ceil((x / y) * y) may be x + 1. 281 // values x and y, ceil((x / y) * y) may be x + 1.
277 contentRect.Intersect(gfx::Rect(gfx::Point(), contentBounds())); 282 contentRect.Intersect(gfx::Rect(gfx::Point(), contentBounds()));
278 return gfx::ToEnclosingRect(contentRect); 283 return gfx::ToEnclosingRect(contentRect);
279 } 284 }
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 return true; 407 return true;
403 current = current->m_parent; 408 current = current->m_parent;
404 } 409 }
405 410
406 return false; 411 return false;
407 } 412 }
408 413
409 void LayerImpl::noteLayerSurfacePropertyChanged() 414 void LayerImpl::noteLayerSurfacePropertyChanged()
410 { 415 {
411 m_layerSurfacePropertyChanged = true; 416 m_layerSurfacePropertyChanged = true;
412 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 417 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
413 } 418 }
414 419
415 void LayerImpl::noteLayerPropertyChanged() 420 void LayerImpl::noteLayerPropertyChanged()
416 { 421 {
417 m_layerPropertyChanged = true; 422 m_layerPropertyChanged = true;
418 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 423 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
419 } 424 }
420 425
421 void LayerImpl::noteLayerPropertyChangedForSubtree() 426 void LayerImpl::noteLayerPropertyChangedForSubtree()
422 { 427 {
423 noteLayerPropertyChanged(); 428 noteLayerPropertyChanged();
424 noteLayerPropertyChangedForDescendants(); 429 noteLayerPropertyChangedForDescendants();
425 } 430 }
426 431
427 void LayerImpl::noteLayerPropertyChangedForDescendants() 432 void LayerImpl::noteLayerPropertyChangedForDescendants()
428 { 433 {
429 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 434 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
430 for (size_t i = 0; i < m_children.size(); ++i) 435 for (size_t i = 0; i < m_children.size(); ++i)
431 m_children[i]->noteLayerPropertyChangedForSubtree(); 436 m_children[i]->noteLayerPropertyChangedForSubtree();
432 } 437 }
433 438
434 const char* LayerImpl::layerTypeAsString() const 439 const char* LayerImpl::layerTypeAsString() const
435 { 440 {
436 return "Layer"; 441 return "Layer";
437 } 442 }
438 443
439 void LayerImpl::resetAllChangeTrackingForSubtree() 444 void LayerImpl::resetAllChangeTrackingForSubtree()
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 void LayerImpl::didLoseOutputSurface() 736 void LayerImpl::didLoseOutputSurface()
732 { 737 {
733 } 738 }
734 739
735 void LayerImpl::setMaxScrollOffset(gfx::Vector2d maxScrollOffset) 740 void LayerImpl::setMaxScrollOffset(gfx::Vector2d maxScrollOffset)
736 { 741 {
737 if (m_maxScrollOffset == maxScrollOffset) 742 if (m_maxScrollOffset == maxScrollOffset)
738 return; 743 return;
739 m_maxScrollOffset = maxScrollOffset; 744 m_maxScrollOffset = maxScrollOffset;
740 745
741 m_layerTreeHostImpl->setNeedsUpdateDrawProperties(); 746 layerTreeHostImpl()->setNeedsUpdateDrawProperties();
742 747
743 if (!m_scrollbarAnimationController) 748 if (!m_scrollbarAnimationController)
744 return; 749 return;
745 m_scrollbarAnimationController->updateScrollOffset(this); 750 m_scrollbarAnimationController->updateScrollOffset(this);
746 } 751 }
747 752
748 ScrollbarLayerImpl* LayerImpl::horizontalScrollbarLayer() 753 ScrollbarLayerImpl* LayerImpl::horizontalScrollbarLayer()
749 { 754 {
750 return m_scrollbarAnimationController ? m_scrollbarAnimationController->hori zontalScrollbarLayer() : 0; 755 return m_scrollbarAnimationController ? m_scrollbarAnimationController->hori zontalScrollbarLayer() : 0;
751 } 756 }
(...skipping 23 matching lines...) Expand all
775 780
776 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) 781 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer)
777 { 782 {
778 if (!m_scrollbarAnimationController) 783 if (!m_scrollbarAnimationController)
779 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); 784 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is);
780 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); 785 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer);
781 m_scrollbarAnimationController->updateScrollOffset(this); 786 m_scrollbarAnimationController->updateScrollOffset(this);
782 } 787 }
783 788
784 } // namespace cc 789 } // namespace cc
OLDNEW
« cc/layer.h ('K') | « cc/layer_impl.h ('k') | cc/layer_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698