Chromium Code Reviews| 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 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 229 return unscrolled; | 229 return unscrolled; |
| 230 } | 230 } |
| 231 | 231 |
| 232 InputHandlerClient::ScrollStatus LayerImpl::tryScroll(const gfx::PointF& screenS pacePoint, InputHandlerClient::ScrollInputType type) const | 232 InputHandlerClient::ScrollStatus LayerImpl::tryScroll(const gfx::PointF& screenS pacePoint, InputHandlerClient::ScrollInputType type) const |
| 233 { | 233 { |
| 234 if (shouldScrollOnMainThread()) { | 234 if (shouldScrollOnMainThread()) { |
| 235 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed shouldScrollOnMainThrea d"); | 235 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed shouldScrollOnMainThrea d"); |
| 236 return InputHandlerClient::ScrollOnMainThread; | 236 return InputHandlerClient::ScrollOnMainThread; |
| 237 } | 237 } |
| 238 | 238 |
| 239 if (!screenSpaceTransform().isInvertible()) { | 239 if (!screenSpaceTransform().IsInvertible()) { |
| 240 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored nonInvertibleTransform "); | 240 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Ignored nonInvertibleTransform "); |
| 241 return InputHandlerClient::ScrollIgnored; | 241 return InputHandlerClient::ScrollIgnored; |
| 242 } | 242 } |
| 243 | 243 |
| 244 if (!nonFastScrollableRegion().IsEmpty()) { | 244 if (!nonFastScrollableRegion().IsEmpty()) { |
| 245 bool clipped = false; | 245 bool clipped = false; |
| 246 gfx::PointF hitTestPointInContentSpace = MathUtil::projectPoint(screenSp aceTransform().inverse(), screenSpacePoint, clipped); | 246 gfx::PointF hitTestPointInContentSpace = MathUtil::projectPoint(MathUtil ::inverse(screenSpaceTransform()), screenSpacePoint, clipped); |
| 247 gfx::PointF hitTestPointInLayerSpace = gfx::ScalePoint(hitTestPointInCon tentSpace, 1 / contentsScaleX(), 1 / contentsScaleY()); | 247 gfx::PointF hitTestPointInLayerSpace = gfx::ScalePoint(hitTestPointInCon tentSpace, 1 / contentsScaleX(), 1 / contentsScaleY()); |
| 248 if (!clipped && nonFastScrollableRegion().Contains(gfx::ToRoundedPoint(h itTestPointInLayerSpace))) { | 248 if (!clipped && nonFastScrollableRegion().Contains(gfx::ToRoundedPoint(h itTestPointInLayerSpace))) { |
| 249 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed nonFastScrollableRe gion"); | 249 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed nonFastScrollableRe gion"); |
| 250 return InputHandlerClient::ScrollOnMainThread; | 250 return InputHandlerClient::ScrollOnMainThread; |
| 251 } | 251 } |
| 252 } | 252 } |
| 253 | 253 |
| 254 if (type == InputHandlerClient::Wheel && haveWheelEventHandlers()) { | 254 if (type == InputHandlerClient::Wheel && haveWheelEventHandlers()) { |
| 255 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed wheelEventHandlers"); | 255 TRACE_EVENT0("cc", "LayerImpl::tryScroll: Failed wheelEventHandlers"); |
| 256 return InputHandlerClient::ScrollOnMainThread; | 256 return InputHandlerClient::ScrollOnMainThread; |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 301 } | 301 } |
| 302 | 302 |
| 303 str->append(indentStr); | 303 str->append(indentStr); |
| 304 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y( )); | 304 base::StringAppendF(str, "position: %f, %f\n", m_position.x(), m_position.y( )); |
| 305 | 305 |
| 306 str->append(indentStr); | 306 str->append(indentStr); |
| 307 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque); | 307 base::StringAppendF(str, "contentsOpaque: %d\n", m_contentsOpaque); |
| 308 | 308 |
| 309 str->append(indentStr); | 309 str->append(indentStr); |
| 310 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f\n", | 310 base::StringAppendF(str, "drawTransform: %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f // %f, %f, %f, %f\n", |
| 311 m_drawTransform.m11(), m_drawTransform.m12(), m_drawTransform.m13(), m_d rawTransform.m14(), | 311 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), |
|
danakj
2012/11/24 02:34:54
I think these should be (0,0) (0,1) etc.. invert t
shawnsingh
2012/11/24 02:56:14
Just to clarify, This patch doesn't change the way
danakj
2012/11/24 03:20:09
Ya, It used to output in or order, and we should d
danakj
2012/11/24 03:24:11
s/or order/row order/.
| |
| 312 m_drawTransform.m21(), m_drawTransform.m22(), m_drawTransform.m23(), m_d rawTransform.m24(), | 312 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), |
| 313 m_drawTransform.m31(), m_drawTransform.m32(), m_drawTransform.m33(), m_d rawTransform.m34(), | 313 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), |
| 314 m_drawTransform.m41(), m_drawTransform.m42(), m_drawTransform.m43(), m_d rawTransform.m44()); | 314 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)); |
| 315 | 315 |
| 316 str->append(indentStr); | 316 str->append(indentStr); |
| 317 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no" ); | 317 base::StringAppendF(str, "drawsContent: %s\n", m_drawsContent ? "yes" : "no" ); |
| 318 } | 318 } |
| 319 | 319 |
| 320 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter* layerSorter) | 320 void sortLayers(std::vector<LayerImpl*>::iterator first, std::vector<LayerImpl*> ::iterator end, LayerSorter* layerSorter) |
| 321 { | 321 { |
| 322 TRACE_EVENT0("cc", "LayerImpl::sortLayers"); | 322 TRACE_EVENT0("cc", "LayerImpl::sortLayers"); |
| 323 layerSorter->sort(first, end); | 323 layerSorter->sort(first, end); |
| 324 } | 324 } |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 426 float LayerImpl::opacity() const | 426 float LayerImpl::opacity() const |
| 427 { | 427 { |
| 428 return m_opacity; | 428 return m_opacity; |
| 429 } | 429 } |
| 430 | 430 |
| 431 void LayerImpl::setOpacityFromAnimation(float opacity) | 431 void LayerImpl::setOpacityFromAnimation(float opacity) |
| 432 { | 432 { |
| 433 setOpacity(opacity); | 433 setOpacity(opacity); |
| 434 } | 434 } |
| 435 | 435 |
| 436 const WebKit::WebTransformationMatrix& LayerImpl::transform() const | 436 const gfx::Transform& LayerImpl::transform() const |
| 437 { | 437 { |
| 438 return m_transform; | 438 return m_transform; |
| 439 } | 439 } |
| 440 | 440 |
| 441 void LayerImpl::setTransformFromAnimation(const WebTransformationMatrix& transfo rm) | 441 void LayerImpl::setTransformFromAnimation(const Transform& transform) |
| 442 { | 442 { |
| 443 setTransform(transform); | 443 setTransform(transform); |
| 444 } | 444 } |
| 445 | 445 |
| 446 void LayerImpl::setBounds(const gfx::Size& bounds) | 446 void LayerImpl::setBounds(const gfx::Size& bounds) |
| 447 { | 447 { |
| 448 if (m_bounds == bounds) | 448 if (m_bounds == bounds) |
| 449 return; | 449 return; |
| 450 | 450 |
| 451 m_bounds = bounds; | 451 m_bounds = bounds; |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 588 | 588 |
| 589 void LayerImpl::setPreserves3D(bool preserves3D) | 589 void LayerImpl::setPreserves3D(bool preserves3D) |
| 590 { | 590 { |
| 591 if (m_preserves3D == preserves3D) | 591 if (m_preserves3D == preserves3D) |
| 592 return; | 592 return; |
| 593 | 593 |
| 594 m_preserves3D = preserves3D; | 594 m_preserves3D = preserves3D; |
| 595 noteLayerPropertyChangedForSubtree(); | 595 noteLayerPropertyChangedForSubtree(); |
| 596 } | 596 } |
| 597 | 597 |
| 598 void LayerImpl::setSublayerTransform(const WebTransformationMatrix& sublayerTran sform) | 598 void LayerImpl::setSublayerTransform(const Transform& sublayerTransform) |
| 599 { | 599 { |
| 600 if (m_sublayerTransform == sublayerTransform) | 600 if (m_sublayerTransform == sublayerTransform) |
| 601 return; | 601 return; |
| 602 | 602 |
| 603 m_sublayerTransform = sublayerTransform; | 603 m_sublayerTransform = sublayerTransform; |
| 604 // sublayer transform does not affect the current layer; it affects only its children. | 604 // sublayer transform does not affect the current layer; it affects only its children. |
| 605 noteLayerPropertyChangedForDescendants(); | 605 noteLayerPropertyChangedForDescendants(); |
| 606 } | 606 } |
| 607 | 607 |
| 608 void LayerImpl::setTransform(const WebTransformationMatrix& transform) | 608 void LayerImpl::setTransform(const Transform& transform) |
| 609 { | 609 { |
| 610 if (m_transform == transform) | 610 if (m_transform == transform) |
| 611 return; | 611 return; |
| 612 | 612 |
| 613 m_transform = transform; | 613 m_transform = transform; |
| 614 m_layerSurfacePropertyChanged = true; | 614 m_layerSurfacePropertyChanged = true; |
| 615 } | 615 } |
| 616 | 616 |
| 617 bool LayerImpl::transformIsAnimating() const | 617 bool LayerImpl::transformIsAnimating() const |
| 618 { | 618 { |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 649 | 649 |
| 650 void LayerImpl::setScrollDelta(const gfx::Vector2dF& scrollDelta) | 650 void LayerImpl::setScrollDelta(const gfx::Vector2dF& scrollDelta) |
| 651 { | 651 { |
| 652 if (m_scrollDelta == scrollDelta) | 652 if (m_scrollDelta == scrollDelta) |
| 653 return; | 653 return; |
| 654 | 654 |
| 655 m_scrollDelta = scrollDelta; | 655 m_scrollDelta = scrollDelta; |
| 656 noteLayerPropertyChangedForSubtree(); | 656 noteLayerPropertyChangedForSubtree(); |
| 657 } | 657 } |
| 658 | 658 |
| 659 void LayerImpl::setImplTransform(const WebKit::WebTransformationMatrix& transfor m) | 659 void LayerImpl::setImplTransform(const gfx::Transform& transform) |
| 660 { | 660 { |
| 661 if (m_implTransform == transform) | 661 if (m_implTransform == transform) |
| 662 return; | 662 return; |
| 663 | 663 |
| 664 m_implTransform = transform; | 664 m_implTransform = transform; |
| 665 noteLayerPropertyChangedForSubtree(); | 665 noteLayerPropertyChangedForSubtree(); |
| 666 } | 666 } |
| 667 | 667 |
| 668 void LayerImpl::setDoubleSided(bool doubleSided) | 668 void LayerImpl::setDoubleSided(bool doubleSided) |
| 669 { | 669 { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 724 | 724 |
| 725 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) | 725 void LayerImpl::setVerticalScrollbarLayer(ScrollbarLayerImpl* scrollbarLayer) |
| 726 { | 726 { |
| 727 if (!m_scrollbarAnimationController) | 727 if (!m_scrollbarAnimationController) |
| 728 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); | 728 m_scrollbarAnimationController = ScrollbarAnimationController::create(th is); |
| 729 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); | 729 m_scrollbarAnimationController->setVerticalScrollbarLayer(scrollbarLayer); |
| 730 m_scrollbarAnimationController->updateScrollOffset(this); | 730 m_scrollbarAnimationController->updateScrollOffset(this); |
| 731 } | 731 } |
| 732 | 732 |
| 733 } // namespace cc | 733 } // namespace cc |
| OLD | NEW |