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/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 1752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1763 bool adjust_text_aa = | 1763 bool adjust_text_aa = |
1764 !animating_opacity_to_screen && !animating_transform_to_screen; | 1764 !animating_opacity_to_screen && !animating_transform_to_screen; |
1765 // To avoid color fringing, LCD text should only be used on opaque layers with | 1765 // To avoid color fringing, LCD text should only be used on opaque layers with |
1766 // just integral translation. | 1766 // just integral translation. |
1767 bool layer_can_use_lcd_text = | 1767 bool layer_can_use_lcd_text = |
1768 data_from_ancestor.subtree_can_use_lcd_text && | 1768 data_from_ancestor.subtree_can_use_lcd_text && |
1769 accumulated_draw_opacity == 1.f && | 1769 accumulated_draw_opacity == 1.f && |
1770 layer_draw_properties.target_space_transform. | 1770 layer_draw_properties.target_space_transform. |
1771 IsIdentityOrIntegerTranslation(); | 1771 IsIdentityOrIntegerTranslation(); |
1772 | 1772 |
1773 gfx::RectF content_rect(layer->content_bounds()); | 1773 gfx::Rect content_rect(layer->content_bounds()); |
1774 | 1774 |
1775 // full_hierarchy_matrix is the matrix that transforms objects between screen | 1775 // full_hierarchy_matrix is the matrix that transforms objects between screen |
1776 // space (except projection matrix) and the most recent RenderSurfaceImpl's | 1776 // space (except projection matrix) and the most recent RenderSurfaceImpl's |
1777 // space. next_hierarchy_matrix will only change if this layer uses a new | 1777 // space. next_hierarchy_matrix will only change if this layer uses a new |
1778 // RenderSurfaceImpl, otherwise remains the same. | 1778 // RenderSurfaceImpl, otherwise remains the same. |
1779 data_for_children.full_hierarchy_matrix = | 1779 data_for_children.full_hierarchy_matrix = |
1780 data_from_ancestor.full_hierarchy_matrix; | 1780 data_from_ancestor.full_hierarchy_matrix; |
1781 | 1781 |
1782 // If the subtree will scale layer contents by the transform hierarchy, then | 1782 // If the subtree will scale layer contents by the transform hierarchy, then |
1783 // we should scale things into the render surface by the transform hierarchy | 1783 // we should scale things into the render surface by the transform hierarchy |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1996 data_from_ancestor.clip_rect_of_target_surface_in_target_space; | 1996 data_from_ancestor.clip_rect_of_target_surface_in_target_space; |
1997 | 1997 |
1998 // Layers that are not their own render_target will render into the target | 1998 // Layers that are not their own render_target will render into the target |
1999 // of their nearest ancestor. | 1999 // of their nearest ancestor. |
2000 layer_draw_properties.render_target = layer->parent()->render_target(); | 2000 layer_draw_properties.render_target = layer->parent()->render_target(); |
2001 } | 2001 } |
2002 | 2002 |
2003 if (adjust_text_aa) | 2003 if (adjust_text_aa) |
2004 layer_draw_properties.can_use_lcd_text = layer_can_use_lcd_text; | 2004 layer_draw_properties.can_use_lcd_text = layer_can_use_lcd_text; |
2005 | 2005 |
2006 gfx::Rect rect_in_target_space = ToEnclosingRect( | 2006 gfx::Rect rect_in_target_space = |
2007 MathUtil::MapClippedRect(layer->draw_transform(), content_rect)); | 2007 MathUtil::MapEnclosingClippedRect(layer->draw_transform(), content_rect); |
2008 | 2008 |
2009 if (LayerClipsSubtree(layer)) { | 2009 if (LayerClipsSubtree(layer)) { |
2010 layer_or_ancestor_clips_descendants = true; | 2010 layer_or_ancestor_clips_descendants = true; |
2011 if (ancestor_clips_subtree && !layer->render_surface()) { | 2011 if (ancestor_clips_subtree && !layer->render_surface()) { |
2012 // A layer without render surface shares the same target as its ancestor. | 2012 // A layer without render surface shares the same target as its ancestor. |
2013 clip_rect_in_target_space = | 2013 clip_rect_in_target_space = |
2014 ancestor_clip_rect_in_target_space; | 2014 ancestor_clip_rect_in_target_space; |
2015 clip_rect_in_target_space.Intersect(rect_in_target_space); | 2015 clip_rect_in_target_space.Intersect(rect_in_target_space); |
2016 } else { | 2016 } else { |
2017 clip_rect_in_target_space = rect_in_target_space; | 2017 clip_rect_in_target_space = rect_in_target_space; |
(...skipping 389 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2407 inputs->current_render_surface_layer_list_id); | 2407 inputs->current_render_surface_layer_list_id); |
2408 | 2408 |
2409 // The dummy layer list should not have been used. | 2409 // The dummy layer list should not have been used. |
2410 DCHECK_EQ(0u, dummy_layer_list.size()); | 2410 DCHECK_EQ(0u, dummy_layer_list.size()); |
2411 // A root layer render_surface should always exist after | 2411 // A root layer render_surface should always exist after |
2412 // CalculateDrawProperties. | 2412 // CalculateDrawProperties. |
2413 DCHECK(inputs->root_layer->render_surface()); | 2413 DCHECK(inputs->root_layer->render_surface()); |
2414 } | 2414 } |
2415 | 2415 |
2416 } // namespace cc | 2416 } // namespace cc |
OLD | NEW |