| 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/tab_layer.h" | 5 #include "chrome/browser/android/compositor/layer/tab_layer.h" |
| 6 | 6 |
| 7 #include "base/i18n/rtl.h" | 7 #include "base/i18n/rtl.h" |
| 8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
| 9 #include "cc/layers/layer.h" | 9 #include "cc/layers/layer.h" |
| 10 #include "cc/layers/layer_collections.h" | 10 #include "cc/layers/layer_collections.h" |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 bool inset_border) { | 146 bool inset_border) { |
| 147 if (alpha <= 0) { | 147 if (alpha <= 0) { |
| 148 layer_->SetHideLayerAndSubtree(true); | 148 layer_->SetHideLayerAndSubtree(true); |
| 149 return; | 149 return; |
| 150 } | 150 } |
| 151 | 151 |
| 152 layer_->SetHideLayerAndSubtree(false); | 152 layer_->SetHideLayerAndSubtree(false); |
| 153 | 153 |
| 154 // Grab required resources | 154 // Grab required resources |
| 155 ui::ResourceManager::Resource* border_resource = | 155 ui::ResourceManager::Resource* border_resource = |
| 156 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 156 resource_manager_->GetStaticResourceWithTint(border_resource_id, |
| 157 border_resource_id); | 157 toolbar_background_color); |
| 158 ui::ResourceManager::Resource* border_inner_shadow_resource = | 158 ui::ResourceManager::Resource* border_inner_shadow_resource = |
| 159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 160 border_inner_shadow_resource_id); | 160 border_inner_shadow_resource_id); |
| 161 ui::ResourceManager::Resource* shadow_resource = | 161 ui::ResourceManager::Resource* shadow_resource = |
| 162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 163 shadow_resource_id); | 163 shadow_resource_id); |
| 164 ui::ResourceManager::Resource* contour_resource = | 164 ui::ResourceManager::Resource* contour_resource = |
| 165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 166 contour_resource_id); | 166 contour_resource_id); |
| 167 ui::ResourceManager::Resource* close_btn_resource = | 167 ui::ResourceManager::Resource* close_btn_resource = |
| 168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 168 resource_manager_->GetStaticResourceWithTint(close_button_resource_id, |
| 169 close_button_resource_id); | 169 close_button_color); |
| 170 ui::ResourceManager::Resource* back_logo_resource = nullptr; | 170 ui::ResourceManager::Resource* back_logo_resource = nullptr; |
| 171 | 171 |
| 172 DecorationTitle* title_layer = nullptr; | 172 DecorationTitle* title_layer = nullptr; |
| 173 | 173 |
| 174 //---------------------------------------------------------------------------- | 174 //---------------------------------------------------------------------------- |
| 175 // Handle Border Scaling (Upscale/Downscale everything until final scaling) | 175 // Handle Border Scaling (Upscale/Downscale everything until final scaling) |
| 176 //---------------------------------------------------------------------------- | 176 //---------------------------------------------------------------------------- |
| 177 width /= border_scale; | 177 width /= border_scale; |
| 178 height /= border_scale; | 178 height /= border_scale; |
| 179 shadow_x /= border_scale; | 179 shadow_x /= border_scale; |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 contour_shadow_->SetBounds(contour_size); | 471 contour_shadow_->SetBounds(contour_size); |
| 472 contour_shadow_->SetOpacity(contour_alpha); | 472 contour_shadow_->SetOpacity(contour_alpha); |
| 473 } | 473 } |
| 474 | 474 |
| 475 front_border_->SetHideLayerAndSubtree(!border_visible); | 475 front_border_->SetHideLayerAndSubtree(!border_visible); |
| 476 if (border_visible) { | 476 if (border_visible) { |
| 477 front_border_->SetPosition(border_position); | 477 front_border_->SetPosition(border_position); |
| 478 front_border_->SetBounds(border_size); | 478 front_border_->SetBounds(border_size); |
| 479 front_border_->SetOpacity(border_alpha); | 479 front_border_->SetOpacity(border_alpha); |
| 480 front_border_->SetNearestNeighbor(toolbar_visible); | 480 front_border_->SetNearestNeighbor(toolbar_visible); |
| 481 | |
| 482 if (toolbar_background_color != toolbar_background_color_) { | |
| 483 toolbar_background_color_ = toolbar_background_color; | |
| 484 front_border_->SetFilters( | |
| 485 *createSolidColorFilter(toolbar_background_color).get()); | |
| 486 } | |
| 487 } | 481 } |
| 488 | 482 |
| 489 front_border_inner_shadow_->SetHideLayerAndSubtree( | 483 front_border_inner_shadow_->SetHideLayerAndSubtree( |
| 490 !border_inner_shadow_visible); | 484 !border_inner_shadow_visible); |
| 491 if (border_inner_shadow_visible) { | 485 if (border_inner_shadow_visible) { |
| 492 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); | 486 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); |
| 493 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); | 487 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); |
| 494 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); | 488 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); |
| 495 } | 489 } |
| 496 | 490 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 515 title_position.y() + | 509 title_position.y() + |
| 516 (title_size.height() - title_layer->size().height()) / 2.f); | 510 (title_size.height() - title_layer->size().height()) / 2.f); |
| 517 | 511 |
| 518 title_->SetPosition(vertically_centered_position); | 512 title_->SetPosition(vertically_centered_position); |
| 519 title_layer->setBounds(title_size); | 513 title_layer->setBounds(title_size); |
| 520 title_layer->setOpacity(border_alpha); | 514 title_layer->setOpacity(border_alpha); |
| 521 } | 515 } |
| 522 | 516 |
| 523 close_button_->SetHideLayerAndSubtree(!close_btn_visible); | 517 close_button_->SetHideLayerAndSubtree(!close_btn_visible); |
| 524 if (close_btn_visible) { | 518 if (close_btn_visible) { |
| 525 | |
| 526 if (close_button_color != close_button_color_) { | |
| 527 close_button_color_ = close_button_color; | |
| 528 close_button_->SetFilters( | |
| 529 *createSolidColorFilter(close_button_color).get()); | |
| 530 } | |
| 531 | |
| 532 close_button_->SetPosition(close_button_position); | 519 close_button_->SetPosition(close_button_position); |
| 533 close_button_->SetBounds(close_button_size); | 520 close_button_->SetBounds(close_button_size); |
| 534 // Non-linear alpha looks better. | 521 // Non-linear alpha looks better. |
| 535 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); | 522 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); |
| 536 } | 523 } |
| 537 | 524 |
| 538 if (content_visible && attach_content) { | 525 if (content_visible && attach_content) { |
| 539 { | 526 { |
| 540 // content_ and back_logo_ Transforms | 527 // content_ and back_logo_ Transforms |
| 541 gfx::Transform transform; | 528 gfx::Transform transform; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 // than 1. | 608 // than 1. |
| 622 if (brightness != brightness_) { | 609 if (brightness != brightness_) { |
| 623 brightness_ = brightness; | 610 brightness_ = brightness; |
| 624 cc::FilterOperations filters; | 611 cc::FilterOperations filters; |
| 625 if (brightness_ < 1.f) | 612 if (brightness_ < 1.f) |
| 626 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); | 613 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); |
| 627 layer_->SetFilters(filters); | 614 layer_->SetFilters(filters); |
| 628 } | 615 } |
| 629 } | 616 } |
| 630 | 617 |
| 631 std::unique_ptr<cc::FilterOperations> TabLayer::createSolidColorFilter( | |
| 632 int color) { | |
| 633 std::unique_ptr<cc::FilterOperations> filters = | |
| 634 base::WrapUnique(new cc::FilterOperations()); | |
| 635 SkScalar colorMatrix[] = { | |
| 636 SkColorGetR(color) / 255.0f, 0, 0, 0, 0, | |
| 637 0, SkColorGetG(color) / 255.0f, 0, 0, 0, | |
| 638 0, 0, SkColorGetB(color) / 255.0f, 0, 0, | |
| 639 0, 0, 0, 1, 0, | |
| 640 }; | |
| 641 filters->Append(cc::FilterOperation::CreateColorMatrixFilter(colorMatrix)); | |
| 642 return filters; | |
| 643 } | |
| 644 | |
| 645 scoped_refptr<cc::Layer> TabLayer::layer() { | 618 scoped_refptr<cc::Layer> TabLayer::layer() { |
| 646 return layer_; | 619 return layer_; |
| 647 } | 620 } |
| 648 | 621 |
| 649 TabLayer::TabLayer(bool incognito, | 622 TabLayer::TabLayer(bool incognito, |
| 650 ui::ResourceManager* resource_manager, | 623 ui::ResourceManager* resource_manager, |
| 651 LayerTitleCache* layer_title_cache, | 624 LayerTitleCache* layer_title_cache, |
| 652 TabContentManager* tab_content_manager) | 625 TabContentManager* tab_content_manager) |
| 653 : incognito_(incognito), | 626 : incognito_(incognito), |
| 654 toolbar_background_color_(0), | |
| 655 close_button_color_(0), | |
| 656 resource_manager_(resource_manager), | 627 resource_manager_(resource_manager), |
| 657 layer_title_cache_(layer_title_cache), | 628 layer_title_cache_(layer_title_cache), |
| 658 layer_(cc::Layer::Create()), | 629 layer_(cc::Layer::Create()), |
| 659 toolbar_layer_(ToolbarLayer::Create(resource_manager)), | 630 toolbar_layer_(ToolbarLayer::Create(resource_manager)), |
| 660 title_(cc::Layer::Create()), | 631 title_(cc::Layer::Create()), |
| 661 content_(ContentLayer::Create(tab_content_manager)), | 632 content_(ContentLayer::Create(tab_content_manager)), |
| 662 side_padding_(cc::SolidColorLayer::Create()), | 633 side_padding_(cc::SolidColorLayer::Create()), |
| 663 bottom_padding_(cc::SolidColorLayer::Create()), | 634 bottom_padding_(cc::SolidColorLayer::Create()), |
| 664 close_button_(cc::UIResourceLayer::Create()), | 635 close_button_(cc::UIResourceLayer::Create()), |
| 665 front_border_(cc::NinePatchLayer::Create()), | 636 front_border_(cc::NinePatchLayer::Create()), |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 title_->AddChild(layer); | 678 title_->AddChild(layer); |
| 708 } | 679 } |
| 709 } | 680 } |
| 710 | 681 |
| 711 if (title) | 682 if (title) |
| 712 title->SetUIResourceIds(); | 683 title->SetUIResourceIds(); |
| 713 } | 684 } |
| 714 | 685 |
| 715 } // namespace android | 686 } // namespace android |
| 716 } // namespace chrome | 687 } // namespace chrome |
| OLD | NEW |