OLD | NEW |
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" |
11 #include "cc/layer_tree_host_impl.h" | 11 #include "cc/layer_tree_host_impl.h" |
12 #include "cc/math_util.h" | 12 #include "cc/math_util.h" |
13 #include "cc/proxy.h" | 13 #include "cc/proxy.h" |
14 #include "cc/quad_sink.h" | 14 #include "cc/quad_sink.h" |
15 #include "cc/scrollbar_animation_controller.h" | 15 #include "cc/scrollbar_animation_controller.h" |
16 #include "ui/gfx/point_conversions.h" | 16 #include "ui/gfx/point_conversions.h" |
17 #include "ui/gfx/rect_conversions.h" | 17 #include "ui/gfx/rect_conversions.h" |
18 | 18 |
19 namespace cc { | 19 namespace cc { |
20 | 20 |
21 LayerImpl::LayerImpl(int id) | 21 LayerImpl::LayerImpl(LayerTreeHostImpl* hostImpl, int id) |
22 : m_parent(0) | 22 : m_parent(0) |
23 , m_maskLayerId(-1) | 23 , m_maskLayerId(-1) |
24 , m_replicaLayerId(-1) | 24 , m_replicaLayerId(-1) |
25 , m_layerId(id) | 25 , m_layerId(id) |
26 , m_layerTreeHostImpl(0) | 26 , m_layerTreeHostImpl(hostImpl) |
27 , m_anchorPoint(0.5, 0.5) | 27 , m_anchorPoint(0.5, 0.5) |
28 , m_anchorPointZ(0) | 28 , m_anchorPointZ(0) |
29 , m_contentsScaleX(1.0) | 29 , m_contentsScaleX(1.0) |
30 , m_contentsScaleY(1.0) | 30 , m_contentsScaleY(1.0) |
31 , m_scrollable(false) | 31 , m_scrollable(false) |
32 , m_shouldScrollOnMainThread(false) | 32 , m_shouldScrollOnMainThread(false) |
33 , m_haveWheelEventHandlers(false) | 33 , m_haveWheelEventHandlers(false) |
34 , m_backgroundColor(0) | 34 , m_backgroundColor(0) |
35 , m_doubleSided(true) | 35 , m_doubleSided(true) |
36 , m_layerPropertyChanged(false) | 36 , m_layerPropertyChanged(false) |
37 , m_layerSurfacePropertyChanged(false) | 37 , m_layerSurfacePropertyChanged(false) |
38 , m_masksToBounds(false) | 38 , m_masksToBounds(false) |
39 , m_contentsOpaque(false) | 39 , m_contentsOpaque(false) |
40 , m_opacity(1.0) | 40 , m_opacity(1.0) |
41 , m_preserves3D(false) | 41 , m_preserves3D(false) |
42 , m_useParentBackfaceVisibility(false) | 42 , m_useParentBackfaceVisibility(false) |
43 , m_drawCheckerboardForMissingTiles(false) | 43 , m_drawCheckerboardForMissingTiles(false) |
44 , m_useLCDText(false) | 44 , m_useLCDText(false) |
45 , m_drawsContent(false) | 45 , m_drawsContent(false) |
46 , m_forceRenderSurface(false) | 46 , m_forceRenderSurface(false) |
47 , m_isContainerForFixedPositionLayers(false) | 47 , m_isContainerForFixedPositionLayers(false) |
48 , m_fixedToContainerLayer(false) | 48 , m_fixedToContainerLayer(false) |
49 , m_drawDepth(0) | 49 , m_drawDepth(0) |
50 #ifndef NDEBUG | 50 #ifndef NDEBUG |
51 , m_betweenWillDrawAndDidDraw(false) | 51 , m_betweenWillDrawAndDidDraw(false) |
52 #endif | 52 #endif |
53 , m_layerAnimationController(LayerAnimationController::create(this)) | 53 , m_layerAnimationController(LayerAnimationController::create(this)) |
54 { | 54 { |
55 DCHECK(m_layerId > 0); | 55 DCHECK(m_layerId > 0); |
| 56 DCHECK(m_layerTreeHostImpl); |
56 } | 57 } |
57 | 58 |
58 LayerImpl::~LayerImpl() | 59 LayerImpl::~LayerImpl() |
59 { | 60 { |
60 #ifndef NDEBUG | 61 #ifndef NDEBUG |
61 DCHECK(!m_betweenWillDrawAndDidDraw); | 62 DCHECK(!m_betweenWillDrawAndDidDraw); |
62 #endif | 63 #endif |
63 } | 64 } |
64 | 65 |
65 void LayerImpl::addChild(scoped_ptr<LayerImpl> child) | 66 void LayerImpl::addChild(scoped_ptr<LayerImpl> child) |
66 { | 67 { |
67 child->setParent(this); | 68 child->setParent(this); |
| 69 DCHECK_EQ(layerTreeHostImpl(), child->layerTreeHostImpl()); |
68 m_children.append(child.Pass()); | 70 m_children.append(child.Pass()); |
69 } | 71 } |
70 | 72 |
71 void LayerImpl::removeFromParent() | 73 void LayerImpl::removeFromParent() |
72 { | 74 { |
73 if (!m_parent) | 75 if (!m_parent) |
74 return; | 76 return; |
75 | 77 |
76 LayerImpl* parent = m_parent; | 78 LayerImpl* parent = m_parent; |
77 m_parent = 0; | 79 m_parent = 0; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 void LayerImpl::didDraw(ResourceProvider*) | 141 void LayerImpl::didDraw(ResourceProvider*) |
140 { | 142 { |
141 #ifndef NDEBUG | 143 #ifndef NDEBUG |
142 DCHECK(m_betweenWillDrawAndDidDraw); | 144 DCHECK(m_betweenWillDrawAndDidDraw); |
143 m_betweenWillDrawAndDidDraw = false; | 145 m_betweenWillDrawAndDidDraw = false; |
144 #endif | 146 #endif |
145 } | 147 } |
146 | 148 |
147 bool LayerImpl::showDebugBorders() const | 149 bool LayerImpl::showDebugBorders() const |
148 { | 150 { |
149 if (!m_layerTreeHostImpl) | |
150 return false; | |
151 return m_layerTreeHostImpl->debugState().showDebugBorders; | 151 return m_layerTreeHostImpl->debugState().showDebugBorders; |
152 } | 152 } |
153 | 153 |
154 void LayerImpl::getDebugBorderProperties(SkColor* color, float* width) const | 154 void LayerImpl::getDebugBorderProperties(SkColor* color, float* width) const |
155 { | 155 { |
156 if (m_drawsContent) { | 156 if (m_drawsContent) { |
157 *color = DebugColors::ContentLayerBorderColor(); | 157 *color = DebugColors::ContentLayerBorderColor(); |
158 *width = DebugColors::ContentLayerBorderWidth(m_layerTreeHostImpl); | 158 *width = DebugColors::ContentLayerBorderWidth(m_layerTreeHostImpl); |
159 return; | 159 return; |
160 } | 160 } |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 m_bounds = bounds; | 443 m_bounds = bounds; |
444 | 444 |
445 if (masksToBounds()) | 445 if (masksToBounds()) |
446 noteLayerPropertyChangedForSubtree(); | 446 noteLayerPropertyChangedForSubtree(); |
447 else | 447 else |
448 m_layerPropertyChanged = true; | 448 m_layerPropertyChanged = true; |
449 } | 449 } |
450 | 450 |
451 void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer) | 451 void LayerImpl::setMaskLayer(scoped_ptr<LayerImpl> maskLayer) |
452 { | 452 { |
| 453 if (maskLayer) |
| 454 DCHECK_EQ(layerTreeHostImpl(), maskLayer->layerTreeHostImpl()); |
453 m_maskLayer = maskLayer.Pass(); | 455 m_maskLayer = maskLayer.Pass(); |
454 | 456 |
455 int newLayerId = m_maskLayer ? m_maskLayer->id() : -1; | 457 int newLayerId = m_maskLayer ? m_maskLayer->id() : -1; |
456 if (newLayerId == m_maskLayerId) | 458 if (newLayerId == m_maskLayerId) |
457 return; | 459 return; |
458 | 460 |
459 m_maskLayerId = newLayerId; | 461 m_maskLayerId = newLayerId; |
460 noteLayerPropertyChangedForSubtree(); | 462 noteLayerPropertyChangedForSubtree(); |
461 } | 463 } |
462 | 464 |
463 void LayerImpl::setReplicaLayer(scoped_ptr<LayerImpl> replicaLayer) | 465 void LayerImpl::setReplicaLayer(scoped_ptr<LayerImpl> replicaLayer) |
464 { | 466 { |
| 467 if (replicaLayer) |
| 468 DCHECK_EQ(layerTreeHostImpl(), replicaLayer->layerTreeHostImpl()); |
465 m_replicaLayer = replicaLayer.Pass(); | 469 m_replicaLayer = replicaLayer.Pass(); |
466 | 470 |
467 int newLayerId = m_replicaLayer ? m_replicaLayer->id() : -1; | 471 int newLayerId = m_replicaLayer ? m_replicaLayer->id() : -1; |
468 if (newLayerId == m_replicaLayerId) | 472 if (newLayerId == m_replicaLayerId) |
469 return; | 473 return; |
470 | 474 |
471 m_replicaLayerId = newLayerId; | 475 m_replicaLayerId = newLayerId; |
472 noteLayerPropertyChangedForSubtree(); | 476 noteLayerPropertyChangedForSubtree(); |
473 } | 477 } |
474 | 478 |
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
716 | 720 |
717 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) | 721 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) |
718 { | 722 { |
719 if (!m_scrollbarAnimationController) | 723 if (!m_scrollbarAnimationController) |
720 m_scrollbarAnimationController = ScrollbarAnimationController::create(th
is); | 724 m_scrollbarAnimationController = ScrollbarAnimationController::create(th
is); |
721 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); | 725 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); |
722 m_scrollbarAnimationController->updateScrollOffset(this); | 726 m_scrollbarAnimationController->updateScrollOffset(this); |
723 } | 727 } |
724 | 728 |
725 } // namespace cc | 729 } // namespace cc |
OLD | NEW |