Chromium Code Reviews| 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 #include <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 472 clip_id = data.clip_id(); | 472 clip_id = data.clip_id(); |
| 473 } | 473 } |
| 474 | 474 |
| 475 ScrollNodeData::ScrollNodeData() | 475 ScrollNodeData::ScrollNodeData() |
| 476 : scrollable(false), | 476 : scrollable(false), |
| 477 main_thread_scrolling_reasons( | 477 main_thread_scrolling_reasons( |
| 478 MainThreadScrollingReason::kNotScrollingOnMain), | 478 MainThreadScrollingReason::kNotScrollingOnMain), |
| 479 contains_non_fast_scrollable_region(false), | 479 contains_non_fast_scrollable_region(false), |
| 480 max_scroll_offset_affected_by_page_scale(false), | 480 max_scroll_offset_affected_by_page_scale(false), |
| 481 is_inner_viewport_scroll_layer(false), | 481 is_inner_viewport_scroll_layer(false), |
| 482 is_outer_viewport_scroll_layer(false) {} | 482 is_outer_viewport_scroll_layer(false), |
| 483 transform_id(0) {} | |
| 483 | 484 |
| 484 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { | 485 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { |
| 485 return scrollable == other.scrollable && | 486 return scrollable == other.scrollable && |
| 486 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && | 487 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && |
| 487 contains_non_fast_scrollable_region == | 488 contains_non_fast_scrollable_region == |
| 488 other.contains_non_fast_scrollable_region && | 489 other.contains_non_fast_scrollable_region && |
| 489 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && | 490 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && |
| 490 bounds == other.bounds && | 491 bounds == other.bounds && |
| 491 max_scroll_offset_affected_by_page_scale == | 492 max_scroll_offset_affected_by_page_scale == |
| 492 other.max_scroll_offset_affected_by_page_scale && | 493 other.max_scroll_offset_affected_by_page_scale && |
| 493 is_inner_viewport_scroll_layer == | 494 is_inner_viewport_scroll_layer == |
| 494 other.is_inner_viewport_scroll_layer && | 495 other.is_inner_viewport_scroll_layer && |
| 495 is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer; | 496 is_outer_viewport_scroll_layer == |
| 497 other.is_outer_viewport_scroll_layer && | |
| 498 transform_id == other.transform_id; | |
| 496 } | 499 } |
| 497 | 500 |
| 498 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { | 501 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| 499 DCHECK(!proto->has_scroll_node_data()); | 502 DCHECK(!proto->has_scroll_node_data()); |
| 500 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); | 503 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); |
| 501 data->set_scrollable(scrollable); | 504 data->set_scrollable(scrollable); |
| 502 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); | 505 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); |
| 503 data->set_contains_non_fast_scrollable_region( | 506 data->set_contains_non_fast_scrollable_region( |
| 504 contains_non_fast_scrollable_region); | 507 contains_non_fast_scrollable_region); |
| 505 SizeToProto(scroll_clip_layer_bounds, | 508 SizeToProto(scroll_clip_layer_bounds, |
| 506 data->mutable_scroll_clip_layer_bounds()); | 509 data->mutable_scroll_clip_layer_bounds()); |
| 507 SizeToProto(bounds, data->mutable_bounds()); | 510 SizeToProto(bounds, data->mutable_bounds()); |
| 508 data->set_max_scroll_offset_affected_by_page_scale( | 511 data->set_max_scroll_offset_affected_by_page_scale( |
| 509 max_scroll_offset_affected_by_page_scale); | 512 max_scroll_offset_affected_by_page_scale); |
| 510 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); | 513 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); |
| 511 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer); | 514 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer); |
| 515 data->set_transform_id(transform_id); | |
| 512 } | 516 } |
| 513 | 517 |
| 514 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { | 518 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| 515 DCHECK(proto.has_scroll_node_data()); | 519 DCHECK(proto.has_scroll_node_data()); |
| 516 const proto::ScrollNodeData& data = proto.scroll_node_data(); | 520 const proto::ScrollNodeData& data = proto.scroll_node_data(); |
| 517 | 521 |
| 518 scrollable = data.scrollable(); | 522 scrollable = data.scrollable(); |
| 519 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); | 523 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); |
| 520 contains_non_fast_scrollable_region = | 524 contains_non_fast_scrollable_region = |
| 521 data.contains_non_fast_scrollable_region(); | 525 data.contains_non_fast_scrollable_region(); |
| 522 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); | 526 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); |
| 523 bounds = ProtoToSize(data.bounds()); | 527 bounds = ProtoToSize(data.bounds()); |
| 524 max_scroll_offset_affected_by_page_scale = | 528 max_scroll_offset_affected_by_page_scale = |
| 525 data.max_scroll_offset_affected_by_page_scale(); | 529 data.max_scroll_offset_affected_by_page_scale(); |
| 526 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); | 530 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); |
| 527 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); | 531 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); |
| 532 transform_id = data.transform_id(); | |
| 528 } | 533 } |
| 529 | 534 |
| 530 void TransformTree::clear() { | 535 void TransformTree::clear() { |
| 531 PropertyTree<TransformNode>::clear(); | 536 PropertyTree<TransformNode>::clear(); |
| 532 | 537 |
| 533 nodes_affected_by_inner_viewport_bounds_delta_.clear(); | 538 nodes_affected_by_inner_viewport_bounds_delta_.clear(); |
| 534 nodes_affected_by_outer_viewport_bounds_delta_.clear(); | 539 nodes_affected_by_outer_viewport_bounds_delta_.clear(); |
| 535 } | 540 } |
| 536 | 541 |
| 537 bool TransformTree::ComputeTransform(int source_id, | 542 bool TransformTree::ComputeTransform(int source_id, |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1271 | 1276 |
| 1272 gfx::ScrollOffset max_offset( | 1277 gfx::ScrollOffset max_offset( |
| 1273 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), | 1278 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), |
| 1274 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); | 1279 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); |
| 1275 | 1280 |
| 1276 max_offset.Scale(1 / scale_factor); | 1281 max_offset.Scale(1 / scale_factor); |
| 1277 max_offset.SetToMax(gfx::ScrollOffset()); | 1282 max_offset.SetToMax(gfx::ScrollOffset()); |
| 1278 return max_offset; | 1283 return max_offset; |
| 1279 } | 1284 } |
| 1280 | 1285 |
| 1286 gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const { | |
|
jaydasika
2016/02/11 23:38:56
Question : Is Scroll Node creation reasons a subse
sunxd
2016/02/12 15:33:30
So we are only interested with ScreenSpaceTransfor
ajuma
2016/02/12 17:03:01
For TryScroll we might be ok, but I'm not sure if
| |
| 1287 const ScrollNode* scroll_node = Node(scroll_node_id); | |
| 1288 const TransformNode* transform_node = | |
| 1289 property_trees()->transform_tree.Node(scroll_node->data.transform_id); | |
| 1290 gfx::Transform screen_space_transform = transform_node->data.to_screen; | |
| 1291 if (transform_node->data.flattens_inherited_transform) | |
| 1292 screen_space_transform.FlattenTo2d(); | |
|
ajuma
2016/02/12 17:03:01
I believe this already happens when to_screen is c
| |
| 1293 return screen_space_transform; | |
| 1294 } | |
| 1295 | |
| 1281 PropertyTrees::PropertyTrees() | 1296 PropertyTrees::PropertyTrees() |
| 1282 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { | 1297 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { |
| 1283 transform_tree.SetPropertyTrees(this); | 1298 transform_tree.SetPropertyTrees(this); |
| 1284 effect_tree.SetPropertyTrees(this); | 1299 effect_tree.SetPropertyTrees(this); |
| 1285 clip_tree.SetPropertyTrees(this); | 1300 clip_tree.SetPropertyTrees(this); |
| 1286 scroll_tree.SetPropertyTrees(this); | 1301 scroll_tree.SetPropertyTrees(this); |
| 1287 } | 1302 } |
| 1288 | 1303 |
| 1289 PropertyTrees::~PropertyTrees() {} | 1304 PropertyTrees::~PropertyTrees() {} |
| 1290 | 1305 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1367 outer_viewport_container_bounds_delta_ = bounds_delta; | 1382 outer_viewport_container_bounds_delta_ = bounds_delta; |
| 1368 transform_tree.UpdateOuterViewportContainerBoundsDelta(); | 1383 transform_tree.UpdateOuterViewportContainerBoundsDelta(); |
| 1369 } | 1384 } |
| 1370 | 1385 |
| 1371 void PropertyTrees::SetInnerViewportScrollBoundsDelta( | 1386 void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
| 1372 gfx::Vector2dF bounds_delta) { | 1387 gfx::Vector2dF bounds_delta) { |
| 1373 inner_viewport_scroll_bounds_delta_ = bounds_delta; | 1388 inner_viewport_scroll_bounds_delta_ = bounds_delta; |
| 1374 } | 1389 } |
| 1375 | 1390 |
| 1376 } // namespace cc | 1391 } // namespace cc |
| OLD | NEW |