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 "chrome/browser/android/compositor/layer/contextual_search_layer.h" | 5 #include "chrome/browser/android/compositor/layer/contextual_search_layer.h" |
| 6 | 6 |
| 7 #include "cc/layers/layer.h" | 7 #include "cc/layers/layer.h" |
| 8 #include "cc/layers/nine_patch_layer.h" | 8 #include "cc/layers/nine_patch_layer.h" |
| 9 #include "cc/layers/solid_color_layer.h" | 9 #include "cc/layers/solid_color_layer.h" |
| 10 #include "cc/layers/ui_resource_layer.h" | 10 #include "cc/layers/ui_resource_layer.h" |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 31 | 31 |
| 32 namespace chrome { | 32 namespace chrome { |
| 33 namespace android { | 33 namespace android { |
| 34 | 34 |
| 35 // static | 35 // static |
| 36 scoped_refptr<ContextualSearchLayer> ContextualSearchLayer::Create( | 36 scoped_refptr<ContextualSearchLayer> ContextualSearchLayer::Create( |
| 37 ui::ResourceManager* resource_manager) { | 37 ui::ResourceManager* resource_manager) { |
| 38 return make_scoped_refptr(new ContextualSearchLayer(resource_manager)); | 38 return make_scoped_refptr(new ContextualSearchLayer(resource_manager)); |
| 39 } | 39 } |
| 40 | 40 |
| 41 scoped_refptr<cc::Layer> ContextualSearchLayer::GetIconLayer() { | |
| 42 scoped_refptr<cc::Layer> icon = nullptr; | |
| 43 | |
| 44 // Thumbnail. | |
| 45 if (thumbnail_visible_) { | |
| 46 if (thumbnail_layer_->parent() != layer_) | |
| 47 layer_->AddChild(thumbnail_layer_); | |
| 48 | |
| 49 icon = thumbnail_layer_; | |
| 50 } else if (thumbnail_layer_->parent()) { | |
| 51 thumbnail_layer_->RemoveFromParent(); | |
| 52 } | |
| 53 | |
| 54 // Search Provider Icon Sprite (Animated). | |
| 55 if (search_provider_icon_sprite_visible_) { | |
| 56 if (search_provider_icon_sprite_->layer()->parent() != layer_) | |
| 57 layer_->AddChild(search_provider_icon_sprite_->layer().get()); | |
| 58 | |
| 59 search_provider_icon_sprite_->DrawSpriteFrame( | |
| 60 resource_manager_, | |
| 61 panel_icon_resource_id_, | |
| 62 search_provider_icon_sprite_metadata_resource_id_, | |
| 63 search_provider_icon_sprite_completion_percentage_); | |
| 64 icon = search_provider_icon_sprite_->layer(); | |
| 65 } else if (search_provider_icon_sprite_->layer().get() && | |
| 66 search_provider_icon_sprite_->layer()->parent()) { | |
| 67 search_provider_icon_sprite_->layer()->RemoveFromParent(); | |
| 68 } | |
| 69 | |
| 70 return icon; | |
| 71 } | |
| 72 | |
| 73 void ContextualSearchLayer::SetProperties( | 41 void ContextualSearchLayer::SetProperties( |
| 74 int panel_shadow_resource_id, | 42 int panel_shadow_resource_id, |
| 75 int search_context_resource_id, | 43 int search_context_resource_id, |
| 76 int search_term_resource_id, | 44 int search_term_resource_id, |
| 77 int search_caption_resource_id, | 45 int search_caption_resource_id, |
| 78 int search_bar_shadow_resource_id, | 46 int search_bar_shadow_resource_id, |
| 79 int panel_icon_resource_id, | 47 int panel_icon_resource_id, |
| 80 int search_provider_icon_sprite_metadata_resource_id, | 48 int search_provider_icon_sprite_metadata_resource_id, |
| 81 int arrow_up_resource_id, | 49 int arrow_up_resource_id, |
| 82 int close_icon_resource_id, | 50 int close_icon_resource_id, |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 106 float search_term_opacity, | 74 float search_term_opacity, |
| 107 float search_caption_animation_percentage, | 75 float search_caption_animation_percentage, |
| 108 bool search_caption_visible, | 76 bool search_caption_visible, |
| 109 bool search_bar_border_visible, | 77 bool search_bar_border_visible, |
| 110 float search_bar_border_height, | 78 float search_bar_border_height, |
| 111 bool search_bar_shadow_visible, | 79 bool search_bar_shadow_visible, |
| 112 float search_bar_shadow_opacity, | 80 float search_bar_shadow_opacity, |
| 113 bool search_provider_icon_sprite_visible, | 81 bool search_provider_icon_sprite_visible, |
| 114 float search_provider_icon_sprite_completion_percentage, | 82 float search_provider_icon_sprite_completion_percentage, |
| 115 bool thumbnail_visible, | 83 bool thumbnail_visible, |
| 84 float thumbnail_visibility_percentage, | |
| 116 int thumbnail_size, | 85 int thumbnail_size, |
| 117 float arrow_icon_opacity, | 86 float arrow_icon_opacity, |
| 118 float arrow_icon_rotation, | 87 float arrow_icon_rotation, |
| 119 float close_icon_opacity, | 88 float close_icon_opacity, |
| 120 bool progress_bar_visible, | 89 bool progress_bar_visible, |
| 121 float progress_bar_height, | 90 float progress_bar_height, |
| 122 float progress_bar_opacity, | 91 float progress_bar_opacity, |
| 123 int progress_bar_completion) { | 92 int progress_bar_completion) { |
| 124 | 93 |
| 125 search_provider_icon_sprite_visible_ = search_provider_icon_sprite_visible; | |
| 126 search_provider_icon_sprite_metadata_resource_id_ = | |
| 127 search_provider_icon_sprite_metadata_resource_id; | |
| 128 search_provider_icon_sprite_completion_percentage_ = | |
| 129 search_provider_icon_sprite_completion_percentage; | |
| 130 | |
| 131 thumbnail_visible_ = thumbnail_visible; | |
| 132 thumbnail_size_ = thumbnail_size; | |
| 133 | |
| 134 // Grabs the dynamic Search Context resource. | 94 // Grabs the dynamic Search Context resource. |
| 135 ui::ResourceManager::Resource* search_context_resource = | 95 ui::ResourceManager::Resource* search_context_resource = |
| 136 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, | 96 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_DYNAMIC, |
| 137 search_context_resource_id); | 97 search_context_resource_id); |
| 138 | 98 |
| 139 // Round values to avoid pixel gap between layers. | 99 // Round values to avoid pixel gap between layers. |
| 140 search_bar_height = floor(search_bar_height); | 100 search_bar_height = floor(search_bar_height); |
| 141 | 101 |
| 142 float search_bar_top = search_peek_promo_height; | 102 float search_bar_top = search_peek_promo_height; |
| 143 float search_bar_bottom = search_bar_top + search_bar_height; | 103 float search_bar_bottom = search_bar_top + search_bar_height; |
| (...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 462 progress_bar_->SetPosition(gfx::PointF(0.f, progress_bar_y)); | 422 progress_bar_->SetPosition(gfx::PointF(0.f, progress_bar_y)); |
| 463 progress_bar_->SetOpacity(progress_bar_opacity); | 423 progress_bar_->SetOpacity(progress_bar_opacity); |
| 464 } else { | 424 } else { |
| 465 // Removes Progress Bar and its Background from the Layer Tree. | 425 // Removes Progress Bar and its Background from the Layer Tree. |
| 466 if (progress_bar_background_.get() && progress_bar_background_->parent()) | 426 if (progress_bar_background_.get() && progress_bar_background_->parent()) |
| 467 progress_bar_background_->RemoveFromParent(); | 427 progress_bar_background_->RemoveFromParent(); |
| 468 | 428 |
| 469 if (progress_bar_.get() && progress_bar_->parent()) | 429 if (progress_bar_.get() && progress_bar_->parent()) |
| 470 progress_bar_->RemoveFromParent(); | 430 progress_bar_->RemoveFromParent(); |
| 471 } | 431 } |
| 432 | |
| 433 // --------------------------------------------------------------------------- | |
| 434 // Icon Layer | |
| 435 // --------------------------------------------------------------------------- | |
| 436 thumbnail_size_ = thumbnail_size; | |
| 437 SetupIconLayer(search_provider_icon_sprite_visible, | |
| 438 search_provider_icon_sprite_metadata_resource_id, | |
| 439 search_provider_icon_sprite_completion_percentage, | |
| 440 thumbnail_visible, | |
| 441 thumbnail_visibility_percentage); | |
| 442 } | |
| 443 | |
| 444 scoped_refptr<cc::Layer> ContextualSearchLayer::GetIconLayer() { | |
| 445 return icon_layer_; | |
| 446 } | |
| 447 | |
| 448 void ContextualSearchLayer::SetupIconLayer( | |
| 449 bool search_provider_icon_sprite_visible, | |
| 450 int search_provider_icon_sprite_metadata_resource_id, | |
| 451 float search_provider_icon_sprite_completion_percentage, | |
| 452 bool thumbnail_visible, | |
| 453 float thumbnail_visibility_percentage) { | |
| 454 icon_layer_->SetBounds(gfx::Size(thumbnail_size_, thumbnail_size_)); | |
| 455 icon_layer_->SetMasksToBounds(true); | |
| 456 | |
| 457 // Thumbnail | |
| 458 if (thumbnail_visible) { | |
| 459 if (thumbnail_layer_->parent() != icon_layer_) | |
| 460 icon_layer_->AddChild(thumbnail_layer_); | |
| 461 | |
| 462 thumbnail_layer_->SetOpacity(thumbnail_visibility_percentage); | |
| 463 | |
| 464 float thumbnail_y_offset = | |
| 465 thumbnail_size_ * (1.f - thumbnail_visibility_percentage); | |
|
Donn Denman
2016/09/23 04:05:23
Why is the thumbnail_size_ involved here?
Donn Denman
2016/09/23 04:08:21
Elaborating my question ... maybe the available sp
Theresa
2016/09/23 04:39:57
Good question.
The thumbnail and 'G' icon slide t
Theresa
2016/09/23 15:45:46
Done. I also added some comments so hopefully this
| |
| 466 thumbnail_layer_->SetPosition(gfx::PointF(0.f, thumbnail_y_offset)); | |
| 467 } else if (thumbnail_layer_->parent()) { | |
| 468 thumbnail_layer_->RemoveFromParent(); | |
| 469 } | |
| 470 | |
| 471 // Search Provider Icon Sprite | |
| 472 if (search_provider_icon_sprite_visible) { | |
| 473 if (search_provider_icon_sprite_->layer()->parent() != icon_layer_) | |
| 474 icon_layer_->AddChild(search_provider_icon_sprite_->layer().get()); | |
| 475 | |
| 476 search_provider_icon_sprite_->DrawSpriteFrame( | |
| 477 resource_manager_, | |
| 478 panel_icon_resource_id_, | |
| 479 search_provider_icon_sprite_metadata_resource_id, | |
| 480 search_provider_icon_sprite_completion_percentage); | |
| 481 | |
| 482 if (thumbnail_visibility_percentage > 0.f) { | |
| 483 search_provider_icon_sprite_->layer()->SetOpacity( | |
| 484 1.f - thumbnail_visibility_percentage); | |
| 485 | |
| 486 float icon_y_offset = | |
| 487 -(thumbnail_size_ * thumbnail_visibility_percentage); | |
| 488 search_provider_icon_sprite_->layer()->SetPosition( | |
| 489 gfx::PointF(0.f, icon_y_offset)); | |
| 490 } else { | |
|
Donn Denman
2016/09/23 04:05:23
Nit suggestion: I would think that this else claus
Theresa
2016/09/23 15:45:46
Done.
| |
| 491 search_provider_icon_sprite_->layer()->SetOpacity(1.f); | |
| 492 search_provider_icon_sprite_->layer()->SetPosition( | |
| 493 gfx::PointF(0.f, 0.f)); | |
| 494 } | |
| 495 | |
| 496 } else if (search_provider_icon_sprite_->layer().get() && | |
| 497 search_provider_icon_sprite_->layer()->parent()) { | |
| 498 search_provider_icon_sprite_->layer()->RemoveFromParent(); | |
| 499 } | |
| 472 } | 500 } |
| 473 | 501 |
| 474 void ContextualSearchLayer::SetThumbnail(const SkBitmap* thumbnail) { | 502 void ContextualSearchLayer::SetThumbnail(const SkBitmap* thumbnail) { |
| 475 // Determine the scaled thumbnail width and height. If both the height and | 503 // Determine the scaled thumbnail width and height. If both the height and |
| 476 // width of |thumbnail| are larger than |thumbnail_size_|, the thumbnail will | 504 // width of |thumbnail| are larger than |thumbnail_size_|, the thumbnail will |
| 477 // be scaled down by a call to Layer::SetBounds() below. | 505 // be scaled down by a call to Layer::SetBounds() below. |
| 478 int min_dimension = std::min(thumbnail->width(), thumbnail->height()); | 506 int min_dimension = std::min(thumbnail->width(), thumbnail->height()); |
| 479 int scaled_thumbnail_width = thumbnail->width(); | 507 int scaled_thumbnail_width = thumbnail->width(); |
| 480 int scaled_thumbnail_height = thumbnail->height(); | 508 int scaled_thumbnail_height = thumbnail->height(); |
| 481 if (min_dimension > thumbnail_size_) { | 509 if (min_dimension > thumbnail_size_) { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 543 thumbnail_layer_->SetBounds(gfx::Size(layer_width, layer_height)); | 571 thumbnail_layer_->SetBounds(gfx::Size(layer_width, layer_height)); |
| 544 thumbnail_layer_->SetPosition(gfx::PointF(x_pos, y_pos)); | 572 thumbnail_layer_->SetPosition(gfx::PointF(x_pos, y_pos)); |
| 545 thumbnail_layer_->SetUV(gfx::PointF(top_left_x, top_left_y), | 573 thumbnail_layer_->SetUV(gfx::PointF(top_left_x, top_left_y), |
| 546 gfx::PointF(bottom_right_x, bottom_right_y)); | 574 gfx::PointF(bottom_right_x, bottom_right_y)); |
| 547 } | 575 } |
| 548 | 576 |
| 549 ContextualSearchLayer::ContextualSearchLayer( | 577 ContextualSearchLayer::ContextualSearchLayer( |
| 550 ui::ResourceManager* resource_manager) | 578 ui::ResourceManager* resource_manager) |
| 551 : OverlayPanelLayer(resource_manager), | 579 : OverlayPanelLayer(resource_manager), |
| 552 search_context_(cc::UIResourceLayer::Create()), | 580 search_context_(cc::UIResourceLayer::Create()), |
| 581 icon_layer_(cc::Layer::Create()), | |
| 553 search_provider_icon_sprite_(CrushedSpriteLayer::Create()), | 582 search_provider_icon_sprite_(CrushedSpriteLayer::Create()), |
| 554 thumbnail_layer_(cc::UIResourceLayer::Create()), | 583 thumbnail_layer_(cc::UIResourceLayer::Create()), |
| 555 arrow_icon_(cc::UIResourceLayer::Create()), | 584 arrow_icon_(cc::UIResourceLayer::Create()), |
| 556 search_promo_(cc::UIResourceLayer::Create()), | 585 search_promo_(cc::UIResourceLayer::Create()), |
| 557 search_promo_container_(cc::SolidColorLayer::Create()), | 586 search_promo_container_(cc::SolidColorLayer::Create()), |
| 558 peek_promo_container_(cc::SolidColorLayer::Create()), | 587 peek_promo_container_(cc::SolidColorLayer::Create()), |
| 559 peek_promo_ripple_(cc::NinePatchLayer::Create()), | 588 peek_promo_ripple_(cc::NinePatchLayer::Create()), |
| 560 peek_promo_text_(cc::UIResourceLayer::Create()), | 589 peek_promo_text_(cc::UIResourceLayer::Create()), |
| 561 progress_bar_(cc::NinePatchLayer::Create()), | 590 progress_bar_(cc::NinePatchLayer::Create()), |
| 562 progress_bar_background_(cc::NinePatchLayer::Create()), | 591 progress_bar_background_(cc::NinePatchLayer::Create()), |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 588 search_promo_->SetIsDrawable(true); | 617 search_promo_->SetIsDrawable(true); |
| 589 | 618 |
| 590 // Progress Bar Background | 619 // Progress Bar Background |
| 591 progress_bar_background_->SetIsDrawable(true); | 620 progress_bar_background_->SetIsDrawable(true); |
| 592 progress_bar_background_->SetFillCenter(true); | 621 progress_bar_background_->SetFillCenter(true); |
| 593 | 622 |
| 594 // Progress Bar | 623 // Progress Bar |
| 595 progress_bar_->SetIsDrawable(true); | 624 progress_bar_->SetIsDrawable(true); |
| 596 progress_bar_->SetFillCenter(true); | 625 progress_bar_->SetFillCenter(true); |
| 597 | 626 |
| 627 // Icon | |
| 628 icon_layer_->SetIsDrawable(true); | |
| 629 layer_->AddChild(icon_layer_); | |
| 630 | |
| 598 // Thumbnail | 631 // Thumbnail |
| 599 thumbnail_layer_->SetIsDrawable(true); | 632 thumbnail_layer_->SetIsDrawable(true); |
| 600 } | 633 } |
| 601 | 634 |
| 602 ContextualSearchLayer::~ContextualSearchLayer() { | 635 ContextualSearchLayer::~ContextualSearchLayer() { |
| 603 } | 636 } |
| 604 | 637 |
| 605 } // namespace android | 638 } // namespace android |
| 606 } // namespace chrome | 639 } // namespace chrome |
| OLD | NEW |