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