| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
| 6 | 6 |
| 7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
| 8 #include "base/numerics/safe_conversions.h" | 8 #include "base/numerics/safe_conversions.h" |
| 9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
| 10 #include "base/trace_event/trace_event.h" | 10 #include "base/trace_event/trace_event.h" |
| (...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 draw_properties_.visible_layer_rect, draw_properties_.clip_rect, | 318 draw_properties_.visible_layer_rect, draw_properties_.clip_rect, |
| 319 is_clipped_, draw_properties_.opacity, draw_blend_mode_, | 319 is_clipped_, draw_properties_.opacity, draw_blend_mode_, |
| 320 sorting_context_id_); | 320 sorting_context_id_); |
| 321 } | 321 } |
| 322 | 322 |
| 323 void LayerImpl::PopulateScaledSharedQuadState(SharedQuadState* state, | 323 void LayerImpl::PopulateScaledSharedQuadState(SharedQuadState* state, |
| 324 float scale) const { | 324 float scale) const { |
| 325 gfx::Transform scaled_draw_transform = | 325 gfx::Transform scaled_draw_transform = |
| 326 draw_properties_.target_space_transform; | 326 draw_properties_.target_space_transform; |
| 327 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); | 327 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); |
| 328 gfx::Size scaled_bounds = gfx::ToCeiledSize(gfx::ScaleSize(bounds(), scale)); | 328 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize(bounds(), scale); |
| 329 gfx::Rect scaled_visible_layer_rect = | 329 gfx::Rect scaled_visible_layer_rect = |
| 330 gfx::ScaleToEnclosingRect(visible_layer_rect(), scale); | 330 gfx::ScaleToEnclosingRect(visible_layer_rect(), scale); |
| 331 scaled_visible_layer_rect.Intersect(gfx::Rect(scaled_bounds)); | 331 scaled_visible_layer_rect.Intersect(gfx::Rect(scaled_bounds)); |
| 332 | 332 |
| 333 state->SetAll(scaled_draw_transform, scaled_bounds, scaled_visible_layer_rect, | 333 state->SetAll(scaled_draw_transform, scaled_bounds, scaled_visible_layer_rect, |
| 334 draw_properties().clip_rect, is_clipped_, | 334 draw_properties().clip_rect, is_clipped_, |
| 335 draw_properties().opacity, draw_blend_mode_, | 335 draw_properties().opacity, draw_blend_mode_, |
| 336 sorting_context_id_); | 336 sorting_context_id_); |
| 337 } | 337 } |
| 338 | 338 |
| (...skipping 638 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 977 transform_tree.SetOuterViewportBoundsDelta(bounds_delta); | 977 transform_tree.SetOuterViewportBoundsDelta(bounds_delta); |
| 978 | 978 |
| 979 ScrollbarParametersDidChange(true); | 979 ScrollbarParametersDidChange(true); |
| 980 | 980 |
| 981 if (masks_to_bounds()) { | 981 if (masks_to_bounds()) { |
| 982 // If layer is clipping, then update the clip node using the new bounds. | 982 // If layer is clipping, then update the clip node using the new bounds. |
| 983 ClipNode* clip_node = | 983 ClipNode* clip_node = |
| 984 layer_tree_impl()->property_trees()->clip_tree.Node(clip_tree_index()); | 984 layer_tree_impl()->property_trees()->clip_tree.Node(clip_tree_index()); |
| 985 if (clip_node) { | 985 if (clip_node) { |
| 986 DCHECK(id() == clip_node->owner_id); | 986 DCHECK(id() == clip_node->owner_id); |
| 987 clip_node->data.clip = | 987 clip_node->data.clip = gfx::RectF( |
| 988 gfx::RectF(gfx::PointF() + offset_to_transform_parent(), bounds()); | 988 gfx::PointF() + offset_to_transform_parent(), gfx::SizeF(bounds())); |
| 989 layer_tree_impl()->property_trees()->clip_tree.set_needs_update(true); | 989 layer_tree_impl()->property_trees()->clip_tree.set_needs_update(true); |
| 990 } | 990 } |
| 991 | 991 |
| 992 NoteLayerPropertyChangedForSubtree(); | 992 NoteLayerPropertyChangedForSubtree(); |
| 993 } else { | 993 } else { |
| 994 NoteLayerPropertyChanged(); | 994 NoteLayerPropertyChanged(); |
| 995 } | 995 } |
| 996 } | 996 } |
| 997 | 997 |
| 998 void LayerImpl::SetMaskLayer(scoped_ptr<LayerImpl> mask_layer) { | 998 void LayerImpl::SetMaskLayer(scoped_ptr<LayerImpl> mask_layer) { |
| (...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1521 | 1521 |
| 1522 float scale_factor = 1.f; | 1522 float scale_factor = 1.f; |
| 1523 for (LayerImpl const* current_layer = this; | 1523 for (LayerImpl const* current_layer = this; |
| 1524 current_layer != scroll_clip_layer_->parent(); | 1524 current_layer != scroll_clip_layer_->parent(); |
| 1525 current_layer = current_layer->parent()) { | 1525 current_layer = current_layer->parent()) { |
| 1526 if (current_layer == page_scale_layer) | 1526 if (current_layer == page_scale_layer) |
| 1527 scale_factor = layer_tree_impl()->current_page_scale_factor(); | 1527 scale_factor = layer_tree_impl()->current_page_scale_factor(); |
| 1528 } | 1528 } |
| 1529 | 1529 |
| 1530 gfx::SizeF scaled_scroll_bounds = | 1530 gfx::SizeF scaled_scroll_bounds = |
| 1531 gfx::ToFlooredSize(gfx::ScaleSize(BoundsForScrolling(), scale_factor)); | 1531 gfx::ScaleSize(BoundsForScrolling(), scale_factor); |
| 1532 scaled_scroll_bounds = gfx::ToFlooredSize(scaled_scroll_bounds); | 1532 scaled_scroll_bounds.SetSize(std::floor(scaled_scroll_bounds.width()), |
| 1533 std::floor(scaled_scroll_bounds.height())); |
| 1533 | 1534 |
| 1534 gfx::ScrollOffset max_offset( | 1535 gfx::ScrollOffset max_offset( |
| 1535 scaled_scroll_bounds.width() - scroll_clip_layer_->bounds().width(), | 1536 scaled_scroll_bounds.width() - scroll_clip_layer_->bounds().width(), |
| 1536 scaled_scroll_bounds.height() - scroll_clip_layer_->bounds().height()); | 1537 scaled_scroll_bounds.height() - scroll_clip_layer_->bounds().height()); |
| 1537 // We need the final scroll offset to be in CSS coords. | 1538 // We need the final scroll offset to be in CSS coords. |
| 1538 max_offset.Scale(1 / scale_factor); | 1539 max_offset.Scale(1 / scale_factor); |
| 1539 max_offset.SetToMax(gfx::ScrollOffset()); | 1540 max_offset.SetToMax(gfx::ScrollOffset()); |
| 1540 return max_offset; | 1541 return max_offset; |
| 1541 } | 1542 } |
| 1542 | 1543 |
| (...skipping 352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1895 | 1896 |
| 1896 gfx::Rect LayerImpl::GetEnclosingRectInTargetSpace() const { | 1897 gfx::Rect LayerImpl::GetEnclosingRectInTargetSpace() const { |
| 1897 return MathUtil::MapEnclosingClippedRect( | 1898 return MathUtil::MapEnclosingClippedRect( |
| 1898 draw_properties_.target_space_transform, gfx::Rect(bounds())); | 1899 draw_properties_.target_space_transform, gfx::Rect(bounds())); |
| 1899 } | 1900 } |
| 1900 | 1901 |
| 1901 gfx::Rect LayerImpl::GetScaledEnclosingRectInTargetSpace(float scale) const { | 1902 gfx::Rect LayerImpl::GetScaledEnclosingRectInTargetSpace(float scale) const { |
| 1902 gfx::Transform scaled_draw_transform = | 1903 gfx::Transform scaled_draw_transform = |
| 1903 draw_properties_.target_space_transform; | 1904 draw_properties_.target_space_transform; |
| 1904 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); | 1905 scaled_draw_transform.Scale(SK_MScalar1 / scale, SK_MScalar1 / scale); |
| 1905 gfx::Size scaled_bounds = gfx::ToCeiledSize(gfx::ScaleSize(bounds(), scale)); | 1906 gfx::Size scaled_bounds = gfx::ScaleToCeiledSize(bounds(), scale); |
| 1906 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, | 1907 return MathUtil::MapEnclosingClippedRect(scaled_draw_transform, |
| 1907 gfx::Rect(scaled_bounds)); | 1908 gfx::Rect(scaled_bounds)); |
| 1908 } | 1909 } |
| 1909 | 1910 |
| 1910 float LayerImpl::GetIdealContentsScale() const { | 1911 float LayerImpl::GetIdealContentsScale() const { |
| 1911 float page_scale = IsAffectedByPageScale() | 1912 float page_scale = IsAffectedByPageScale() |
| 1912 ? layer_tree_impl()->current_page_scale_factor() | 1913 ? layer_tree_impl()->current_page_scale_factor() |
| 1913 : 1.f; | 1914 : 1.f; |
| 1914 float device_scale = layer_tree_impl()->device_scale_factor(); | 1915 float device_scale = layer_tree_impl()->device_scale_factor(); |
| 1915 | 1916 |
| 1916 float default_scale = page_scale * device_scale; | 1917 float default_scale = page_scale * device_scale; |
| 1917 if (!layer_tree_impl() | 1918 if (!layer_tree_impl() |
| 1918 ->settings() | 1919 ->settings() |
| 1919 .layer_transforms_should_scale_layer_contents) { | 1920 .layer_transforms_should_scale_layer_contents) { |
| 1920 return default_scale; | 1921 return default_scale; |
| 1921 } | 1922 } |
| 1922 | 1923 |
| 1923 // TODO(enne): the transform needs to come from property trees instead of | 1924 // TODO(enne): the transform needs to come from property trees instead of |
| 1924 // draw properties. | 1925 // draw properties. |
| 1925 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( | 1926 gfx::Vector2dF transform_scales = MathUtil::ComputeTransform2dScaleComponents( |
| 1926 draw_properties().target_space_transform, default_scale); | 1927 draw_properties().target_space_transform, default_scale); |
| 1927 return std::max(transform_scales.x(), transform_scales.y()); | 1928 return std::max(transform_scales.x(), transform_scales.y()); |
| 1928 } | 1929 } |
| 1929 | 1930 |
| 1930 } // namespace cc | 1931 } // namespace cc |
| OLD | NEW |