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

Side by Side Diff: cc/trees/layer_tree_host_common.cc

Issue 130443005: [#5] Pass gfx structs by const ref (gfx::Vector2dF) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 11 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
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 "cc/trees/layer_tree_host_common.h" 5 #include "cc/trees/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/base/math_util.h" 10 #include "cc/base/math_util.h"
(...skipping 654 matching lines...) Expand 10 before | Expand all | Expand 10 after
665 665
666 return false; 666 return false;
667 } 667 }
668 668
669 // This function returns a translation matrix that can be applied on a vector 669 // This function returns a translation matrix that can be applied on a vector
670 // that's in the layer's target surface coordinate, while the position offset is 670 // that's in the layer's target surface coordinate, while the position offset is
671 // specified in some ancestor layer's coordinate. 671 // specified in some ancestor layer's coordinate.
672 gfx::Transform ComputeSizeDeltaCompensation( 672 gfx::Transform ComputeSizeDeltaCompensation(
673 LayerImpl* layer, 673 LayerImpl* layer,
674 LayerImpl* container, 674 LayerImpl* container,
675 gfx::Vector2dF position_offset) { 675 const gfx::Vector2dF& position_offset) {
676 gfx::Transform result_transform; 676 gfx::Transform result_transform;
677 677
678 // To apply a translate in the container's layer space, 678 // To apply a translate in the container's layer space,
679 // the following steps need to be done: 679 // the following steps need to be done:
680 // Step 1a. transform from target surface space to the container's target 680 // Step 1a. transform from target surface space to the container's target
681 // surface space 681 // surface space
682 // Step 1b. transform from container's target surface space to the 682 // Step 1b. transform from container's target surface space to the
683 // container's layer space 683 // container's layer space
684 // Step 2. apply the compensation 684 // Step 2. apply the compensation
685 // Step 3. transform back to target surface space 685 // Step 3. transform back to target surface space
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 768
769 // Note: Again, this is Concat. The compensation matrix will be applied on 769 // Note: Again, this is Concat. The compensation matrix will be applied on
770 // the vector in target surface space. 770 // the vector in target surface space.
771 combined_transform->ConcatTransform( 771 combined_transform->ConcatTransform(
772 ComputeSizeDeltaCompensation(layer, container, position_offset)); 772 ComputeSizeDeltaCompensation(layer, container, position_offset));
773 } 773 }
774 774
775 gfx::Transform ComputeScrollCompensationForThisLayer( 775 gfx::Transform ComputeScrollCompensationForThisLayer(
776 LayerImpl* scrolling_layer, 776 LayerImpl* scrolling_layer,
777 const gfx::Transform& parent_matrix, 777 const gfx::Transform& parent_matrix,
778 gfx::Vector2dF scroll_delta) { 778 const gfx::Vector2dF& scroll_delta) {
779 // For every layer that has non-zero scroll_delta, we have to compute a 779 // For every layer that has non-zero scroll_delta, we have to compute a
780 // transform that can undo the scroll_delta translation. In particular, we 780 // transform that can undo the scroll_delta translation. In particular, we
781 // want this matrix to premultiply a fixed-position layer's parent_matrix, so 781 // want this matrix to premultiply a fixed-position layer's parent_matrix, so
782 // we design this transform in three steps as follows. The steps described 782 // we design this transform in three steps as follows. The steps described
783 // here apply from right-to-left, so Step 1 would be the right-most matrix: 783 // here apply from right-to-left, so Step 1 would be the right-most matrix:
784 // 784 //
785 // Step 1. transform from target surface space to the exact space where 785 // Step 1. transform from target surface space to the exact space where
786 // scroll_delta is actually applied. 786 // scroll_delta is actually applied.
787 // -- this is inverse of parent_matrix 787 // -- this is inverse of parent_matrix
788 // Step 2. undo the scroll_delta 788 // Step 2. undo the scroll_delta
(...skipping 19 matching lines...) Expand all
808 } 808 }
809 scroll_compensation_for_this_layer.PreconcatTransform( 809 scroll_compensation_for_this_layer.PreconcatTransform(
810 inverse_parent_matrix); // Step 1 810 inverse_parent_matrix); // Step 1
811 return scroll_compensation_for_this_layer; 811 return scroll_compensation_for_this_layer;
812 } 812 }
813 813
814 gfx::Transform ComputeScrollCompensationMatrixForChildren( 814 gfx::Transform ComputeScrollCompensationMatrixForChildren(
815 Layer* current_layer, 815 Layer* current_layer,
816 const gfx::Transform& current_parent_matrix, 816 const gfx::Transform& current_parent_matrix,
817 const gfx::Transform& current_scroll_compensation, 817 const gfx::Transform& current_scroll_compensation,
818 gfx::Vector2dF scroll_delta) { 818 const gfx::Vector2dF& scroll_delta) {
819 // The main thread (i.e. Layer) does not need to worry about scroll 819 // The main thread (i.e. Layer) does not need to worry about scroll
820 // compensation. So we can just return an identity matrix here. 820 // compensation. So we can just return an identity matrix here.
821 return gfx::Transform(); 821 return gfx::Transform();
822 } 822 }
823 823
824 gfx::Transform ComputeScrollCompensationMatrixForChildren( 824 gfx::Transform ComputeScrollCompensationMatrixForChildren(
825 LayerImpl* layer, 825 LayerImpl* layer,
826 const gfx::Transform& parent_matrix, 826 const gfx::Transform& parent_matrix,
827 const gfx::Transform& current_scroll_compensation_matrix, 827 const gfx::Transform& current_scroll_compensation_matrix,
828 gfx::Vector2dF scroll_delta) { 828 const gfx::Vector2dF& scroll_delta) {
829 // "Total scroll compensation" is the transform needed to cancel out all 829 // "Total scroll compensation" is the transform needed to cancel out all
830 // scroll_delta translations that occurred since the nearest container layer, 830 // scroll_delta translations that occurred since the nearest container layer,
831 // even if there are render_surfaces in-between. 831 // even if there are render_surfaces in-between.
832 // 832 //
833 // There are some edge cases to be aware of, that are not explicit in the 833 // There are some edge cases to be aware of, that are not explicit in the
834 // code: 834 // code:
835 // - A layer that is both a fixed-position and container should not be its 835 // - A layer that is both a fixed-position and container should not be its
836 // own container, instead, that means it is fixed to an ancestor, and is a 836 // own container, instead, that means it is fixed to an ancestor, and is a
837 // container for any fixed-position descendants. 837 // container for any fixed-position descendants.
838 // - A layer that is a fixed-position container and has a render_surface 838 // - A layer that is a fixed-position container and has a render_surface
(...skipping 1578 matching lines...) Expand 10 before | Expand all | Expand 10 after
2417 // At this point, we think the point does hit the touch event handler region 2417 // At this point, we think the point does hit the touch event handler region
2418 // on the layer, but we need to walk up the parents to ensure that the layer 2418 // on the layer, but we need to walk up the parents to ensure that the layer
2419 // was not clipped in such a way that the hit point actually should not hit 2419 // was not clipped in such a way that the hit point actually should not hit
2420 // the layer. 2420 // the layer.
2421 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl)) 2421 if (PointIsClippedBySurfaceOrClipRect(screen_space_point, layer_impl))
2422 return false; 2422 return false;
2423 2423
2424 return true; 2424 return true;
2425 } 2425 }
2426 } // namespace cc 2426 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698