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

Side by Side Diff: cc/layer_tree_host_common.cc

Issue 11175009: Implement SkImageFilter support in the compositor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Updated to ToT (past the Great Renaming) Created 8 years, 2 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 | Annotate | Revision Log
« no previous file with comments | « cc/layer_impl_unittest.cc ('k') | cc/layer_tree_host_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 "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
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
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
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
OLDNEW
« no previous file with comments | « cc/layer_impl_unittest.cc ('k') | cc/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698