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" |
11 #include "cc/layer_impl.h" | 11 #include "cc/layer_impl.h" |
12 #include "cc/layer_iterator.h" | 12 #include "cc/layer_iterator.h" |
13 #include "cc/layer_sorter.h" | 13 #include "cc/layer_sorter.h" |
14 #include "cc/math_util.h" | 14 #include "cc/math_util.h" |
15 #include "cc/render_surface.h" | 15 #include "cc/render_surface.h" |
16 #include "cc/render_surface_impl.h" | 16 #include "cc/render_surface_impl.h" |
17 #include "ui/gfx/point_conversions.h" | 17 #include "ui/gfx/point_conversions.h" |
18 #include "ui/gfx/rect_conversions.h" | 18 #include "ui/gfx/rect_conversions.h" |
19 #include "ui/gfx/transform.h" | 19 #include "ui/gfx/transform.h" |
| 20 #include "ui/gfx/transform_util.h" |
20 | 21 |
21 namespace cc { | 22 namespace cc { |
22 | 23 |
23 ScrollAndScaleSet::ScrollAndScaleSet() | 24 ScrollAndScaleSet::ScrollAndScaleSet() |
24 { | 25 { |
25 } | 26 } |
26 | 27 |
27 ScrollAndScaleSet::~ScrollAndScaleSet() | 28 ScrollAndScaleSet::~ScrollAndScaleSet() |
28 { | 29 { |
29 } | 30 } |
(...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 | 664 |
664 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless | 665 // The drawTransform that gets computed below is effectively the layer's dra
wTransform, unless |
665 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. | 666 // the layer itself creates a renderSurface. In that case, the renderSurface
re-parents the transforms. |
666 layerDrawProperties.target_space_transform = combinedTransform; | 667 layerDrawProperties.target_space_transform = combinedTransform; |
667 // M[draw] = M[parent] * LT * S[layer2content] | 668 // M[draw] = M[parent] * LT * S[layer2content] |
668 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); | 669 layerDrawProperties.target_space_transform.Scale(1.0 / layer->contentsScaleX
(), 1.0 / layer->contentsScaleY()); |
669 | 670 |
670 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. | 671 // layerScreenSpaceTransform represents the transform between root layer's "
screen space" and local content space. |
671 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; | 672 layerDrawProperties.screen_space_transform = fullHierarchyMatrix; |
672 if (!layer->preserves3D()) | 673 if (!layer->preserves3D()) |
673 MathUtil::flattenTransformTo2d(layerDrawProperties.screen_space_transfor
m); | 674 gfx::FlattenTransformTo2d(layerDrawProperties.screen_space_transform); |
674 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); | 675 layerDrawProperties.screen_space_transform.PreconcatTransform(layerDrawPrope
rties.target_space_transform); |
675 | 676 |
676 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. | 677 // Adjusting text AA method during animation may cause repaints, which in-tu
rn causes jank. |
677 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; | 678 bool adjustTextAA = !animatingOpacityToScreen && !animatingTransformToScreen
; |
678 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. | 679 // To avoid color fringing, LCD text should only be used on opaque layers wi
th just integral translation. |
679 bool layerCanUseLCDText = subtreeCanUseLCDText && | 680 bool layerCanUseLCDText = subtreeCanUseLCDText && |
680 (accumulatedDrawOpacity == 1.0) && | 681 (accumulatedDrawOpacity == 1.0) && |
681 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); | 682 layerDrawProperties.target_space_transform.IsIdent
ityOrIntegerTranslation(); |
682 | 683 |
683 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); | 684 gfx::RectF contentRect(gfx::PointF(), layer->contentBounds()); |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
817 subtreeShouldBeClipped = true; | 818 subtreeShouldBeClipped = true; |
818 if (ancestorClipsSubtree && !layer->renderSurface()) { | 819 if (ancestorClipsSubtree && !layer->renderSurface()) { |
819 clipRectForSubtree = clipRectFromAncestor; | 820 clipRectForSubtree = clipRectFromAncestor; |
820 clipRectForSubtree.Intersect(rectInTargetSpace); | 821 clipRectForSubtree.Intersect(rectInTargetSpace); |
821 } else | 822 } else |
822 clipRectForSubtree = rectInTargetSpace; | 823 clipRectForSubtree = rectInTargetSpace; |
823 } | 824 } |
824 | 825 |
825 // Flatten to 2D if the layer doesn't preserve 3D. | 826 // Flatten to 2D if the layer doesn't preserve 3D. |
826 if (!layer->preserves3D()) | 827 if (!layer->preserves3D()) |
827 MathUtil::flattenTransformTo2d(sublayerMatrix); | 828 gfx::FlattenTransformTo2d(sublayerMatrix); |
828 | 829 |
829 // Apply the sublayer transform at the center of the layer. | 830 // Apply the sublayer transform at the center of the layer. |
830 if (!layer->sublayerTransform().IsIdentity()) { | 831 if (!layer->sublayerTransform().IsIdentity()) { |
831 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); | 832 sublayerMatrix.Translate(0.5 * bounds.width(), 0.5 * bounds.height()); |
832 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); | 833 sublayerMatrix.PreconcatTransform(layer->sublayerTransform()); |
833 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); | 834 sublayerMatrix.Translate(-0.5 * bounds.width(), -0.5 * bounds.height()); |
834 } | 835 } |
835 | 836 |
836 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); | 837 LayerList& descendants = (layer->renderSurface() ? layer->renderSurface()->l
ayerList() : layerList); |
837 | 838 |
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 | 1154 |
1154 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up | 1155 // At this point, we think the point does hit the touch event handler region o
n the layer, but we need to walk up |
1155 // the parents to ensure that the layer was not clipped in such a way that the | 1156 // the parents to ensure that the layer was not clipped in such a way that the |
1156 // hit point actually should not hit the layer. | 1157 // hit point actually should not hit the layer. |
1157 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) | 1158 if (pointIsClippedBySurfaceOrClipRect(screenSpacePoint, layerImpl)) |
1158 return false; | 1159 return false; |
1159 | 1160 |
1160 return true; | 1161 return true; |
1161 } | 1162 } |
1162 } // namespace cc | 1163 } // namespace cc |
OLD | NEW |