Index: cc/layers/layer_impl.cc |
diff --git a/cc/layers/layer_impl.cc b/cc/layers/layer_impl.cc |
index 224513c2a59f0ee51476eeed69a91a31249b4737..3e0e00970dc21da7cad214e538804b14699a67ef 100644 |
--- a/cc/layers/layer_impl.cc |
+++ b/cc/layers/layer_impl.cc |
@@ -354,7 +354,7 @@ ResourceProvider::ResourceId LayerImpl::ContentsResourceId() const { |
return 0; |
} |
-void LayerImpl::SetSentScrollDelta(const gfx::Vector2d& sent_scroll_delta) { |
+void LayerImpl::SetSentScrollDelta(const gfx::Vector2dF& sent_scroll_delta) { |
// Pending tree never has sent scroll deltas |
DCHECK(layer_tree_impl()->IsActiveTree()); |
@@ -366,8 +366,8 @@ void LayerImpl::SetSentScrollDelta(const gfx::Vector2d& sent_scroll_delta) { |
gfx::Vector2dF LayerImpl::ScrollBy(const gfx::Vector2dF& scroll) { |
DCHECK(scrollable()); |
- gfx::Vector2dF min_delta = -scroll_offset_; |
- gfx::Vector2dF max_delta = MaxScrollOffset() - scroll_offset_; |
+ gfx::Vector2dF min_delta = -ScrollOffsetToVector2dF(scroll_offset_); |
+ gfx::Vector2dF max_delta = MaxScrollOffset().DeltaFrom(scroll_offset_); |
// Clamp new_delta so that position + delta stays within scroll bounds. |
gfx::Vector2dF new_delta = (ScrollDelta() + scroll); |
new_delta.SetToMax(min_delta); |
@@ -398,9 +398,9 @@ void LayerImpl::ApplySentScrollDeltasFromAbortedCommit() { |
// Because of the way scroll delta is calculated with a delegate, this will |
// leave the total scroll offset unchanged on this layer regardless of |
// whether a delegate is being used. |
- scroll_offset_ += sent_scroll_delta_; |
+ scroll_offset_ += gfx::ScrollOffset(sent_scroll_delta_); |
scroll_delta_ -= sent_scroll_delta_; |
- sent_scroll_delta_ = gfx::Vector2d(); |
+ sent_scroll_delta_ = gfx::Vector2dF(); |
} |
void LayerImpl::ApplyScrollDeltasSinceBeginMainFrame() { |
@@ -472,7 +472,7 @@ InputHandler::ScrollStatus LayerImpl::TryScroll( |
return InputHandler::ScrollIgnored; |
} |
- gfx::Vector2d max_scroll_offset = MaxScrollOffset(); |
+ gfx::ScrollOffset max_scroll_offset = MaxScrollOffset(); |
if (max_scroll_offset.x() <= 0 && max_scroll_offset.y() <= 0) { |
TRACE_EVENT0("cc", |
"LayerImpl::tryScroll: Ignored. Technically scrollable," |
@@ -538,8 +538,9 @@ void LayerImpl::PushPropertiesTo(LayerImpl* layer) { |
layer->set_user_scrollable_horizontal(user_scrollable_horizontal_); |
layer->set_user_scrollable_vertical(user_scrollable_vertical_); |
layer->SetScrollOffsetAndDelta( |
- scroll_offset_, layer->ScrollDelta() - layer->sent_scroll_delta()); |
- layer->SetSentScrollDelta(gfx::Vector2d()); |
+ scroll_offset_, |
+ layer->ScrollDelta() - layer->sent_scroll_delta()); |
+ layer->SetSentScrollDelta(gfx::Vector2dF()); |
layer->Set3dSortingContextId(sorting_context_id_); |
layer->SetNumDescendantsThatDrawContent(num_descendants_that_draw_content_); |
@@ -736,7 +737,7 @@ void LayerImpl::ResetAllChangeTrackingForSubtree() { |
num_dependents_need_push_properties_ = 0; |
} |
-gfx::Vector2dF LayerImpl::ScrollOffsetForAnimation() const { |
+gfx::ScrollOffset LayerImpl::ScrollOffsetForAnimation() const { |
return TotalScrollOffset(); |
} |
@@ -752,14 +753,14 @@ void LayerImpl::OnTransformAnimated(const gfx::Transform& transform) { |
SetTransform(transform); |
} |
-void LayerImpl::OnScrollOffsetAnimated(const gfx::Vector2dF& scroll_offset) { |
+void LayerImpl::OnScrollOffsetAnimated(const gfx::ScrollOffset& scroll_offset) { |
// Only layers in the active tree should need to do anything here, since |
// layers in the pending tree will find out about these changes as a |
// result of the call to SetScrollDelta. |
if (!IsActive()) |
return; |
- SetScrollDelta(scroll_offset - scroll_offset_); |
+ SetScrollDelta(scroll_offset.DeltaFrom(scroll_offset_)); |
layer_tree_impl_->DidAnimateScrollOffset(); |
} |
@@ -1064,10 +1065,10 @@ void LayerImpl::SetScrollOffsetDelegate( |
// Having both a scroll parent and a scroll offset delegate is unsupported. |
DCHECK(!scroll_parent_); |
if (!scroll_offset_delegate && scroll_offset_delegate_) { |
- scroll_delta_ = |
- scroll_offset_delegate_->GetTotalScrollOffset() - scroll_offset_; |
+ scroll_delta_ = scroll_offset_delegate_->GetTotalScrollOffset().DeltaFrom( |
+ scroll_offset_); |
} |
- gfx::Vector2dF total_offset = TotalScrollOffset(); |
+ gfx::ScrollOffset total_offset = TotalScrollOffset(); |
scroll_offset_delegate_ = scroll_offset_delegate; |
if (scroll_offset_delegate_) |
scroll_offset_delegate_->SetTotalScrollOffset(total_offset); |
@@ -1078,11 +1079,11 @@ bool LayerImpl::IsExternalFlingActive() const { |
scroll_offset_delegate_->IsExternalFlingActive(); |
} |
-void LayerImpl::SetScrollOffset(const gfx::Vector2d& scroll_offset) { |
+void LayerImpl::SetScrollOffset(const gfx::ScrollOffset& scroll_offset) { |
SetScrollOffsetAndDelta(scroll_offset, ScrollDelta()); |
} |
-void LayerImpl::SetScrollOffsetAndDelta(const gfx::Vector2d& scroll_offset, |
+void LayerImpl::SetScrollOffsetAndDelta(const gfx::ScrollOffset& scroll_offset, |
const gfx::Vector2dF& scroll_delta) { |
bool changed = false; |
@@ -1113,8 +1114,8 @@ void LayerImpl::SetScrollOffsetAndDelta(const gfx::Vector2d& scroll_offset, |
} |
if (scroll_offset_delegate_) { |
- scroll_offset_delegate_->SetTotalScrollOffset(scroll_offset_ + |
- scroll_delta); |
+ scroll_offset_delegate_->SetTotalScrollOffset( |
+ ScrollOffsetWithDelta(scroll_offset_, scroll_delta)); |
} else { |
scroll_delta_ = scroll_delta; |
} |
@@ -1127,8 +1128,10 @@ void LayerImpl::SetScrollOffsetAndDelta(const gfx::Vector2d& scroll_offset, |
} |
gfx::Vector2dF LayerImpl::ScrollDelta() const { |
- if (scroll_offset_delegate_) |
- return scroll_offset_delegate_->GetTotalScrollOffset() - scroll_offset_; |
+ if (scroll_offset_delegate_) { |
+ return scroll_offset_delegate_->GetTotalScrollOffset().DeltaFrom( |
+ scroll_offset_); |
+ } |
return scroll_delta_; |
} |
@@ -1136,8 +1139,8 @@ void LayerImpl::SetScrollDelta(const gfx::Vector2dF& scroll_delta) { |
SetScrollOffsetAndDelta(scroll_offset_, scroll_delta); |
} |
-gfx::Vector2dF LayerImpl::TotalScrollOffset() const { |
- return scroll_offset_ + ScrollDelta(); |
+gfx::ScrollOffset LayerImpl::TotalScrollOffset() const { |
+ return ScrollOffsetWithDelta(scroll_offset_, ScrollDelta()); |
} |
void LayerImpl::SetDoubleSided(bool double_sided) { |
@@ -1158,9 +1161,9 @@ void LayerImpl::DidBeginTracing() {} |
void LayerImpl::ReleaseResources() {} |
-gfx::Vector2d LayerImpl::MaxScrollOffset() const { |
+gfx::ScrollOffset LayerImpl::MaxScrollOffset() const { |
if (!scroll_clip_layer_ || bounds().IsEmpty()) |
- return gfx::Vector2d(); |
+ return gfx::ScrollOffset(); |
LayerImpl const* page_scale_layer = layer_tree_impl()->page_scale_layer(); |
DCHECK(this != page_scale_layer); |
@@ -1202,23 +1205,23 @@ gfx::Vector2d LayerImpl::MaxScrollOffset() const { |
scale_factor * scaled_scroll_bounds.height()); |
scaled_scroll_bounds = gfx::ToFlooredSize(scaled_scroll_bounds); |
- gfx::Vector2dF max_offset( |
+ gfx::ScrollOffset max_offset( |
scaled_scroll_bounds.width() - scroll_clip_layer_->bounds().width(), |
scaled_scroll_bounds.height() - scroll_clip_layer_->bounds().height()); |
// We need the final scroll offset to be in CSS coords. |
max_offset.Scale(1 / scale_factor); |
- max_offset.SetToMax(gfx::Vector2dF()); |
- return gfx::ToFlooredVector2d(max_offset); |
+ max_offset.SetToMax(gfx::ScrollOffset()); |
+ return max_offset; |
} |
gfx::Vector2dF LayerImpl::ClampScrollToMaxScrollOffset() { |
- gfx::Vector2dF max_offset = MaxScrollOffset(); |
- gfx::Vector2dF old_offset = TotalScrollOffset(); |
- gfx::Vector2dF clamped_offset = old_offset; |
+ gfx::ScrollOffset max_offset = MaxScrollOffset(); |
+ gfx::ScrollOffset old_offset = TotalScrollOffset(); |
+ gfx::ScrollOffset clamped_offset = old_offset; |
clamped_offset.SetToMin(max_offset); |
- clamped_offset.SetToMax(gfx::Vector2d()); |
- gfx::Vector2dF delta = clamped_offset - old_offset; |
+ clamped_offset.SetToMax(gfx::ScrollOffset()); |
+ gfx::Vector2dF delta = clamped_offset.DeltaFrom(old_offset); |
if (!delta.IsZero()) |
ScrollBy(delta); |
@@ -1245,7 +1248,7 @@ void LayerImpl::SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
// TODO(wjmaclean) This computation is nearly identical to the one in |
// MaxScrollOffset. Find some way to combine these. |
- gfx::Vector2dF current_offset; |
+ gfx::ScrollOffset current_offset; |
for (LayerImpl const* current_layer = this; |
current_layer != scrollbar_clip_layer; |
current_layer = current_layer->parent()) { |
@@ -1260,8 +1263,8 @@ void LayerImpl::SetScrollbarPosition(ScrollbarLayerImplBase* scrollbar_layer, |
DCHECK(layer_transform.IsScale2d()); |
gfx::Vector2dF layer_scale = layer_transform.Scale2d(); |
DCHECK(layer_scale.x() == layer_scale.y()); |
- gfx::Vector2dF new_offset = |
- current_layer->scroll_offset() + current_layer->ScrollDelta(); |
+ gfx::ScrollOffset new_offset = ScrollOffsetWithDelta( |
+ current_layer->scroll_offset(), current_layer->ScrollDelta()); |
new_offset.Scale(layer_scale.x(), layer_scale.y()); |
current_offset += new_offset; |
} |