Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2010 The Chromium Authors. All rights reserved. | 1 // Copyright 2010 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/layers/layer.h" | 5 #include "cc/layers/layer.h" |
| 6 | 6 |
| 7 #include "base/metrics/histogram.h" | 7 #include "base/metrics/histogram.h" |
| 8 #include "cc/animation/animation.h" | 8 #include "cc/animation/animation.h" |
| 9 #include "cc/animation/animation_events.h" | 9 #include "cc/animation/animation_events.h" |
| 10 #include "cc/animation/layer_animation_controller.h" | 10 #include "cc/animation/layer_animation_controller.h" |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 parent_(NULL), | 33 parent_(NULL), |
| 34 layer_tree_host_(NULL), | 34 layer_tree_host_(NULL), |
| 35 scrollable_(false), | 35 scrollable_(false), |
| 36 should_scroll_on_main_thread_(false), | 36 should_scroll_on_main_thread_(false), |
| 37 have_wheel_event_handlers_(false), | 37 have_wheel_event_handlers_(false), |
| 38 anchor_point_(0.5f, 0.5f), | 38 anchor_point_(0.5f, 0.5f), |
| 39 background_color_(0), | 39 background_color_(0), |
| 40 opacity_(1.f), | 40 opacity_(1.f), |
| 41 anchor_point_z_(0.f), | 41 anchor_point_z_(0.f), |
| 42 is_container_for_fixed_position_layers_(false), | 42 is_container_for_fixed_position_layers_(false), |
| 43 fixed_to_container_layer_(false), | |
| 44 is_drawable_(false), | 43 is_drawable_(false), |
| 45 masks_to_bounds_(false), | 44 masks_to_bounds_(false), |
| 46 contents_opaque_(false), | 45 contents_opaque_(false), |
| 47 double_sided_(true), | 46 double_sided_(true), |
| 48 preserves_3d_(false), | 47 preserves_3d_(false), |
| 49 use_parent_backface_visibility_(false), | 48 use_parent_backface_visibility_(false), |
| 50 draw_checkerboard_for_missing_tiles_(false), | 49 draw_checkerboard_for_missing_tiles_(false), |
| 51 force_render_surface_(false), | 50 force_render_surface_(false), |
| 52 replica_layer_(NULL), | 51 replica_layer_(NULL), |
| 53 raster_scale_(1.f), | 52 raster_scale_(1.f), |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 408 SetNeedsCommit(); | 407 SetNeedsCommit(); |
| 409 } | 408 } |
| 410 | 409 |
| 411 void Layer::SetPosition(gfx::PointF position) { | 410 void Layer::SetPosition(gfx::PointF position) { |
| 412 if (position_ == position) | 411 if (position_ == position) |
| 413 return; | 412 return; |
| 414 position_ = position; | 413 position_ = position; |
| 415 SetNeedsCommit(); | 414 SetNeedsCommit(); |
| 416 } | 415 } |
| 417 | 416 |
| 417 bool Layer::is_container_for_fixed_position_layers() const { | |
|
Sami
2013/03/25 11:41:37
Any reason why this is on Layer instead LayerImpl?
trchen
2013/03/26 01:45:28
Extra transform may be applied in LayerImpl but tr
| |
| 418 if (!transform_.IsIdentityOrTranslation()) | |
| 419 return true; | |
| 420 if (parent_ && !parent_->sublayer_transform_.IsIdentityOrTranslation()) | |
|
Sami
2013/03/25 11:41:37
Should we also check sublayer_transform_ for this
trchen
2013/03/26 01:45:28
It is arguable but I would vote not. The point of
shawnsingh
2013/03/27 19:46:39
In reply to Sami asking "Should we also check subl
| |
| 421 return true; | |
| 422 return is_container_for_fixed_position_layers_; | |
| 423 } | |
| 424 | |
| 418 void Layer::SetSublayerTransform(const gfx::Transform& sublayer_transform) { | 425 void Layer::SetSublayerTransform(const gfx::Transform& sublayer_transform) { |
| 419 if (sublayer_transform_ == sublayer_transform) | 426 if (sublayer_transform_ == sublayer_transform) |
| 420 return; | 427 return; |
| 421 sublayer_transform_ = sublayer_transform; | 428 sublayer_transform_ = sublayer_transform; |
| 422 SetNeedsCommit(); | 429 SetNeedsCommit(); |
| 423 } | 430 } |
| 424 | 431 |
| 425 void Layer::SetTransform(const gfx::Transform& transform) { | 432 void Layer::SetTransform(const gfx::Transform& transform) { |
| 426 if (transform_ == transform) | 433 if (transform_ == transform) |
| 427 return; | 434 return; |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 525 | 532 |
| 526 // Simply mark the contents as dirty. For non-root layers, the call to | 533 // Simply mark the contents as dirty. For non-root layers, the call to |
| 527 // SetNeedsCommit will schedule a fresh compositing pass. | 534 // SetNeedsCommit will schedule a fresh compositing pass. |
| 528 // For the root layer, SetNeedsCommit has no effect. | 535 // For the root layer, SetNeedsCommit has no effect. |
| 529 if (DrawsContent() && !update_rect_.IsEmpty()) | 536 if (DrawsContent() && !update_rect_.IsEmpty()) |
| 530 SetNeedsCommit(); | 537 SetNeedsCommit(); |
| 531 } | 538 } |
| 532 | 539 |
| 533 bool Layer::DescendantIsFixedToContainerLayer() const { | 540 bool Layer::DescendantIsFixedToContainerLayer() const { |
| 534 for (size_t i = 0; i < children_.size(); ++i) { | 541 for (size_t i = 0; i < children_.size(); ++i) { |
| 535 if (children_[i]->fixed_to_container_layer() || | 542 if (children_[i]->position_constraint_.is_fixed_position() || |
| 536 children_[i]->DescendantIsFixedToContainerLayer()) | 543 children_[i]->DescendantIsFixedToContainerLayer()) |
| 537 return true; | 544 return true; |
| 538 } | 545 } |
| 539 return false; | 546 return false; |
| 540 } | 547 } |
| 541 | 548 |
| 542 void Layer::SetIsContainerForFixedPositionLayers(bool container) { | 549 void Layer::SetIsContainerForFixedPositionLayers(bool container) { |
| 543 if (is_container_for_fixed_position_layers_ == container) | 550 if (is_container_for_fixed_position_layers_ == container) |
| 544 return; | 551 return; |
| 545 is_container_for_fixed_position_layers_ = container; | 552 is_container_for_fixed_position_layers_ = container; |
| 546 | 553 |
| 547 if (layer_tree_host_ && layer_tree_host_->CommitRequested()) | 554 if (layer_tree_host_ && layer_tree_host_->CommitRequested()) |
| 548 return; | 555 return; |
| 549 | 556 |
| 550 // Only request a commit if we have a fixed positioned descendant. | 557 // Only request a commit if we have a fixed positioned descendant. |
| 551 if (DescendantIsFixedToContainerLayer()) | 558 if (DescendantIsFixedToContainerLayer()) |
| 552 SetNeedsCommit(); | 559 SetNeedsCommit(); |
| 553 } | 560 } |
| 554 | 561 |
| 555 void Layer::SetFixedToContainerLayer(bool fixed_to_container_layer) { | 562 void Layer::SetPositionConstraint(const LayerPositionConstraint& constraint) { |
| 556 if (fixed_to_container_layer_ == fixed_to_container_layer) | 563 if (position_constraint_ == constraint) |
| 557 return; | 564 return; |
| 558 fixed_to_container_layer_ = fixed_to_container_layer; | 565 position_constraint_ = constraint; |
| 559 SetNeedsCommit(); | 566 SetNeedsCommit(); |
| 560 } | 567 } |
| 561 | 568 |
| 562 void Layer::PushPropertiesTo(LayerImpl* layer) { | 569 void Layer::PushPropertiesTo(LayerImpl* layer) { |
| 563 layer->SetAnchorPoint(anchor_point_); | 570 layer->SetAnchorPoint(anchor_point_); |
| 564 layer->SetAnchorPointZ(anchor_point_z_); | 571 layer->SetAnchorPointZ(anchor_point_z_); |
| 565 layer->SetBackgroundColor(background_color_); | 572 layer->SetBackgroundColor(background_color_); |
| 566 layer->SetBounds(bounds_); | 573 layer->SetBounds(bounds_); |
| 567 layer->SetContentBounds(content_bounds()); | 574 layer->SetContentBounds(content_bounds()); |
| 568 layer->SetContentsScale(contents_scale_x(), contents_scale_y()); | 575 layer->SetContentsScale(contents_scale_x(), contents_scale_y()); |
| 569 layer->SetDebugName(debug_name_); | 576 layer->SetDebugName(debug_name_); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 580 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); | 587 layer->SetHaveWheelEventHandlers(have_wheel_event_handlers_); |
| 581 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); | 588 layer->SetNonFastScrollableRegion(non_fast_scrollable_region_); |
| 582 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); | 589 layer->SetTouchEventHandlerRegion(touch_event_handler_region_); |
| 583 layer->SetContentsOpaque(contents_opaque_); | 590 layer->SetContentsOpaque(contents_opaque_); |
| 584 if (!layer->OpacityIsAnimatingOnImplOnly()) | 591 if (!layer->OpacityIsAnimatingOnImplOnly()) |
| 585 layer->SetOpacity(opacity_); | 592 layer->SetOpacity(opacity_); |
| 586 DCHECK(!(OpacityIsAnimating() && layer->OpacityIsAnimatingOnImplOnly())); | 593 DCHECK(!(OpacityIsAnimating() && layer->OpacityIsAnimatingOnImplOnly())); |
| 587 layer->SetPosition(position_); | 594 layer->SetPosition(position_); |
| 588 layer->SetIsContainerForFixedPositionLayers( | 595 layer->SetIsContainerForFixedPositionLayers( |
| 589 is_container_for_fixed_position_layers_); | 596 is_container_for_fixed_position_layers_); |
| 590 layer->SetFixedToContainerLayer(fixed_to_container_layer_); | 597 layer->SetFixedContainerSizeDelta(gfx::Vector2dF()); |
| 598 layer->SetPositionConstraint(position_constraint_); | |
| 591 layer->SetPreserves3d(preserves_3d()); | 599 layer->SetPreserves3d(preserves_3d()); |
| 592 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); | 600 layer->SetUseParentBackfaceVisibility(use_parent_backface_visibility_); |
| 593 layer->SetSublayerTransform(sublayer_transform_); | 601 layer->SetSublayerTransform(sublayer_transform_); |
| 594 if (!layer->TransformIsAnimatingOnImplOnly()) | 602 if (!layer->TransformIsAnimatingOnImplOnly()) |
| 595 layer->SetTransform(transform_); | 603 layer->SetTransform(transform_); |
| 596 DCHECK(!(TransformIsAnimating() && layer->TransformIsAnimatingOnImplOnly())); | 604 DCHECK(!(TransformIsAnimating() && layer->TransformIsAnimatingOnImplOnly())); |
| 597 | 605 |
| 598 layer->SetScrollable(scrollable_); | 606 layer->SetScrollable(scrollable_); |
| 599 layer->SetScrollOffset(scroll_offset_); | 607 layer->SetScrollOffset(scroll_offset_); |
| 600 layer->SetMaxScrollOffset(max_scroll_offset_); | 608 layer->SetMaxScrollOffset(max_scroll_offset_); |
| (...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 811 if (contents_opaque()) | 819 if (contents_opaque()) |
| 812 return visible_content_rect(); | 820 return visible_content_rect(); |
| 813 return Region(); | 821 return Region(); |
| 814 } | 822 } |
| 815 | 823 |
| 816 ScrollbarLayer* Layer::ToScrollbarLayer() { | 824 ScrollbarLayer* Layer::ToScrollbarLayer() { |
| 817 return NULL; | 825 return NULL; |
| 818 } | 826 } |
| 819 | 827 |
| 820 } // namespace cc | 828 } // namespace cc |
| OLD | NEW |