| 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 662 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 | 673 |
| 674 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless | 674 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless |
| 675 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. | 675 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. |
| 676 layerDrawProperties.target_space_transform = combinedTransform; | 676 layerDrawProperties.target_space_transform = combinedTransform; |
| 677 // M[draw] = M[parent] * LT * S[layer2content] | 677 // M[draw] = M[parent] * LT * S[layer2content] |
| 678 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); | 678 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); |
| 679 | 679 |
| 680 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. | 680 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. |
| 681 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; | 681 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; |
| 682 if (!layer->preserves3D()) | 682 if (!layer->preserves3D()) |
| 683 MathUtil::flattenTransformTo2d(layerDrawProperties.screen_space_transfor
m); | 683 layerDrawProperties.screen_space_transform.FlattenTo2d(); |
| 684 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); | 684 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); |
| 685 | 685 |
| 686 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. | 686 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. |
| 687 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; | 687 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; |
| 688 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. | 688 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. |
| 689 bool layerCanUseLCDText = subtreeCanUseLCDText && | 689 bool layerCanUseLCDText = subtreeCanUseLCDText && |
| 690 (accumulatedDrawOpacity == 1.0) && | 690 (accumulatedDrawOpacity == 1.0) && |
| 691 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); | 691 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); |
| 692 | 692 |
| 693 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); | 693 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 827 subtreeShouldBeClipped = true; | 827 subtreeShouldBeClipped = true; |
| 828 if (ancestorClipsSubtree && !layer->renderSurface()) { | 828 if (ancestorClipsSubtree && !layer->renderSurface()) { |
| 829 clipRectForSubtree = clipRectFromAncestor; | 829 clipRectForSubtree = clipRectFromAncestor; |
| 830 clipRectForSubtree.Intersect(rectInTargetSpace); | 830 clipRectForSubtree.Intersect(rectInTargetSpace); |
| 831 } else | 831 } else |
| 832 clipRectForSubtree = rectInTargetSpace; | 832 clipRectForSubtree = rectInTargetSpace; |
| 833 } | 833 } |
| 834 | 834 |
| 835 // Flatten to 2D if the layer doesn't preserve 3D. | 835 // Flatten to 2D if the layer doesn't preserve 3D. |
| 836 if (!layer->preserves3D()) | 836 if (!layer->preserves3D()) |
| 837 MathUtil::flattenTransformTo2d(sublayerMatrix); | 837 sublayerMatrix.FlattenTo2d(); |
| 838 | 838 |
| 839 // Apply the sublayer transform at the center of the layer. | 839 // Apply the sublayer transform at the center of the layer. |
| 840 if (!layer->sublayerTransform().IsIdentity()) { | 840 if (!layer->sublayerTransform().IsIdentity()) { |
| 841 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); | 841 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); |
| 842 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); | 842 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); |
| 843 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); | 843 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); |
| 844 } | 844 } |
| 845 | 845 |
| 846 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); | 846 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); |
| 847 | 847 |
| (...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1163 | 1163 |
| 1164 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up | 1164 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up |
| 1165 // the parents to ensure that the layer was not clipped in such a way that the | 1165 // the parents to ensure that the layer was not clipped in such a way that the |
| 1166 // hit point actually should not hit the layer. | 1166 // hit point actually should not hit the layer. |
| 1167 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) | 1167 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) |
| 1168 return false; | 1168 return false; |
| 1169 | 1169 |
| 1170 return true; | 1170 return true; |
| 1171 } | 1171 } |
| 1172 } // namespace cc | 1172 } // namespace cc |
| OLD | NEW |