| 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 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/values.h" | 14 #include "base/values.h" |
| 15 #include "cc/animation/animation_delegate.h" | 15 #include "cc/animation/animation_delegate.h" |
| 16 #include "cc/animation/layer_animation_controller.h" | 16 #include "cc/animation/layer_animation_controller.h" |
| 17 #include "cc/animation/layer_animation_value_observer.h" | 17 #include "cc/animation/layer_animation_value_observer.h" |
| 18 #include "cc/animation/layer_animation_value_provider.h" | 18 #include "cc/animation/layer_animation_value_provider.h" |
| 19 #include "cc/base/cc_export.h" | 19 #include "cc/base/cc_export.h" |
| 20 #include "cc/base/region.h" | 20 #include "cc/base/region.h" |
| 21 #include "cc/base/scoped_ptr_vector.h" | 21 #include "cc/base/scoped_ptr_vector.h" |
| 22 #include "cc/base/synced_property.h" | 22 #include "cc/base/synced_property.h" |
| 23 #include "cc/debug/frame_timing_request.h" | 23 #include "cc/debug/frame_timing_request.h" |
| 24 #include "cc/input/input_handler.h" | 24 #include "cc/input/input_handler.h" |
| 25 #include "cc/input/scrollbar.h" | 25 #include "cc/input/scrollbar.h" |
| 26 #include "cc/layers/draw_properties.h" | 26 #include "cc/layers/draw_properties.h" |
| 27 #include "cc/layers/layer_lists.h" | 27 #include "cc/layers/layer_lists.h" |
| 28 #include "cc/layers/layer_position_constraint.h" | 28 #include "cc/layers/layer_position_constraint.h" |
| 29 #include "cc/layers/render_surface_impl.h" | 29 #include "cc/layers/render_surface_impl.h" |
| 30 #include "cc/layers/scroll_blocks_on.h" |
| 30 #include "cc/output/filter_operations.h" | 31 #include "cc/output/filter_operations.h" |
| 31 #include "cc/quads/shared_quad_state.h" | 32 #include "cc/quads/shared_quad_state.h" |
| 32 #include "cc/resources/resource_provider.h" | 33 #include "cc/resources/resource_provider.h" |
| 33 #include "skia/ext/refptr.h" | 34 #include "skia/ext/refptr.h" |
| 34 #include "third_party/skia/include/core/SkColor.h" | 35 #include "third_party/skia/include/core/SkColor.h" |
| 35 #include "third_party/skia/include/core/SkImageFilter.h" | 36 #include "third_party/skia/include/core/SkImageFilter.h" |
| 36 #include "third_party/skia/include/core/SkPicture.h" | 37 #include "third_party/skia/include/core/SkPicture.h" |
| 37 #include "ui/gfx/geometry/point3_f.h" | 38 #include "ui/gfx/geometry/point3_f.h" |
| 38 #include "ui/gfx/geometry/rect.h" | 39 #include "ui/gfx/geometry/rect.h" |
| 39 #include "ui/gfx/geometry/rect_f.h" | 40 #include "ui/gfx/geometry/rect_f.h" |
| 40 #include "ui/gfx/geometry/scroll_offset.h" | 41 #include "ui/gfx/geometry/scroll_offset.h" |
| 41 #include "ui/gfx/transform.h" | 42 #include "ui/gfx/transform.h" |
| 42 | 43 |
| 43 namespace base { | 44 namespace base { |
| 44 namespace debug { | 45 namespace trace_event { |
| 45 class ConvertableToTraceFormat; | 46 class ConvertableToTraceFormat; |
| 46 class TracedValue; | 47 class TracedValue; |
| 47 } | 48 } |
| 48 | 49 |
| 50 // TODO(ssid): remove these aliases after the tracing clients are moved to the |
| 51 // new trace_event namespace. See crbug.com/451032. ETA: March 2015 |
| 52 namespace debug { |
| 53 using ::base::trace_event::ConvertableToTraceFormat; |
| 54 using ::base::trace_event::TracedValue; |
| 55 } |
| 49 class DictionaryValue; | 56 class DictionaryValue; |
| 50 } | 57 } // namespace base |
| 51 | 58 |
| 52 namespace cc { | 59 namespace cc { |
| 53 | 60 |
| 54 class LayerTreeHostImpl; | 61 class LayerTreeHostImpl; |
| 55 class LayerTreeImpl; | 62 class LayerTreeImpl; |
| 56 class MicroBenchmarkImpl; | 63 class MicroBenchmarkImpl; |
| 57 class Occlusion; | 64 class Occlusion; |
| 58 template <typename LayerType> | 65 template <typename LayerType> |
| 59 class OcclusionTracker; | 66 class OcclusionTracker; |
| 60 class RenderPass; | 67 class RenderPass; |
| (...skipping 331 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 float contents_scale_x() const { return draw_properties_.contents_scale_x; } | 399 float contents_scale_x() const { return draw_properties_.contents_scale_x; } |
| 393 float contents_scale_y() const { return draw_properties_.contents_scale_y; } | 400 float contents_scale_y() const { return draw_properties_.contents_scale_y; } |
| 394 void SetContentsScale(float contents_scale_x, float contents_scale_y); | 401 void SetContentsScale(float contents_scale_x, float contents_scale_y); |
| 395 | 402 |
| 396 void SetScrollOffsetDelegate(ScrollOffsetDelegate* scroll_offset_delegate); | 403 void SetScrollOffsetDelegate(ScrollOffsetDelegate* scroll_offset_delegate); |
| 397 void RefreshFromScrollDelegate(); | 404 void RefreshFromScrollDelegate(); |
| 398 bool IsExternalFlingActive() const; | 405 bool IsExternalFlingActive() const; |
| 399 | 406 |
| 400 void SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset); | 407 void SetCurrentScrollOffset(const gfx::ScrollOffset& scroll_offset); |
| 401 void PushScrollOffsetFromMainThread(const gfx::ScrollOffset& scroll_offset); | 408 void PushScrollOffsetFromMainThread(const gfx::ScrollOffset& scroll_offset); |
| 409 // This method is similar to PushScrollOffsetFromMainThread but will cause the |
| 410 // scroll offset given to clobber any scroll changes on the active tree in the |
| 411 // time until this value is pushed to the active tree. |
| 412 void PushScrollOffsetFromMainThreadAndClobberActiveValue( |
| 413 const gfx::ScrollOffset& scroll_offset); |
| 402 gfx::ScrollOffset PullDeltaForMainThread(); | 414 gfx::ScrollOffset PullDeltaForMainThread(); |
| 403 gfx::ScrollOffset CurrentScrollOffset() const; | 415 gfx::ScrollOffset CurrentScrollOffset() const; |
| 404 gfx::ScrollOffset BaseScrollOffset() const; | 416 gfx::ScrollOffset BaseScrollOffset() const; |
| 405 gfx::Vector2dF ScrollDelta() const; | 417 gfx::Vector2dF ScrollDelta() const; |
| 406 void SetScrollDelta(const gfx::Vector2dF& delta); | 418 void SetScrollDelta(const gfx::Vector2dF& delta); |
| 407 | 419 |
| 408 gfx::ScrollOffset MaxScrollOffset() const; | 420 gfx::ScrollOffset MaxScrollOffset() const; |
| 409 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset) const; | 421 gfx::ScrollOffset ClampScrollOffsetToLimits(gfx::ScrollOffset offset) const; |
| 410 gfx::Vector2dF ClampScrollToMaxScrollOffset(); | 422 gfx::Vector2dF ClampScrollToMaxScrollOffset(); |
| 411 void SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, | 423 void SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 467 return non_fast_scrollable_region_; | 479 return non_fast_scrollable_region_; |
| 468 } | 480 } |
| 469 | 481 |
| 470 void SetTouchEventHandlerRegion(const Region& region) { | 482 void SetTouchEventHandlerRegion(const Region& region) { |
| 471 touch_event_handler_region_ = region; | 483 touch_event_handler_region_ = region; |
| 472 } | 484 } |
| 473 const Region& touch_event_handler_region() const { | 485 const Region& touch_event_handler_region() const { |
| 474 return touch_event_handler_region_; | 486 return touch_event_handler_region_; |
| 475 } | 487 } |
| 476 | 488 |
| 489 void SetScrollBlocksOn(ScrollBlocksOn scroll_blocks_on) { |
| 490 scroll_blocks_on_ = scroll_blocks_on; |
| 491 } |
| 492 ScrollBlocksOn scroll_blocks_on() const { return scroll_blocks_on_; } |
| 477 void SetDrawCheckerboardForMissingTiles(bool checkerboard) { | 493 void SetDrawCheckerboardForMissingTiles(bool checkerboard) { |
| 478 draw_checkerboard_for_missing_tiles_ = checkerboard; | 494 draw_checkerboard_for_missing_tiles_ = checkerboard; |
| 479 } | 495 } |
| 480 bool draw_checkerboard_for_missing_tiles() const { | 496 bool draw_checkerboard_for_missing_tiles() const { |
| 481 return draw_checkerboard_for_missing_tiles_; | 497 return draw_checkerboard_for_missing_tiles_; |
| 482 } | 498 } |
| 483 | 499 |
| 484 InputHandler::ScrollStatus TryScroll( | 500 InputHandler::ScrollStatus TryScroll( |
| 485 const gfx::PointF& screen_space_point, | 501 const gfx::PointF& screen_space_point, |
| 486 InputHandler::ScrollInputType type) const; | 502 InputHandler::ScrollInputType type, |
| 503 ScrollBlocksOn effective_block_mode) const; |
| 487 | 504 |
| 488 void SetDoubleSided(bool double_sided); | 505 void SetDoubleSided(bool double_sided); |
| 489 bool double_sided() const { return double_sided_; } | 506 bool double_sided() const { return double_sided_; } |
| 490 | 507 |
| 491 void SetTransform(const gfx::Transform& transform); | 508 void SetTransform(const gfx::Transform& transform); |
| 492 const gfx::Transform& transform() const { return transform_; } | 509 const gfx::Transform& transform() const { return transform_; } |
| 493 bool TransformIsAnimating() const; | 510 bool TransformIsAnimating() const; |
| 494 bool TransformIsAnimatingOnImplOnly() const; | 511 bool TransformIsAnimatingOnImplOnly() const; |
| 495 void SetTransformAndInvertibility(const gfx::Transform& transform, | 512 void SetTransformAndInvertibility(const gfx::Transform& transform, |
| 496 bool transform_is_invertible); | 513 bool transform_is_invertible); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 523 virtual SimpleEnclosedRegion VisibleContentOpaqueRegion() const; | 540 virtual SimpleEnclosedRegion VisibleContentOpaqueRegion() const; |
| 524 | 541 |
| 525 virtual void DidBecomeActive(); | 542 virtual void DidBecomeActive(); |
| 526 | 543 |
| 527 virtual void DidBeginTracing(); | 544 virtual void DidBeginTracing(); |
| 528 | 545 |
| 529 // Release resources held by this layer. Called when the output surface | 546 // Release resources held by this layer. Called when the output surface |
| 530 // that rendered this layer was lost or a rendering mode switch has occured. | 547 // that rendered this layer was lost or a rendering mode switch has occured. |
| 531 virtual void ReleaseResources(); | 548 virtual void ReleaseResources(); |
| 532 | 549 |
| 550 // Recreate resources that are required after they were released by a |
| 551 // ReleaseResources call. |
| 552 virtual void RecreateResources(); |
| 553 |
| 533 ScrollbarAnimationController* scrollbar_animation_controller() const { | 554 ScrollbarAnimationController* scrollbar_animation_controller() const { |
| 534 return scrollbar_animation_controller_.get(); | 555 return scrollbar_animation_controller_.get(); |
| 535 } | 556 } |
| 536 | 557 |
| 537 typedef std::set<ScrollbarLayerImplBase*> ScrollbarSet; | 558 typedef std::set<ScrollbarLayerImplBase*> ScrollbarSet; |
| 538 ScrollbarSet* scrollbars() { return scrollbars_.get(); } | 559 ScrollbarSet* scrollbars() { return scrollbars_.get(); } |
| 539 void ClearScrollbars(); | 560 void ClearScrollbars(); |
| 540 void AddScrollbar(ScrollbarLayerImplBase* layer); | 561 void AddScrollbar(ScrollbarLayerImplBase* layer); |
| 541 void RemoveScrollbar(ScrollbarLayerImplBase* layer); | 562 void RemoveScrollbar(ScrollbarLayerImplBase* layer); |
| 542 bool HasScrollbar(ScrollbarOrientation orientation) const; | 563 bool HasScrollbar(ScrollbarOrientation orientation) const; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 650 | 671 |
| 651 // Properties synchronized from the associated Layer. | 672 // Properties synchronized from the associated Layer. |
| 652 gfx::Point3F transform_origin_; | 673 gfx::Point3F transform_origin_; |
| 653 gfx::Size bounds_; | 674 gfx::Size bounds_; |
| 654 ScrollOffsetDelegate* scroll_offset_delegate_; | 675 ScrollOffsetDelegate* scroll_offset_delegate_; |
| 655 LayerImpl* scroll_clip_layer_; | 676 LayerImpl* scroll_clip_layer_; |
| 656 bool scrollable_ : 1; | 677 bool scrollable_ : 1; |
| 657 bool should_scroll_on_main_thread_ : 1; | 678 bool should_scroll_on_main_thread_ : 1; |
| 658 bool have_wheel_event_handlers_ : 1; | 679 bool have_wheel_event_handlers_ : 1; |
| 659 bool have_scroll_event_handlers_ : 1; | 680 bool have_scroll_event_handlers_ : 1; |
| 681 |
| 682 static_assert(ScrollBlocksOnMax < (1 << 3), "ScrollBlocksOn too big"); |
| 683 ScrollBlocksOn scroll_blocks_on_ : 3; |
| 684 |
| 660 bool user_scrollable_horizontal_ : 1; | 685 bool user_scrollable_horizontal_ : 1; |
| 661 bool user_scrollable_vertical_ : 1; | 686 bool user_scrollable_vertical_ : 1; |
| 662 bool stacking_order_changed_ : 1; | 687 bool stacking_order_changed_ : 1; |
| 663 // Whether the "back" of this layer should draw. | 688 // Whether the "back" of this layer should draw. |
| 664 bool double_sided_ : 1; | 689 bool double_sided_ : 1; |
| 665 bool should_flatten_transform_ : 1; | 690 bool should_flatten_transform_ : 1; |
| 666 | 691 |
| 667 // Tracks if drawing-related properties have changed since last redraw. | 692 // Tracks if drawing-related properties have changed since last redraw. |
| 668 bool layer_property_changed_ : 1; | 693 bool layer_property_changed_ : 1; |
| 669 | 694 |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 | 774 |
| 750 std::vector<FrameTimingRequest> frame_timing_requests_; | 775 std::vector<FrameTimingRequest> frame_timing_requests_; |
| 751 bool frame_timing_requests_dirty_; | 776 bool frame_timing_requests_dirty_; |
| 752 | 777 |
| 753 DISALLOW_COPY_AND_ASSIGN(LayerImpl); | 778 DISALLOW_COPY_AND_ASSIGN(LayerImpl); |
| 754 }; | 779 }; |
| 755 | 780 |
| 756 } // namespace cc | 781 } // namespace cc |
| 757 | 782 |
| 758 #endif // CC_LAYERS_LAYER_IMPL_H_ | 783 #endif // CC_LAYERS_LAYER_IMPL_H_ |
| OLD | NEW |