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 |