| 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 #ifndef CC_LAYERS_LAYER_IMPL_H_ | 5 #ifndef CC_LAYERS_LAYER_IMPL_H_ |
| 6 #define CC_LAYERS_LAYER_IMPL_H_ | 6 #define CC_LAYERS_LAYER_IMPL_H_ |
| 7 | 7 |
| 8 #include <set> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 | 368 |
| 369 void SetScrollOffsetDelegate( | 369 void SetScrollOffsetDelegate( |
| 370 LayerScrollOffsetDelegate* scroll_offset_delegate); | 370 LayerScrollOffsetDelegate* scroll_offset_delegate); |
| 371 bool IsExternalFlingActive() const; | 371 bool IsExternalFlingActive() const; |
| 372 | 372 |
| 373 void SetScrollOffset(gfx::Vector2d scroll_offset); | 373 void SetScrollOffset(gfx::Vector2d scroll_offset); |
| 374 void SetScrollOffsetAndDelta(gfx::Vector2d scroll_offset, | 374 void SetScrollOffsetAndDelta(gfx::Vector2d scroll_offset, |
| 375 gfx::Vector2dF scroll_delta); | 375 gfx::Vector2dF scroll_delta); |
| 376 gfx::Vector2d scroll_offset() const { return scroll_offset_; } | 376 gfx::Vector2d scroll_offset() const { return scroll_offset_; } |
| 377 | 377 |
| 378 void SetMaxScrollOffset(gfx::Vector2d max_scroll_offset); | 378 gfx::Vector2d MaxScrollOffset() const; |
| 379 gfx::Vector2d max_scroll_offset() const { return max_scroll_offset_; } | 379 gfx::Vector2dF ClampScrollToMaxScrollOffset(); |
| 380 void SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
| 381 LayerImpl* scrollbar_clip_layer) const; |
| 380 | 382 |
| 381 void SetScrollDelta(gfx::Vector2dF scroll_delta); | 383 void SetScrollDelta(gfx::Vector2dF scroll_delta); |
| 382 gfx::Vector2dF ScrollDelta() const; | 384 gfx::Vector2dF ScrollDelta() const; |
| 383 | 385 |
| 384 gfx::Vector2dF TotalScrollOffset() const; | 386 gfx::Vector2dF TotalScrollOffset() const; |
| 385 | 387 |
| 386 void SetSentScrollDelta(gfx::Vector2d sent_scroll_delta); | 388 void SetSentScrollDelta(gfx::Vector2d sent_scroll_delta); |
| 387 gfx::Vector2d sent_scroll_delta() const { return sent_scroll_delta_; } | 389 gfx::Vector2d sent_scroll_delta() const { return sent_scroll_delta_; } |
| 388 | 390 |
| 389 // Returns the delta of the scroll that was outside of the bounds of the | 391 // Returns the delta of the scroll that was outside of the bounds of the |
| 390 // initial scroll | 392 // initial scroll |
| 391 gfx::Vector2dF ScrollBy(gfx::Vector2dF scroll); | 393 gfx::Vector2dF ScrollBy(gfx::Vector2dF scroll); |
| 392 | 394 |
| 393 void SetScrollable(bool scrollable) { scrollable_ = scrollable; } | 395 void SetScrollClipLayer(int scroll_clip_layer_id); |
| 394 bool scrollable() const { return scrollable_; } | 396 bool scrollable() const { return scroll_clip_layer_; } |
| 395 | 397 |
| 396 void set_user_scrollable_horizontal(bool scrollable) { | 398 void set_user_scrollable_horizontal(bool scrollable) { |
| 397 user_scrollable_horizontal_ = scrollable; | 399 user_scrollable_horizontal_ = scrollable; |
| 398 } | 400 } |
| 399 void set_user_scrollable_vertical(bool scrollable) { | 401 void set_user_scrollable_vertical(bool scrollable) { |
| 400 user_scrollable_vertical_ = scrollable; | 402 user_scrollable_vertical_ = scrollable; |
| 401 } | 403 } |
| 402 | 404 |
| 403 void ApplySentScrollDeltasFromAbortedCommit(); | 405 void ApplySentScrollDeltasFromAbortedCommit(); |
| 404 void ApplyScrollDeltasSinceBeginMainFrame(); | 406 void ApplyScrollDeltasSinceBeginMainFrame(); |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 476 | 478 |
| 477 // Indicates that the surface previously used to render this layer | 479 // Indicates that the surface previously used to render this layer |
| 478 // was lost and that a new one has been created. Won't be called | 480 // was lost and that a new one has been created. Won't be called |
| 479 // until the new surface has been created successfully. | 481 // until the new surface has been created successfully. |
| 480 virtual void DidLoseOutputSurface(); | 482 virtual void DidLoseOutputSurface(); |
| 481 | 483 |
| 482 ScrollbarAnimationController* scrollbar_animation_controller() const { | 484 ScrollbarAnimationController* scrollbar_animation_controller() const { |
| 483 return scrollbar_animation_controller_.get(); | 485 return scrollbar_animation_controller_.get(); |
| 484 } | 486 } |
| 485 | 487 |
| 486 void SetHorizontalScrollbarLayer(ScrollbarLayerImplBase* scrollbar_layer); | 488 typedef std::set<ScrollbarLayerImplBase*> ScrollbarSet; |
| 487 ScrollbarLayerImplBase* horizontal_scrollbar_layer() { | 489 ScrollbarSet* scrollbars() { return scrollbars_.get(); } |
| 488 return horizontal_scrollbar_layer_; | 490 void ClearScrollbars(); |
| 489 } | 491 void AddScrollbar(ScrollbarLayerImplBase* layer); |
| 490 | 492 void RemoveScrollbar(ScrollbarLayerImplBase* layer); |
| 491 void SetVerticalScrollbarLayer(ScrollbarLayerImplBase* scrollbar_layer); | 493 bool HasScrollbar(ScrollbarOrientation orientation) const; |
| 492 ScrollbarLayerImplBase* vertical_scrollbar_layer() { | 494 void ScrollbarParametersDidChange(); |
| 493 return vertical_scrollbar_layer_; | 495 int clip_height() { |
| 496 return scroll_clip_layer_ ? scroll_clip_layer_->bounds().height() : 0; |
| 494 } | 497 } |
| 495 | 498 |
| 496 gfx::Rect LayerRectToContentRect(const gfx::RectF& layer_rect) const; | 499 gfx::Rect LayerRectToContentRect(const gfx::RectF& layer_rect) const; |
| 497 | 500 |
| 498 virtual skia::RefPtr<SkPicture> GetPicture(); | 501 virtual skia::RefPtr<SkPicture> GetPicture(); |
| 499 | 502 |
| 500 virtual bool AreVisibleResourcesReady() const; | 503 virtual bool AreVisibleResourcesReady() const; |
| 501 | 504 |
| 502 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl); | 505 virtual scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl); |
| 503 virtual void PushPropertiesTo(LayerImpl* layer); | 506 virtual void PushPropertiesTo(LayerImpl* layer); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 531 | 534 |
| 532 virtual void AsValueInto(base::DictionaryValue* dict) const; | 535 virtual void AsValueInto(base::DictionaryValue* dict) const; |
| 533 | 536 |
| 534 void NoteLayerPropertyChanged(); | 537 void NoteLayerPropertyChanged(); |
| 535 void NoteLayerPropertyChangedForSubtree(); | 538 void NoteLayerPropertyChangedForSubtree(); |
| 536 | 539 |
| 537 // Note carefully this does not affect the current layer. | 540 // Note carefully this does not affect the current layer. |
| 538 void NoteLayerPropertyChangedForDescendants(); | 541 void NoteLayerPropertyChangedForDescendants(); |
| 539 | 542 |
| 540 private: | 543 private: |
| 541 void UpdateScrollbarPositions(); | |
| 542 | |
| 543 virtual const char* LayerTypeAsString() const; | 544 virtual const char* LayerTypeAsString() const; |
| 544 | 545 |
| 545 // Properties internal to LayerImpl | 546 // Properties internal to LayerImpl |
| 546 LayerImpl* parent_; | 547 LayerImpl* parent_; |
| 547 OwnedLayerImplList children_; | 548 OwnedLayerImplList children_; |
| 548 | 549 |
| 549 LayerImpl* scroll_parent_; | 550 LayerImpl* scroll_parent_; |
| 550 | 551 |
| 551 // Storing a pointer to a set rather than a set since this will be rarely | 552 // Storing a pointer to a set rather than a set since this will be rarely |
| 552 // used. If this pointer turns out to be too heavy, we could have this (and | 553 // used. If this pointer turns out to be too heavy, we could have this (and |
| (...skipping 12 matching lines...) Expand all Loading... |
| 565 scoped_ptr<LayerImpl> replica_layer_; | 566 scoped_ptr<LayerImpl> replica_layer_; |
| 566 int layer_id_; | 567 int layer_id_; |
| 567 LayerTreeImpl* layer_tree_impl_; | 568 LayerTreeImpl* layer_tree_impl_; |
| 568 | 569 |
| 569 // Properties synchronized from the associated Layer. | 570 // Properties synchronized from the associated Layer. |
| 570 gfx::PointF anchor_point_; | 571 gfx::PointF anchor_point_; |
| 571 float anchor_point_z_; | 572 float anchor_point_z_; |
| 572 gfx::Size bounds_; | 573 gfx::Size bounds_; |
| 573 gfx::Vector2d scroll_offset_; | 574 gfx::Vector2d scroll_offset_; |
| 574 LayerScrollOffsetDelegate* scroll_offset_delegate_; | 575 LayerScrollOffsetDelegate* scroll_offset_delegate_; |
| 576 LayerImpl* scroll_clip_layer_; |
| 575 bool scrollable_ : 1; | 577 bool scrollable_ : 1; |
| 576 bool should_scroll_on_main_thread_ : 1; | 578 bool should_scroll_on_main_thread_ : 1; |
| 577 bool have_wheel_event_handlers_ : 1; | 579 bool have_wheel_event_handlers_ : 1; |
| 578 bool user_scrollable_horizontal_ : 1; | 580 bool user_scrollable_horizontal_ : 1; |
| 579 bool user_scrollable_vertical_ : 1; | 581 bool user_scrollable_vertical_ : 1; |
| 580 bool stacking_order_changed_ : 1; | 582 bool stacking_order_changed_ : 1; |
| 581 // Whether the "back" of this layer should draw. | 583 // Whether the "back" of this layer should draw. |
| 582 bool double_sided_ : 1; | 584 bool double_sided_ : 1; |
| 583 | 585 |
| 584 // Tracks if drawing-related properties have changed since last redraw. | 586 // Tracks if drawing-related properties have changed since last redraw. |
| (...skipping 22 matching lines...) Expand all Loading... |
| 607 gfx::Transform transform_; | 609 gfx::Transform transform_; |
| 608 | 610 |
| 609 // This property is effective when | 611 // This property is effective when |
| 610 // is_container_for_fixed_position_layers_ == true, | 612 // is_container_for_fixed_position_layers_ == true, |
| 611 gfx::Vector2dF fixed_container_size_delta_; | 613 gfx::Vector2dF fixed_container_size_delta_; |
| 612 | 614 |
| 613 LayerPositionConstraint position_constraint_; | 615 LayerPositionConstraint position_constraint_; |
| 614 | 616 |
| 615 gfx::Vector2dF scroll_delta_; | 617 gfx::Vector2dF scroll_delta_; |
| 616 gfx::Vector2d sent_scroll_delta_; | 618 gfx::Vector2d sent_scroll_delta_; |
| 617 gfx::Vector2d max_scroll_offset_; | |
| 618 gfx::Vector2dF last_scroll_offset_; | 619 gfx::Vector2dF last_scroll_offset_; |
| 619 | 620 |
| 620 // The global depth value of the center of the layer. This value is used | 621 // The global depth value of the center of the layer. This value is used |
| 621 // to sort layers from back to front. | 622 // to sort layers from back to front. |
| 622 float draw_depth_; | 623 float draw_depth_; |
| 623 | 624 |
| 624 // Debug layer name. | 625 // Debug layer name. |
| 625 std::string debug_name_; | 626 std::string debug_name_; |
| 626 | 627 |
| 627 FilterOperations filters_; | 628 FilterOperations filters_; |
| 628 FilterOperations background_filters_; | 629 FilterOperations background_filters_; |
| 629 | 630 |
| 630 protected: | 631 protected: |
| 631 DrawMode current_draw_mode_; | 632 DrawMode current_draw_mode_; |
| 632 | 633 |
| 633 private: | 634 private: |
| 634 // Rect indicating what was repainted/updated during update. | 635 // Rect indicating what was repainted/updated during update. |
| 635 // Note that plugin layers bypass this and leave it empty. | 636 // Note that plugin layers bypass this and leave it empty. |
| 636 // Uses layer (not content) space. | 637 // Uses layer (not content) space. |
| 637 gfx::RectF update_rect_; | 638 gfx::RectF update_rect_; |
| 638 | 639 |
| 639 // Manages animations for this layer. | 640 // Manages animations for this layer. |
| 640 scoped_refptr<LayerAnimationController> layer_animation_controller_; | 641 scoped_refptr<LayerAnimationController> layer_animation_controller_; |
| 641 | 642 |
| 642 // Manages scrollbars for this layer | 643 // Manages scrollbars for this layer |
| 643 scoped_ptr<ScrollbarAnimationController> scrollbar_animation_controller_; | 644 scoped_ptr<ScrollbarAnimationController> scrollbar_animation_controller_; |
| 644 | 645 |
| 645 // Weak pointers to this layer's scrollbars, if it has them. Updated during | 646 scoped_ptr<ScrollbarSet> scrollbars_; |
| 646 // tree synchronization. | |
| 647 ScrollbarLayerImplBase* horizontal_scrollbar_layer_; | |
| 648 ScrollbarLayerImplBase* vertical_scrollbar_layer_; | |
| 649 | 647 |
| 650 ScopedPtrVector<CopyOutputRequest> copy_requests_; | 648 ScopedPtrVector<CopyOutputRequest> copy_requests_; |
| 651 | 649 |
| 652 // Group of properties that need to be computed based on the layer tree | 650 // Group of properties that need to be computed based on the layer tree |
| 653 // hierarchy before layers can be drawn. | 651 // hierarchy before layers can be drawn. |
| 654 DrawProperties<LayerImpl> draw_properties_; | 652 DrawProperties<LayerImpl> draw_properties_; |
| 655 | 653 |
| 656 scoped_refptr<base::debug::ConvertableToTraceFormat> debug_info_; | 654 scoped_refptr<base::debug::ConvertableToTraceFormat> debug_info_; |
| 657 | 655 |
| 658 DISALLOW_COPY_AND_ASSIGN(LayerImpl); | 656 DISALLOW_COPY_AND_ASSIGN(LayerImpl); |
| 659 }; | 657 }; |
| 660 | 658 |
| 661 } // namespace cc | 659 } // namespace cc |
| 662 | 660 |
| 663 #endif // CC_LAYERS_LAYER_IMPL_H_ | 661 #endif // CC_LAYERS_LAYER_IMPL_H_ |
| OLD | NEW |