| 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 "config.h" | 5 #include "config.h" |
| 6 | 6 |
| 7 #include "CCLayerTreeHostCommon.h" | 7 #include "CCLayerTreeHostCommon.h" |
| 8 | 8 |
| 9 #include "CCLayerImpl.h" | 9 #include "CCLayerImpl.h" |
| 10 #include "CCLayerIterator.h" | 10 #include "CCLayerIterator.h" |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 235 | 235 |
| 236 // If the layer uses a mask. | 236 // If the layer uses a mask. |
| 237 if (layer->maskLayer()) | 237 if (layer->maskLayer()) |
| 238 return true; | 238 return true; |
| 239 | 239 |
| 240 // If the layer has a reflection. | 240 // If the layer has a reflection. |
| 241 if (layer->replicaLayer()) | 241 if (layer->replicaLayer()) |
| 242 return true; | 242 return true; |
| 243 | 243 |
| 244 // If the layer uses a CSS filter. | 244 // If the layer uses a CSS filter. |
| 245 if (!layer->filters().isEmpty() || !layer->backgroundFilters().isEmpty()) | 245 if (!layer->filters().isEmpty() || !layer->backgroundFilters().isEmpty() ||
layer->filter()) |
| 246 return true; | 246 return true; |
| 247 | 247 |
| 248 // If the layer flattens its subtree (i.e. the layer doesn't preserve-3d), b
ut it is | 248 // If the layer flattens its subtree (i.e. the layer doesn't preserve-3d), b
ut it is |
| 249 // treated as a 3D object by its parent (i.e. parent does preserve-3d). | 249 // treated as a 3D object by its parent (i.e. parent does preserve-3d). |
| 250 if (layerIsInExisting3DRenderingContext(layer) && !layer->preserves3D() && d
escendantDrawsContent) | 250 if (layerIsInExisting3DRenderingContext(layer) && !layer->preserves3D() && d
escendantDrawsContent) |
| 251 return true; | 251 return true; |
| 252 | 252 |
| 253 // If the layer clips its descendants but it is not axis-aligned with respec
t to its parent. | 253 // If the layer clips its descendants but it is not axis-aligned with respec
t to its parent. |
| 254 if (layerClipsSubtree(layer) && !axisAlignedWithRespectToParent && descendan
tDrawsContent) | 254 if (layerClipsSubtree(layer) && !axisAlignedWithRespectToParent && descendan
tDrawsContent) |
| 255 return true; | 255 return true; |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 569 if (layer->maskLayer()) { | 569 if (layer->maskLayer()) { |
| 570 layer->maskLayer()->setRenderTarget(layer); | 570 layer->maskLayer()->setRenderTarget(layer); |
| 571 layer->maskLayer()->setVisibleContentRect(IntRect(IntPoint(), layer-
>contentBounds())); | 571 layer->maskLayer()->setVisibleContentRect(IntRect(IntPoint(), layer-
>contentBounds())); |
| 572 } | 572 } |
| 573 | 573 |
| 574 if (layer->replicaLayer() && layer->replicaLayer()->maskLayer()) { | 574 if (layer->replicaLayer() && layer->replicaLayer()->maskLayer()) { |
| 575 layer->replicaLayer()->maskLayer()->setRenderTarget(layer); | 575 layer->replicaLayer()->maskLayer()->setRenderTarget(layer); |
| 576 layer->replicaLayer()->maskLayer()->setVisibleContentRect(IntRect(In
tPoint(), layer->contentBounds())); | 576 layer->replicaLayer()->maskLayer()->setVisibleContentRect(IntRect(In
tPoint(), layer->contentBounds())); |
| 577 } | 577 } |
| 578 | 578 |
| 579 if (layer->filters().hasFilterThatMovesPixels()) | 579 // FIXME: make this smarter for the SkImageFilter case (check for |
| 580 // pixel-moving filters) |
| 581 if (layer->filters().hasFilterThatMovesPixels() || layer->filter()) |
| 580 nearestAncestorThatMovesPixels = renderSurface; | 582 nearestAncestorThatMovesPixels = renderSurface; |
| 581 | 583 |
| 582 // The render surface clipRect is expressed in the space where this surf
ace draws, i.e. the same space as clipRectFromAncestor. | 584 // The render surface clipRect is expressed in the space where this surf
ace draws, i.e. the same space as clipRectFromAncestor. |
| 583 if (ancestorClipsSubtree) | 585 if (ancestorClipsSubtree) |
| 584 renderSurface->setClipRect(clipRectFromAncestor); | 586 renderSurface->setClipRect(clipRectFromAncestor); |
| 585 else | 587 else |
| 586 renderSurface->setClipRect(IntRect()); | 588 renderSurface->setClipRect(IntRect()); |
| 587 | 589 |
| 588 renderSurface->setNearestAncestorThatMovesPixels(nearestAncestorThatMove
sPixels); | 590 renderSurface->setNearestAncestorThatMovesPixels(nearestAncestorThatMove
sPixels); |
| 589 | 591 |
| (...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 855 | 857 |
| 856 foundLayer = currentLayer; | 858 foundLayer = currentLayer; |
| 857 break; | 859 break; |
| 858 } | 860 } |
| 859 | 861 |
| 860 // This can potentially return 0, which means the screenSpacePoint did not s
uccessfully hit test any layers, not even the root layer. | 862 // This can potentially return 0, which means the screenSpacePoint did not s
uccessfully hit test any layers, not even the root layer. |
| 861 return foundLayer; | 863 return foundLayer; |
| 862 } | 864 } |
| 863 | 865 |
| 864 } // namespace cc | 866 } // namespace cc |
| OLD | NEW |