| 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 should_flatten(false), |
| 484 transform_id(0) {} |
| 483 | 485 |
| 484 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { | 486 bool ScrollNodeData::operator==(const ScrollNodeData& other) const { |
| 485 return scrollable == other.scrollable && | 487 return scrollable == other.scrollable && |
| 486 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && | 488 main_thread_scrolling_reasons == other.main_thread_scrolling_reasons && |
| 487 contains_non_fast_scrollable_region == | 489 contains_non_fast_scrollable_region == |
| 488 other.contains_non_fast_scrollable_region && | 490 other.contains_non_fast_scrollable_region && |
| 489 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && | 491 scroll_clip_layer_bounds == other.scroll_clip_layer_bounds && |
| 490 bounds == other.bounds && | 492 bounds == other.bounds && |
| 491 max_scroll_offset_affected_by_page_scale == | 493 max_scroll_offset_affected_by_page_scale == |
| 492 other.max_scroll_offset_affected_by_page_scale && | 494 other.max_scroll_offset_affected_by_page_scale && |
| 493 is_inner_viewport_scroll_layer == | 495 is_inner_viewport_scroll_layer == |
| 494 other.is_inner_viewport_scroll_layer && | 496 other.is_inner_viewport_scroll_layer && |
| 495 is_outer_viewport_scroll_layer == other.is_outer_viewport_scroll_layer; | 497 is_outer_viewport_scroll_layer == |
| 498 other.is_outer_viewport_scroll_layer && |
| 499 offset_to_transform_parent == other.offset_to_transform_parent && |
| 500 should_flatten == other.should_flatten && |
| 501 transform_id == other.transform_id; |
| 496 } | 502 } |
| 497 | 503 |
| 498 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { | 504 void ScrollNodeData::ToProtobuf(proto::TreeNode* proto) const { |
| 499 DCHECK(!proto->has_scroll_node_data()); | 505 DCHECK(!proto->has_scroll_node_data()); |
| 500 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); | 506 proto::ScrollNodeData* data = proto->mutable_scroll_node_data(); |
| 501 data->set_scrollable(scrollable); | 507 data->set_scrollable(scrollable); |
| 502 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); | 508 data->set_main_thread_scrolling_reasons(main_thread_scrolling_reasons); |
| 503 data->set_contains_non_fast_scrollable_region( | 509 data->set_contains_non_fast_scrollable_region( |
| 504 contains_non_fast_scrollable_region); | 510 contains_non_fast_scrollable_region); |
| 505 SizeToProto(scroll_clip_layer_bounds, | 511 SizeToProto(scroll_clip_layer_bounds, |
| 506 data->mutable_scroll_clip_layer_bounds()); | 512 data->mutable_scroll_clip_layer_bounds()); |
| 507 SizeToProto(bounds, data->mutable_bounds()); | 513 SizeToProto(bounds, data->mutable_bounds()); |
| 508 data->set_max_scroll_offset_affected_by_page_scale( | 514 data->set_max_scroll_offset_affected_by_page_scale( |
| 509 max_scroll_offset_affected_by_page_scale); | 515 max_scroll_offset_affected_by_page_scale); |
| 510 data->set_is_inner_viewport_scroll_layer(is_inner_viewport_scroll_layer); | 516 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); | 517 data->set_is_outer_viewport_scroll_layer(is_outer_viewport_scroll_layer); |
| 518 Vector2dFToProto(offset_to_transform_parent, |
| 519 data->mutable_offset_to_transform_parent()); |
| 520 data->set_should_flatten(should_flatten); |
| 521 data->set_transform_id(transform_id); |
| 512 } | 522 } |
| 513 | 523 |
| 514 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { | 524 void ScrollNodeData::FromProtobuf(const proto::TreeNode& proto) { |
| 515 DCHECK(proto.has_scroll_node_data()); | 525 DCHECK(proto.has_scroll_node_data()); |
| 516 const proto::ScrollNodeData& data = proto.scroll_node_data(); | 526 const proto::ScrollNodeData& data = proto.scroll_node_data(); |
| 517 | 527 |
| 518 scrollable = data.scrollable(); | 528 scrollable = data.scrollable(); |
| 519 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); | 529 main_thread_scrolling_reasons = data.main_thread_scrolling_reasons(); |
| 520 contains_non_fast_scrollable_region = | 530 contains_non_fast_scrollable_region = |
| 521 data.contains_non_fast_scrollable_region(); | 531 data.contains_non_fast_scrollable_region(); |
| 522 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); | 532 scroll_clip_layer_bounds = ProtoToSize(data.scroll_clip_layer_bounds()); |
| 523 bounds = ProtoToSize(data.bounds()); | 533 bounds = ProtoToSize(data.bounds()); |
| 524 max_scroll_offset_affected_by_page_scale = | 534 max_scroll_offset_affected_by_page_scale = |
| 525 data.max_scroll_offset_affected_by_page_scale(); | 535 data.max_scroll_offset_affected_by_page_scale(); |
| 526 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); | 536 is_inner_viewport_scroll_layer = data.is_inner_viewport_scroll_layer(); |
| 527 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); | 537 is_outer_viewport_scroll_layer = data.is_outer_viewport_scroll_layer(); |
| 538 offset_to_transform_parent = |
| 539 ProtoToVector2dF(data.offset_to_transform_parent()); |
| 540 should_flatten = data.should_flatten(); |
| 541 transform_id = data.transform_id(); |
| 528 } | 542 } |
| 529 | 543 |
| 530 void TransformTree::clear() { | 544 void TransformTree::clear() { |
| 531 PropertyTree<TransformNode>::clear(); | 545 PropertyTree<TransformNode>::clear(); |
| 532 | 546 |
| 533 nodes_affected_by_inner_viewport_bounds_delta_.clear(); | 547 nodes_affected_by_inner_viewport_bounds_delta_.clear(); |
| 534 nodes_affected_by_outer_viewport_bounds_delta_.clear(); | 548 nodes_affected_by_outer_viewport_bounds_delta_.clear(); |
| 535 } | 549 } |
| 536 | 550 |
| 537 bool TransformTree::ComputeTransform(int source_id, | 551 bool TransformTree::ComputeTransform(int source_id, |
| (...skipping 733 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1271 | 1285 |
| 1272 gfx::ScrollOffset max_offset( | 1286 gfx::ScrollOffset max_offset( |
| 1273 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), | 1287 scaled_scroll_bounds.width() - scroll_clip_layer_bounds.width(), |
| 1274 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); | 1288 scaled_scroll_bounds.height() - scroll_clip_layer_bounds.height()); |
| 1275 | 1289 |
| 1276 max_offset.Scale(1 / scale_factor); | 1290 max_offset.Scale(1 / scale_factor); |
| 1277 max_offset.SetToMax(gfx::ScrollOffset()); | 1291 max_offset.SetToMax(gfx::ScrollOffset()); |
| 1278 return max_offset; | 1292 return max_offset; |
| 1279 } | 1293 } |
| 1280 | 1294 |
| 1295 gfx::Transform ScrollTree::ScreenSpaceTransform(int scroll_node_id) const { |
| 1296 const ScrollNode* scroll_node = Node(scroll_node_id); |
| 1297 const TransformNode* transform_node = |
| 1298 property_trees()->transform_tree.Node(scroll_node->data.transform_id); |
| 1299 gfx::Transform screen_space_transform( |
| 1300 1, 0, 0, 1, scroll_node->data.offset_to_transform_parent.x(), |
| 1301 scroll_node->data.offset_to_transform_parent.y()); |
| 1302 screen_space_transform.ConcatTransform(transform_node->data.to_screen); |
| 1303 if (scroll_node->data.should_flatten) |
| 1304 screen_space_transform.FlattenTo2d(); |
| 1305 return screen_space_transform; |
| 1306 } |
| 1307 |
| 1281 PropertyTrees::PropertyTrees() | 1308 PropertyTrees::PropertyTrees() |
| 1282 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { | 1309 : needs_rebuild(true), non_root_surfaces_enabled(true), sequence_number(0) { |
| 1283 transform_tree.SetPropertyTrees(this); | 1310 transform_tree.SetPropertyTrees(this); |
| 1284 effect_tree.SetPropertyTrees(this); | 1311 effect_tree.SetPropertyTrees(this); |
| 1285 clip_tree.SetPropertyTrees(this); | 1312 clip_tree.SetPropertyTrees(this); |
| 1286 scroll_tree.SetPropertyTrees(this); | 1313 scroll_tree.SetPropertyTrees(this); |
| 1287 } | 1314 } |
| 1288 | 1315 |
| 1289 PropertyTrees::~PropertyTrees() {} | 1316 PropertyTrees::~PropertyTrees() {} |
| 1290 | 1317 |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1367 outer_viewport_container_bounds_delta_ = bounds_delta; | 1394 outer_viewport_container_bounds_delta_ = bounds_delta; |
| 1368 transform_tree.UpdateOuterViewportContainerBoundsDelta(); | 1395 transform_tree.UpdateOuterViewportContainerBoundsDelta(); |
| 1369 } | 1396 } |
| 1370 | 1397 |
| 1371 void PropertyTrees::SetInnerViewportScrollBoundsDelta( | 1398 void PropertyTrees::SetInnerViewportScrollBoundsDelta( |
| 1372 gfx::Vector2dF bounds_delta) { | 1399 gfx::Vector2dF bounds_delta) { |
| 1373 inner_viewport_scroll_bounds_delta_ = bounds_delta; | 1400 inner_viewport_scroll_bounds_delta_ = bounds_delta; |
| 1374 } | 1401 } |
| 1375 | 1402 |
| 1376 } // namespace cc | 1403 } // namespace cc |
| OLD | NEW |