| 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_tree_host_common.h" | 5 #include "cc/layer_tree_host_common.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/debug/trace_event.h" | 9 #include "base/debug/trace_event.h" |
| 10 #include "cc/layer.h" | 10 #include "cc/layer.h" |
| (...skipping 673 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 684 | 684 |
| 685 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless | 685 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless |
| 686 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. | 686 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. |
| 687 layerDrawProperties.target_space_transform = combinedTransform; | 687 layerDrawProperties.target_space_transform = combinedTransform; |
| 688 // M[draw] = M[parent] * LT * S[layer2content] | 688 // M[draw] = M[parent] * LT * S[layer2content] |
| 689 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); | 689 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); |
| 690 | 690 |
| 691 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. | 691 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. |
| 692 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; | 692 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; |
| 693 if (!layer->preserves3D()) | 693 if (!layer->preserves3D()) |
| 694 MathUtil::flattenTransformTo2d(layerDrawProperties.screen_space_transfor
m); | 694 layerDrawProperties.screen_space_transform.FlattenTo2d(); |
| 695 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); | 695 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); |
| 696 | 696 |
| 697 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. | 697 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. |
| 698 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; | 698 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; |
| 699 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. | 699 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. |
| 700 bool layerCanUseLCDText = subtreeCanUseLCDText && | 700 bool layerCanUseLCDText = subtreeCanUseLCDText && |
| 701 (accumulatedDrawOpacity == 1.0) && | 701 (accumulatedDrawOpacity == 1.0) && |
| 702 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); | 702 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); |
| 703 | 703 |
| 704 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); | 704 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 838 subtreeShouldBeClipped = true; | 838 subtreeShouldBeClipped = true; |
| 839 if (ancestorClipsSubtree && !layer->renderSurface()) { | 839 if (ancestorClipsSubtree && !layer->renderSurface()) { |
| 840 clipRectForSubtree = clipRectFromAncestor; | 840 clipRectForSubtree = clipRectFromAncestor; |
| 841 clipRectForSubtree.Intersect(rectInTargetSpace); | 841 clipRectForSubtree.Intersect(rectInTargetSpace); |
| 842 } else | 842 } else |
| 843 clipRectForSubtree = rectInTargetSpace; | 843 clipRectForSubtree = rectInTargetSpace; |
| 844 } | 844 } |
| 845 | 845 |
| 846 // Flatten to 2D if the layer doesn't preserve 3D. | 846 // Flatten to 2D if the layer doesn't preserve 3D. |
| 847 if (!layer->preserves3D()) | 847 if (!layer->preserves3D()) |
| 848 MathUtil::flattenTransformTo2d(sublayerMatrix); | 848 sublayerMatrix.FlattenTo2d(); |
| 849 | 849 |
| 850 // Apply the sublayer transform at the center of the layer. | 850 // Apply the sublayer transform at the center of the layer. |
| 851 if (!layer->sublayerTransform().IsIdentity()) { | 851 if (!layer->sublayerTransform().IsIdentity()) { |
| 852 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); | 852 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); |
| 853 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); | 853 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); |
| 854 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); | 854 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); |
| 855 } | 855 } |
| 856 | 856 |
| 857 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); | 857 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); |
| 858 | 858 |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1174 | 1174 |
| 1175 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up | 1175 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up |
| 1176 // the parents to ensure that the layer was not clipped in such a way that the | 1176 // the parents to ensure that the layer was not clipped in such a way that the |
| 1177 // hit point actually should not hit the layer. | 1177 // hit point actually should not hit the layer. |
| 1178 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) | 1178 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) |
| 1179 return false; | 1179 return false; |
| 1180 | 1180 |
| 1181 return true; | 1181 return true; |
| 1182 } | 1182 } |
| 1183 } // namespace cc | 1183 } // namespace cc |
| OLD | NEW |