| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef CC_TREES_PROPERTY_TREE_H_ | 5 #ifndef CC_TREES_PROPERTY_TREE_H_ |
| 6 #define CC_TREES_PROPERTY_TREE_H_ | 6 #define CC_TREES_PROPERTY_TREE_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 // Stores copy requests, keyed by node id. | 390 // Stores copy requests, keyed by node id. |
| 391 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> | 391 std::unordered_multimap<int, std::unique_ptr<CopyOutputRequest>> |
| 392 copy_requests_; | 392 copy_requests_; |
| 393 | 393 |
| 394 // Unsorted list of all mask layer ids that effect nodes refer to. | 394 // Unsorted list of all mask layer ids that effect nodes refer to. |
| 395 std::vector<int> mask_layer_ids_; | 395 std::vector<int> mask_layer_ids_; |
| 396 }; | 396 }; |
| 397 | 397 |
| 398 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { | 398 class CC_EXPORT ScrollTree final : public PropertyTree<ScrollNode> { |
| 399 public: | 399 public: |
| 400 struct ScrollWithOverscroll; |
| 401 |
| 400 ScrollTree(); | 402 ScrollTree(); |
| 401 ~ScrollTree(); | 403 ~ScrollTree(); |
| 402 | 404 |
| 403 ScrollTree& operator=(const ScrollTree& from); | 405 ScrollTree& operator=(const ScrollTree& from); |
| 404 bool operator==(const ScrollTree& other) const; | 406 bool operator==(const ScrollTree& other) const; |
| 405 | 407 |
| 406 void ToProtobuf(proto::PropertyTree* proto) const; | 408 void ToProtobuf(proto::PropertyTree* proto) const; |
| 407 void FromProtobuf(const proto::PropertyTree& proto, | 409 void FromProtobuf(const proto::PropertyTree& proto, |
| 408 std::unordered_map<int, int>* node_id_to_index_map); | 410 std::unordered_map<int, int>* node_id_to_index_map); |
| 409 | 411 |
| 410 void clear(); | 412 void clear(); |
| 411 | 413 |
| 412 typedef std::unordered_map<int, scoped_refptr<SyncedScrollOffset>> | 414 typedef std::unordered_map<int, ScrollWithOverscroll> ScrollOffsetMap; |
| 413 ScrollOffsetMap; | |
| 414 | 415 |
| 415 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; | 416 gfx::ScrollOffset MaxScrollOffset(int scroll_node_id) const; |
| 416 void OnScrollOffsetAnimated(int layer_id, | 417 void OnScrollOffsetAnimated(int layer_id, |
| 417 int transform_tree_index, | 418 int transform_tree_index, |
| 418 int scroll_tree_index, | 419 int scroll_tree_index, |
| 419 const gfx::ScrollOffset& scroll_offset, | 420 const gfx::ScrollOffset& scroll_offset, |
| 420 LayerTreeImpl* layer_tree_impl); | 421 LayerTreeImpl* layer_tree_impl); |
| 421 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; | 422 gfx::Size scroll_clip_layer_bounds(int scroll_node_id) const; |
| 422 ScrollNode* CurrentlyScrollingNode(); | 423 ScrollNode* CurrentlyScrollingNode(); |
| 423 const ScrollNode* CurrentlyScrollingNode() const; | 424 const ScrollNode* CurrentlyScrollingNode() const; |
| 424 #if DCHECK_IS_ON() | 425 #if DCHECK_IS_ON() |
| 425 int CurrentlyScrollingNodeId() const; | 426 int CurrentlyScrollingNodeId() const; |
| 426 #endif | 427 #endif |
| 427 void set_currently_scrolling_node(int scroll_node_id); | 428 void set_currently_scrolling_node(int scroll_node_id); |
| 428 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; | 429 gfx::Transform ScreenSpaceTransform(int scroll_node_id) const; |
| 429 | 430 |
| 430 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; | 431 const gfx::ScrollOffset current_scroll_offset(int layer_id) const; |
| 432 const gfx::ScrollOffset current_overscroll(int layer_id) const; |
| 431 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, | 433 void CollectScrollDeltas(ScrollAndScaleSet* scroll_info, |
| 432 int inner_viewport_layer_id); | 434 int inner_viewport_layer_id); |
| 433 void UpdateScrollOffsetMap(ScrollOffsetMap* new_scroll_offset_map, | 435 void UpdateScrollOffsetMap(ScrollTree* scroll_tree, |
| 434 LayerTreeImpl* layer_tree_impl); | 436 LayerTreeImpl* layer_tree_impl); |
| 435 ScrollOffsetMap& scroll_offset_map(); | 437 const ScrollOffsetMap& scroll_offset_map_for_test() const; |
| 436 const ScrollOffsetMap& scroll_offset_map() const; | |
| 437 void ApplySentScrollDeltasFromAbortedCommit(); | 438 void ApplySentScrollDeltasFromAbortedCommit(); |
| 438 bool SetBaseScrollOffset(int layer_id, | 439 void SetBaseScrollOffset(int layer_id, |
| 439 const gfx::ScrollOffset& scroll_offset); | 440 const gfx::ScrollOffset& scroll_offset, |
| 440 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset); | 441 const gfx::ScrollOffset& overscroll); |
| 441 void SetScrollOffsetClobberActiveValue(int layer_id) { | 442 bool SetScrollOffset(int layer_id, |
| 442 synced_scroll_offset(layer_id)->set_clobber_active_value(); | 443 const gfx::ScrollOffset& scroll_offset, |
| 444 const gfx::ScrollOffset& overscroll); |
| 445 |
| 446 // TODO(tapted): Remove this overload (used by TreeSynchronizerTest). |
| 447 bool SetScrollOffset(int layer_id, const gfx::ScrollOffset& scroll_offset) { |
| 448 return SetScrollOffset(layer_id, scroll_offset, gfx::ScrollOffset()); |
| 443 } | 449 } |
| 450 |
| 451 void SetScrollOffsetClobberActiveValue(int layer_id); |
| 444 bool UpdateScrollOffsetBaseForTesting(int layer_id, | 452 bool UpdateScrollOffsetBaseForTesting(int layer_id, |
| 445 const gfx::ScrollOffset& offset); | 453 const gfx::ScrollOffset& offset); |
| 446 bool SetScrollOffsetDeltaForTesting(int layer_id, | 454 bool SetScrollOffsetDeltaForTesting(int layer_id, |
| 447 const gfx::Vector2dF& delta); | 455 const gfx::Vector2dF& delta); |
| 448 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; | 456 const gfx::ScrollOffset GetScrollOffsetBaseForTesting(int layer_id) const; |
| 449 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; | 457 const gfx::ScrollOffset GetScrollOffsetDeltaForTesting(int layer_id) const; |
| 450 void CollectScrollDeltasForTesting(); | 458 void CollectScrollDeltasForTesting(); |
| 451 | 459 |
| 452 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); | 460 void DistributeScroll(ScrollNode* scroll_node, ScrollState* scroll_state); |
| 453 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, | 461 gfx::Vector2dF ScrollBy(ScrollNode* scroll_node, |
| 454 const gfx::Vector2dF& scroll, | 462 const gfx::Vector2dF& scroll, |
| 455 LayerTreeImpl* layer_tree_impl); | 463 LayerTreeImpl* layer_tree_impl); |
| 456 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, | 464 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset, |
| 457 ScrollNode* scroll_node) const; | 465 ScrollNode* scroll_node) const; |
| 458 | 466 |
| 459 private: | 467 private: |
| 460 int currently_scrolling_node_id_; | 468 int currently_scrolling_node_id_; |
| 461 ScrollOffsetMap layer_id_to_scroll_offset_map_; | 469 ScrollOffsetMap layer_id_to_scroll_offset_map_; |
| 462 | 470 |
| 471 ScrollWithOverscroll* GetOrCreate(int layer_id); |
| 472 const ScrollWithOverscroll* GetOrNull(int layer_id) const; |
| 463 SyncedScrollOffset* synced_scroll_offset(int layer_id); | 473 SyncedScrollOffset* synced_scroll_offset(int layer_id); |
| 464 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; | 474 const SyncedScrollOffset* synced_scroll_offset(int layer_id) const; |
| 475 |
| 465 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); | 476 gfx::ScrollOffset PullDeltaForMainThread(SyncedScrollOffset* scroll_offset); |
| 466 void UpdateScrollOffsetMapEntry(int key, | 477 void UpdateScrollOffsetMapEntry(int key, |
| 467 ScrollOffsetMap* new_scroll_offset_map, | 478 ScrollOffsetMap* new_scroll_offset_map, |
| 468 LayerTreeImpl* layer_tree_impl); | 479 LayerTreeImpl* layer_tree_impl); |
| 469 }; | 480 }; |
| 470 | 481 |
| 482 // Required in the header for TreeSynchronizerTest. |
| 483 struct ScrollTree::ScrollWithOverscroll { |
| 484 scoped_refptr<SyncedScrollOffset> synced_offset; |
| 485 gfx::ScrollOffset overscroll; |
| 486 |
| 487 // Hide the copy constructor to prevent inefficient map iterations, but then |
| 488 // the map needs a move constructor to insert items. |
| 489 ScrollWithOverscroll(); |
| 490 ScrollWithOverscroll(const ScrollWithOverscroll& rhs) = delete; |
| 491 ScrollWithOverscroll(ScrollWithOverscroll&& rhs); |
| 492 ~ScrollWithOverscroll(); |
| 493 |
| 494 bool operator==(const ScrollWithOverscroll& rhs) const { |
| 495 return synced_offset == rhs.synced_offset && overscroll == rhs.overscroll; |
| 496 } |
| 497 bool operator!=(const ScrollWithOverscroll& rhs) const { |
| 498 return !operator==(rhs); |
| 499 } |
| 500 }; |
| 501 |
| 471 struct AnimationScaleData { | 502 struct AnimationScaleData { |
| 472 // Variable used to invalidate cached animation scale data when transform tree | 503 // Variable used to invalidate cached animation scale data when transform tree |
| 473 // updates. | 504 // updates. |
| 474 int update_number; | 505 int update_number; |
| 475 | 506 |
| 476 // Current animations, considering only scales at keyframes not including the | 507 // Current animations, considering only scales at keyframes not including the |
| 477 // starting keyframe of each animation. | 508 // starting keyframe of each animation. |
| 478 float local_maximum_animation_target_scale; | 509 float local_maximum_animation_target_scale; |
| 479 | 510 |
| 480 // The maximum scale that this node's |local| transform will have during | 511 // The maximum scale that this node's |local| transform will have during |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 660 DrawTransforms& GetDrawTransforms(int transform_id, int effect_id) const; | 691 DrawTransforms& GetDrawTransforms(int transform_id, int effect_id) const; |
| 661 DrawTransformData& FetchDrawTransformsDataFromCache(int transform_id, | 692 DrawTransformData& FetchDrawTransformsDataFromCache(int transform_id, |
| 662 int effect_id) const; | 693 int effect_id) const; |
| 663 | 694 |
| 664 PropertyTreesCachedData cached_data_; | 695 PropertyTreesCachedData cached_data_; |
| 665 }; | 696 }; |
| 666 | 697 |
| 667 } // namespace cc | 698 } // namespace cc |
| 668 | 699 |
| 669 #endif // CC_TREES_PROPERTY_TREE_H_ | 700 #endif // CC_TREES_PROPERTY_TREE_H_ |
| OLD | NEW |