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 |