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

Side by Side Diff: cc/layer_impl.cc

Issue 11280263: Organize internal properties of cc/ layer types (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed all feedback so far 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 "cc/debug_border_draw_quad.h" 9 #include "cc/debug_border_draw_quad.h"
10 #include "cc/debug_colors.h" 10 #include "cc/debug_colors.h"
(...skipping 29 matching lines...) Expand all
40 , m_contentsOpaque(false) 40 , m_contentsOpaque(false)
41 , m_opacity(1.0) 41 , m_opacity(1.0)
42 , m_preserves3D(false) 42 , m_preserves3D(false)
43 , m_useParentBackfaceVisibility(false) 43 , m_useParentBackfaceVisibility(false)
44 , m_drawCheckerboardForMissingTiles(false) 44 , m_drawCheckerboardForMissingTiles(false)
45 , m_useLCDText(false) 45 , m_useLCDText(false)
46 , m_drawsContent(false) 46 , m_drawsContent(false)
47 , m_forceRenderSurface(false) 47 , m_forceRenderSurface(false)
48 , m_isContainerForFixedPositionLayers(false) 48 , m_isContainerForFixedPositionLayers(false)
49 , m_fixedToContainerLayer(false) 49 , m_fixedToContainerLayer(false)
50 , m_renderTarget(0)
51 , m_drawDepth(0) 50 , m_drawDepth(0)
52 , m_drawOpacity(0)
53 , m_drawOpacityIsAnimating(false)
54 , m_drawTransformIsAnimating(false)
55 , m_screenSpaceTransformIsAnimating(false)
56 , m_isClipped(false)
57 #ifndef NDEBUG 51 #ifndef NDEBUG
58 , m_betweenWillDrawAndDidDraw(false) 52 , m_betweenWillDrawAndDidDraw(false)
59 #endif 53 #endif
60 , m_layerAnimationController(LayerAnimationController::create(this)) 54 , m_layerAnimationController(LayerAnimationController::create(this))
61 { 55 {
62 DCHECK(m_layerId > 0); 56 DCHECK(m_layerId > 0);
63 } 57 }
64 58
65 LayerImpl::~LayerImpl() 59 LayerImpl::~LayerImpl()
66 { 60 {
(...skipping 30 matching lines...) Expand all
97 m_children[0]->removeFromParent(); 91 m_children[0]->removeFromParent();
98 } 92 }
99 93
100 void LayerImpl::clearChildList() 94 void LayerImpl::clearChildList()
101 { 95 {
102 m_children.clear(); 96 m_children.clear();
103 } 97 }
104 98
105 void LayerImpl::createRenderSurface() 99 void LayerImpl::createRenderSurface()
106 { 100 {
107 DCHECK(!m_renderSurface); 101 DCHECK(!m_drawProperties.render_surface);
108 m_renderSurface = make_scoped_ptr(new RenderSurfaceImpl(this)); 102 m_drawProperties.render_surface = make_scoped_ptr(new RenderSurfaceImpl(this ));
109 setRenderTarget(this); 103 m_drawProperties.render_target = this;
110 } 104 }
111 105
112 int LayerImpl::descendantsDrawContent() 106 int LayerImpl::descendantsDrawContent()
113 { 107 {
114 int result = 0; 108 int result = 0;
115 for (size_t i = 0; i < m_children.size(); ++i) { 109 for (size_t i = 0; i < m_children.size(); ++i) {
116 if (m_children[i]->drawsContent()) 110 if (m_children[i]->drawsContent())
117 ++result; 111 ++result;
118 result += m_children[i]->descendantsDrawContent(); 112 result += m_children[i]->descendantsDrawContent();
119 if (result > 1) 113 if (result > 1)
120 return result; 114 return result;
121 } 115 }
122 return result; 116 return result;
123 } 117 }
124 118
125 scoped_ptr<SharedQuadState> LayerImpl::createSharedQuadState() const 119 scoped_ptr<SharedQuadState> LayerImpl::createSharedQuadState() const
126 { 120 {
127 scoped_ptr<SharedQuadState> state = SharedQuadState::Create(); 121 scoped_ptr<SharedQuadState> state = SharedQuadState::Create();
128 state->SetAll(m_drawTransform, m_visibleContentRect, m_drawableContentRect, m_ clipRect, m_isClipped, m_drawOpacity); 122 state->SetAll(m_drawProperties.target_space_transform,
123 m_drawProperties.visible_content_rect,
124 m_drawProperties.drawable_content_rect,
125 m_drawProperties.clip_rect,
126 m_drawProperties.is_clipped,
127 m_drawProperties.opacity);
129 return state.Pass(); 128 return state.Pass();
130 } 129 }
131 130
132 void LayerImpl::willDraw(ResourceProvider*) 131 void LayerImpl::willDraw(ResourceProvider*)
133 { 132 {
134 #ifndef NDEBUG 133 #ifndef NDEBUG
135 // willDraw/didDraw must be matched. 134 // willDraw/didDraw must be matched.
136 DCHECK(!m_betweenWillDrawAndDidDraw); 135 DCHECK(!m_betweenWillDrawAndDidDraw);
137 m_betweenWillDrawAndDidDraw = true; 136 m_betweenWillDrawAndDidDraw = true;
138 #endif 137 #endif
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 286
288 void LayerImpl::dumpLayerProperties(std::string* str, int indent) const 287 void LayerImpl::dumpLayerProperties(std::string* str, int indent) const
289 { 288 {
290 std::string indentStr = indentString(indent); 289 std::string indentStr = indentString(indent);
291 str->append(indentStr); 290 str->append(indentStr);
292 base::StringAppendF(str, "layer ID: %d\n", m_layerId); 291 base::StringAppendF(str, "layer ID: %d\n", m_layerId);
293 292
294 str->append(indentStr); 293 str->append(indentStr);
295 base::StringAppendF(str, "bounds: %d, %d\n", bounds().width(), bounds().heig ht()); 294 base::StringAppendF(str, "bounds: %d, %d\n", bounds().width(), bounds().heig ht());
296 295
297 if (m_renderTarget) { 296 if (m_drawProperties.render_target) {
298 str->append(indentStr); 297 str->append(indentStr);
299 base::StringAppendF(str, "renderTarget: %d\n", m_renderTarget->m_layerId ); 298 base::StringAppendF(str, "renderTarget: %d\n", m_drawProperties.render_t arget->m_layerId);
300 } 299 }
301 300
302 str->append(indentStr); 301 str->append(indentStr);
303 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y( )); 302 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y( ));
304 303
305 str->append(indentStr); 304 str->append(indentStr);
306 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque); 305 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque);
307 306
308 str->append(indentStr); 307 str->append(indentStr);
308 const gfx::Transform& transform = m_drawProperties.target_space_transform;
309 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f\n", 309 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f\n",
310 m_drawTransform.matrix().getDouble(0, 0), m_drawTransform.matrix().getDo uble(0, 1), m_drawTransform.matrix().getDouble(0, 2), m_drawTransform.matrix().g etDouble(0, 3), 310 transform.matrix().getDouble(0, 0), transform.matrix().getDouble(0, 1), transform.matrix().getDouble(0, 2), transform.matrix().getDouble(0, 3),
311 m_drawTransform.matrix().getDouble(1, 0), m_drawTransform.matrix().getDo uble(1, 1), m_drawTransform.matrix().getDouble(1, 2), m_drawTransform.matrix().g etDouble(1, 3), 311 transform.matrix().getDouble(1, 0), transform.matrix().getDouble(1, 1), transform.matrix().getDouble(1, 2), transform.matrix().getDouble(1, 3),
312 m_drawTransform.matrix().getDouble(2, 0), m_drawTransform.matrix().getDo uble(2, 1), m_drawTransform.matrix().getDouble(2, 2), m_drawTransform.matrix().g etDouble(2, 3), 312 transform.matrix().getDouble(2, 0), transform.matrix().getDouble(2, 1), transform.matrix().getDouble(2, 2), transform.matrix().getDouble(2, 3),
313 m_drawTransform.matrix().getDouble(3, 0), m_drawTransform.matrix().getDo uble(3, 1), m_drawTransform.matrix().getDouble(3, 2), m_drawTransform.matrix().g etDouble(3, 3)); 313 transform.matrix().getDouble(3, 0), transform.matrix().getDouble(3, 1), transform.matrix().getDouble(3, 2), transform.matrix().getDouble(3, 3));
314 314
315 str->append(indentStr); 315 str->append(indentStr);
316 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no" ); 316 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no" );
317 } 317 }
318 318
319 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter* layerSorter) 319 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter* layerSorter)
320 { 320 {
321 TRACE_EVENT0("cc", "LayerImpl::sortLayers"); 321 TRACE_EVENT0("cc", "LayerImpl::sortLayers");
322 layerSorter->sort(first, end); 322 layerSorter->sort(first, end);
323 } 323 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 { 359 {
360 if (m_layerSurfacePropertyChanged) 360 if (m_layerSurfacePropertyChanged)
361 return true; 361 return true;
362 362
363 // If this layer's surface property hasn't changed, we want to see if 363 // If this layer's surface property hasn't changed, we want to see if
364 // some layer above us has changed this property. This is done for the 364 // some layer above us has changed this property. This is done for the
365 // case when such parent layer does not draw content, and therefore will 365 // case when such parent layer does not draw content, and therefore will
366 // not be traversed by the damage tracker. We need to make sure that 366 // not be traversed by the damage tracker. We need to make sure that
367 // property change on such layer will be caught by its descendants. 367 // property change on such layer will be caught by its descendants.
368 LayerImpl* current = this->m_parent; 368 LayerImpl* current = this->m_parent;
369 while (current && !current->m_renderSurface) { 369 while (current && !current->m_drawProperties.render_surface) {
370 if (current->m_layerSurfacePropertyChanged) 370 if (current->m_layerSurfacePropertyChanged)
371 return true; 371 return true;
372 current = current->m_parent; 372 current = current->m_parent;
373 } 373 }
374 374
375 return false; 375 return false;
376 } 376 }
377 377
378 void LayerImpl::noteLayerPropertyChangedForSubtree() 378 void LayerImpl::noteLayerPropertyChangedForSubtree()
379 { 379 {
(...skipping 12 matching lines...) Expand all
392 return "Layer"; 392 return "Layer";
393 } 393 }
394 394
395 void LayerImpl::resetAllChangeTrackingForSubtree() 395 void LayerImpl::resetAllChangeTrackingForSubtree()
396 { 396 {
397 m_layerPropertyChanged = false; 397 m_layerPropertyChanged = false;
398 m_layerSurfacePropertyChanged = false; 398 m_layerSurfacePropertyChanged = false;
399 399
400 m_updateRect = gfx::RectF(); 400 m_updateRect = gfx::RectF();
401 401
402 if (m_renderSurface) 402 if (m_drawProperties.render_surface)
403 m_renderSurface->resetPropertyChangedFlag(); 403 m_drawProperties.render_surface->resetPropertyChangedFlag();
404 404
405 if (m_maskLayer) 405 if (m_maskLayer)
406 m_maskLayer->resetAllChangeTrackingForSubtree(); 406 m_maskLayer->resetAllChangeTrackingForSubtree();
407 407
408 if (m_replicaLayer) 408 if (m_replicaLayer)
409 m_replicaLayer->resetAllChangeTrackingForSubtree(); // also resets the r eplica mask, if it exists. 409 m_replicaLayer->resetAllChangeTrackingForSubtree(); // also resets the r eplica mask, if it exists.
410 410
411 for (size_t i = 0; i < m_children.size(); ++i) 411 for (size_t i = 0; i < m_children.size(); ++i)
412 m_children[i]->resetAllChangeTrackingForSubtree(); 412 m_children[i]->resetAllChangeTrackingForSubtree();
413 } 413 }
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
723 723
724 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) 724 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer)
725 { 725 {
726 if (!m_scrollbarAnimationController) 726 if (!m_scrollbarAnimationController)
727 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); 727 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is);
728 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); 728 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer);
729 m_scrollbarAnimationController->updateScrollOffset(this); 729 m_scrollbarAnimationController->updateScrollOffset(this);
730 } 730 }
731 731
732 } // namespace cc 732 } // namespace cc
OLDNEW
« cc/draw_properties.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