| 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_impl.h" | 5 #include "cc/layer_impl.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/stringprintf.h" | 8 #include "base/stringprintf.h" |
| 9 #include "cc/debug_border_draw_quad.h" | 9 #include "cc/debug_border_draw_quad.h" |
| 10 #include "cc/debug_colors.h" | 10 #include "cc/debug_colors.h" |
| 11 #include "cc/layer_sorter.h" | 11 #include "cc/layer_sorter.h" |
| 12 #include "cc/layer_tree_host_impl.h" | 12 #include "cc/layer_tree_host_impl.h" |
| 13 #include "cc/math_util.h" | 13 #include "cc/math_util.h" |
| 14 #include "cc/proxy.h" | 14 #include "cc/proxy.h" |
| 15 #include "cc/quad_sink.h" | 15 #include "cc/quad_sink.h" |
| 16 #include "cc/scrollbar_animation_controller.h" | 16 #include "cc/scrollbar_animation_controller.h" |
| 17 #include "third_party/skia/include/core/SkImageFilter.h" | 17 #include "third_party/skia/include/core/SkImageFilter.h" |
| 18 #include "ui/gfx/point_conversions.h" | 18 #include "ui/gfx/point_conversions.h" |
| 19 #include "ui/gfx/rect_conversions.h" | 19 #include "ui/gfx/rect_conversions.h" |
| 20 | 20 |
| 21 using WebKit::WebTransformationMatrix; | 21 using gfx::Transform; |
| 22 | 22 |
| 23 namespace cc { | 23 namespace cc { |
| 24 | 24 |
| 25 LayerImpl::LayerImpl(int id) | 25 LayerImpl::LayerImpl(int id) |
| 26 : m_parent(0) | 26 : m_parent(0) |
| 27 , m_maskLayerId(-1) | 27 , m_maskLayerId(-1) |
| 28 , m_replicaLayerId(-1) | 28 , m_replicaLayerId(-1) |
| 29 , m_layerId(id) | 29 , m_layerId(id) |
| 30 , m_layerTreeHostImpl(0) | 30 , m_layerTreeHostImpl(0) |
| 31 , m_anchorPoint(0.5, 0.5) | 31 , m_anchorPoint(0.5, 0.5) |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 228 return unscrolled; | 228 return unscrolled; |
| 229 } | 229 } |
| 230 | 230 |
| 231 InputHandlerClient::ScrollStatus LayerImpl::tryScroll(const gfx::PointF& screenS
pacePoint, InputHandlerClient::ScrollInputType type) const | 231 InputHandlerClient::ScrollStatus LayerImpl::tryScroll(const gfx::PointF& screenS
pacePoint, InputHandlerClient::ScrollInputType type) const |
| 232 { | 232 { |
| 233 if (shouldScrollOnMainThread()) { | 233 if (shouldScrollOnMainThread()) { |
| 234 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed shouldScrollOnMainThrea
d"); | 234 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed shouldScrollOnMainThrea
d"); |
| 235 return InputHandlerClient::ScrollOnMainThread; | 235 return InputHandlerClient::ScrollOnMainThread; |
| 236 } | 236 } |
| 237 | 237 |
| 238 if (!screenSpaceTransform().isInvertible()) { | 238 if (!screenSpaceTransform().IsInvertible()) { |
| 239 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored nonInvertibleTransform
"); | 239 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored nonInvertibleTransform
"); |
| 240 return InputHandlerClient::ScrollIgnored; | 240 return InputHandlerClient::ScrollIgnored; |
| 241 } | 241 } |
| 242 | 242 |
| 243 if (!nonFastScrollableRegion().IsEmpty()) { | 243 if (!nonFastScrollableRegion().IsEmpty()) { |
| 244 bool clipped = false; | 244 bool clipped = false; |
| 245 gfx::PointF hitTestPointInContentSpace = MathUtil::projectPoint(screenSp
aceTransform().inverse(), screenSpacePoint, clipped); | 245 gfx::PointF hitTestPointInContentSpace = MathUtil::projectPoint(MathUtil
::inverse(screenSpaceTransform()), screenSpacePoint, clipped); |
| 246 gfx::PointF hitTestPointInLayerSpace = gfx::ScalePoint(hitTestPointInCon
tentSpace, 1 / contentsScaleX(), 1 / contentsScaleY()); | 246 gfx::PointF hitTestPointInLayerSpace = gfx::ScalePoint(hitTestPointInCon
tentSpace, 1 / contentsScaleX(), 1 / contentsScaleY()); |
| 247 if (!clipped && nonFastScrollableRegion().Contains(gfx::ToRoundedPoint(h
itTestPointInLayerSpace))) { | 247 if (!clipped && nonFastScrollableRegion().Contains(gfx::ToRoundedPoint(h
itTestPointInLayerSpace))) { |
| 248 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed nonFastScrollableRe
gion"); | 248 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed nonFastScrollableRe
gion"); |
| 249 return InputHandlerClient::ScrollOnMainThread; | 249 return InputHandlerClient::ScrollOnMainThread; |
| 250 } | 250 } |
| 251 } | 251 } |
| 252 | 252 |
| 253 if (type == InputHandlerClient::Wheel && haveWheelEventHandlers()) { | 253 if (type == InputHandlerClient::Wheel && haveWheelEventHandlers()) { |
| 254 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed wheelEventHandlers"); | 254 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed wheelEventHandlers"); |
| 255 return InputHandlerClient::ScrollOnMainThread; | 255 return InputHandlerClient::ScrollOnMainThread; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 } | 300 } |
| 301 | 301 |
| 302 str->append(indentStr); | 302 str->append(indentStr); |
| 303 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y(
)); | 303 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y(
)); |
| 304 | 304 |
| 305 str->append(indentStr); | 305 str->append(indentStr); |
| 306 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque); | 306 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque); |
| 307 | 307 |
| 308 str->append(indentStr); | 308 str->append(indentStr); |
| 309 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f
// %f, %f, %f, %f // %f, %f, %f, %f\n", | 309 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f
// %f, %f, %f, %f // %f, %f, %f, %f\n", |
| 310 m_drawTransform.m11(), m_drawTransform.m12(), m_drawTransform.m13(), m_d
rawTransform.m14(), | 310 m_drawTransform.matrix().getDouble(0, 0), m_drawTransform.matrix().getDo
uble(1, 0), m_drawTransform.matrix().getDouble(2, 0), m_drawTransform.matrix().g
etDouble(3, 0), |
| 311 m_drawTransform.m21(), m_drawTransform.m22(), m_drawTransform.m23(), m_d
rawTransform.m24(), | 311 m_drawTransform.matrix().getDouble(0, 1), m_drawTransform.matrix().getDo
uble(1, 1), m_drawTransform.matrix().getDouble(2, 1), m_drawTransform.matrix().g
etDouble(3, 1), |
| 312 m_drawTransform.m31(), m_drawTransform.m32(), m_drawTransform.m33(), m_d
rawTransform.m34(), | 312 m_drawTransform.matrix().getDouble(0, 2), m_drawTransform.matrix().getDo
uble(1, 2), m_drawTransform.matrix().getDouble(2, 2), m_drawTransform.matrix().g
etDouble(3, 2), |
| 313 m_drawTransform.m41(), m_drawTransform.m42(), m_drawTransform.m43(), m_d
rawTransform.m44()); | 313 m_drawTransform.matrix().getDouble(0, 3), m_drawTransform.matrix().getDo
uble(1, 3), m_drawTransform.matrix().getDouble(2, 3), m_drawTransform.matrix().g
etDouble(3, 3)); |
| 314 | 314 |
| 315 str->append(indentStr); | 315 str->append(indentStr); |
| 316 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no"
); | 316 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no"
); |
| 317 } | 317 } |
| 318 | 318 |
| 319 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*>
::iterator end, LayerSorter* layerSorter) | 319 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*>
::iterator end, LayerSorter* layerSorter) |
| 320 { | 320 { |
| 321 TRACE_EVENT0("cc", "LayerImpl::sortLayers"); | 321 TRACE_EVENT0("cc", "LayerImpl::sortLayers"); |
| 322 layerSorter->sort(first, end); | 322 layerSorter->sort(first, end); |
| 323 } | 323 } |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 425 float LayerImpl::opacity() const | 425 float LayerImpl::opacity() const |
| 426 { | 426 { |
| 427 return m_opacity; | 427 return m_opacity; |
| 428 } | 428 } |
| 429 | 429 |
| 430 void LayerImpl::setOpacityFromAnimation(float opacity) | 430 void LayerImpl::setOpacityFromAnimation(float opacity) |
| 431 { | 431 { |
| 432 setOpacity(opacity); | 432 setOpacity(opacity); |
| 433 } | 433 } |
| 434 | 434 |
| 435 const WebKit::WebTransformationMatrix& LayerImpl::transform() const | 435 const gfx::Transform& LayerImpl::transform() const |
| 436 { | 436 { |
| 437 return m_transform; | 437 return m_transform; |
| 438 } | 438 } |
| 439 | 439 |
| 440 void LayerImpl::setTransformFromAnimation(const WebTransformationMatrix& transfo
rm) | 440 void LayerImpl::setTransformFromAnimation(const Transform& transform) |
| 441 { | 441 { |
| 442 setTransform(transform); | 442 setTransform(transform); |
| 443 } | 443 } |
| 444 | 444 |
| 445 void LayerImpl::setBounds(const gfx::Size& bounds) | 445 void LayerImpl::setBounds(const gfx::Size& bounds) |
| 446 { | 446 { |
| 447 if (m_bounds == bounds) | 447 if (m_bounds == bounds) |
| 448 return; | 448 return; |
| 449 | 449 |
| 450 m_bounds = bounds; | 450 m_bounds = bounds; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 | 587 |
| 588 void LayerImpl::setPreserves3D(bool preserves3D) | 588 void LayerImpl::setPreserves3D(bool preserves3D) |
| 589 { | 589 { |
| 590 if (m_preserves3D == preserves3D) | 590 if (m_preserves3D == preserves3D) |
| 591 return; | 591 return; |
| 592 | 592 |
| 593 m_preserves3D = preserves3D; | 593 m_preserves3D = preserves3D; |
| 594 noteLayerPropertyChangedForSubtree(); | 594 noteLayerPropertyChangedForSubtree(); |
| 595 } | 595 } |
| 596 | 596 |
| 597 void LayerImpl::setSublayerTransform(const WebTransformationMatrix& sublayerTran
sform) | 597 void LayerImpl::setSublayerTransform(const Transform& sublayerTransform) |
| 598 { | 598 { |
| 599 if (m_sublayerTransform == sublayerTransform) | 599 if (m_sublayerTransform == sublayerTransform) |
| 600 return; | 600 return; |
| 601 | 601 |
| 602 m_sublayerTransform = sublayerTransform; | 602 m_sublayerTransform = sublayerTransform; |
| 603 // sublayer transform does not affect the current layer; it affects only its
children. | 603 // sublayer transform does not affect the current layer; it affects only its
children. |
| 604 noteLayerPropertyChangedForDescendants(); | 604 noteLayerPropertyChangedForDescendants(); |
| 605 } | 605 } |
| 606 | 606 |
| 607 void LayerImpl::setTransform(const WebTransformationMatrix& transform) | 607 void LayerImpl::setTransform(const Transform& transform) |
| 608 { | 608 { |
| 609 if (m_transform == transform) | 609 if (m_transform == transform) |
| 610 return; | 610 return; |
| 611 | 611 |
| 612 m_transform = transform; | 612 m_transform = transform; |
| 613 m_layerSurfacePropertyChanged = true; | 613 m_layerSurfacePropertyChanged = true; |
| 614 } | 614 } |
| 615 | 615 |
| 616 bool LayerImpl::transformIsAnimating() const | 616 bool LayerImpl::transformIsAnimating() const |
| 617 { | 617 { |
| (...skipping 30 matching lines...) Expand all Loading... |
| 648 | 648 |
| 649 void LayerImpl::setScrollDelta(const gfx::Vector2dF& scrollDelta) | 649 void LayerImpl::setScrollDelta(const gfx::Vector2dF& scrollDelta) |
| 650 { | 650 { |
| 651 if (m_scrollDelta == scrollDelta) | 651 if (m_scrollDelta == scrollDelta) |
| 652 return; | 652 return; |
| 653 | 653 |
| 654 m_scrollDelta = scrollDelta; | 654 m_scrollDelta = scrollDelta; |
| 655 noteLayerPropertyChangedForSubtree(); | 655 noteLayerPropertyChangedForSubtree(); |
| 656 } | 656 } |
| 657 | 657 |
| 658 void LayerImpl::setImplTransform(const WebKit::WebTransformationMatrix& transfor
m) | 658 void LayerImpl::setImplTransform(const gfx::Transform& transform) |
| 659 { | 659 { |
| 660 if (m_implTransform == transform) | 660 if (m_implTransform == transform) |
| 661 return; | 661 return; |
| 662 | 662 |
| 663 m_implTransform = transform; | 663 m_implTransform = transform; |
| 664 noteLayerPropertyChangedForSubtree(); | 664 noteLayerPropertyChangedForSubtree(); |
| 665 } | 665 } |
| 666 | 666 |
| 667 void LayerImpl::setDoubleSided(bool doubleSided) | 667 void LayerImpl::setDoubleSided(bool doubleSided) |
| 668 { | 668 { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 723 | 723 |
| 724 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) | 724 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) |
| 725 { | 725 { |
| 726 if (!m_scrollbarAnimationController) | 726 if (!m_scrollbarAnimationController) |
| 727 m_scrollbarAnimationController = ScrollbarAnimationController::create(th
is); | 727 m_scrollbarAnimationController = ScrollbarAnimationController::create(th
is); |
| 728 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); | 728 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); |
| 729 m_scrollbarAnimationController->updateScrollOffset(this); | 729 m_scrollbarAnimationController->updateScrollOffset(this); |
| 730 } | 730 } |
| 731 | 731 |
| 732 } // namespace cc | 732 } // namespace cc |
| OLD | NEW |