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 |