| 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 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 float brightness, | 127 float brightness, |
| 128 float close_btn_width, | 128 float close_btn_width, |
| 129 float static_to_view_blend, | 129 float static_to_view_blend, |
| 130 float content_width, | 130 float content_width, |
| 131 float content_height, | 131 float content_height, |
| 132 float view_width, | 132 float view_width, |
| 133 float view_height, | 133 float view_height, |
| 134 bool show_toolbar, | 134 bool show_toolbar, |
| 135 int default_theme_color, | 135 int default_theme_color, |
| 136 int toolbar_background_color, | 136 int toolbar_background_color, |
| 137 int default_close_button_color, |
| 137 int close_button_color, | 138 int close_button_color, |
| 138 bool anonymize_toolbar, | 139 bool anonymize_toolbar, |
| 139 int toolbar_textbox_resource_id, | 140 int toolbar_textbox_resource_id, |
| 140 int toolbar_textbox_background_color, | 141 int toolbar_textbox_background_color, |
| 141 float toolbar_textbox_alpha, | 142 float toolbar_textbox_alpha, |
| 142 float toolbar_alpha, | 143 float toolbar_alpha, |
| 143 float toolbar_y_offset, | 144 float toolbar_y_offset, |
| 144 float side_border_scale, | 145 float side_border_scale, |
| 145 bool attach_content, | 146 bool attach_content, |
| 146 bool inset_border) { | 147 bool inset_border) { |
| 147 if (alpha <= 0) { | 148 if (alpha <= 0) { |
| 148 layer_->SetHideLayerAndSubtree(true); | 149 layer_->SetHideLayerAndSubtree(true); |
| 149 return; | 150 return; |
| 150 } | 151 } |
| 151 | 152 |
| 152 layer_->SetHideLayerAndSubtree(false); | 153 layer_->SetHideLayerAndSubtree(false); |
| 153 | 154 |
| 154 // Grab required resources | 155 // Grab required resources |
| 155 ui::ResourceManager::Resource* border_resource = | 156 ui::ResourceManager::Resource* border_resource = |
| 156 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 157 resource_manager_->GetStaticResourceWithTint(border_resource_id, |
| 157 border_resource_id); | 158 toolbar_background_color, |
| 159 default_theme_color); |
| 158 ui::ResourceManager::Resource* border_inner_shadow_resource = | 160 ui::ResourceManager::Resource* border_inner_shadow_resource = |
| 159 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 161 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 160 border_inner_shadow_resource_id); | 162 border_inner_shadow_resource_id); |
| 161 ui::ResourceManager::Resource* shadow_resource = | 163 ui::ResourceManager::Resource* shadow_resource = |
| 162 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 164 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 163 shadow_resource_id); | 165 shadow_resource_id); |
| 164 ui::ResourceManager::Resource* contour_resource = | 166 ui::ResourceManager::Resource* contour_resource = |
| 165 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 167 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| 166 contour_resource_id); | 168 contour_resource_id); |
| 167 ui::ResourceManager::Resource* close_btn_resource = | 169 ui::ResourceManager::Resource* close_btn_resource = |
| 168 resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, | 170 resource_manager_->GetStaticResourceWithTint(close_button_resource_id, |
| 169 close_button_resource_id); | 171 close_button_color, |
| 172 default_close_button_color); |
| 170 ui::ResourceManager::Resource* back_logo_resource = nullptr; | 173 ui::ResourceManager::Resource* back_logo_resource = nullptr; |
| 171 | 174 |
| 172 DecorationTitle* title_layer = nullptr; | 175 DecorationTitle* title_layer = nullptr; |
| 173 | 176 |
| 174 //---------------------------------------------------------------------------- | 177 //---------------------------------------------------------------------------- |
| 175 // Handle Border Scaling (Upscale/Downscale everything until final scaling) | 178 // Handle Border Scaling (Upscale/Downscale everything until final scaling) |
| 176 //---------------------------------------------------------------------------- | 179 //---------------------------------------------------------------------------- |
| 177 width /= border_scale; | 180 width /= border_scale; |
| 178 height /= border_scale; | 181 height /= border_scale; |
| 179 shadow_x /= border_scale; | 182 shadow_x /= border_scale; |
| (...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 471 contour_shadow_->SetBounds(contour_size); | 474 contour_shadow_->SetBounds(contour_size); |
| 472 contour_shadow_->SetOpacity(contour_alpha); | 475 contour_shadow_->SetOpacity(contour_alpha); |
| 473 } | 476 } |
| 474 | 477 |
| 475 front_border_->SetHideLayerAndSubtree(!border_visible); | 478 front_border_->SetHideLayerAndSubtree(!border_visible); |
| 476 if (border_visible) { | 479 if (border_visible) { |
| 477 front_border_->SetPosition(border_position); | 480 front_border_->SetPosition(border_position); |
| 478 front_border_->SetBounds(border_size); | 481 front_border_->SetBounds(border_size); |
| 479 front_border_->SetOpacity(border_alpha); | 482 front_border_->SetOpacity(border_alpha); |
| 480 front_border_->SetNearestNeighbor(toolbar_visible); | 483 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 } | 484 } |
| 488 | 485 |
| 489 front_border_inner_shadow_->SetHideLayerAndSubtree( | 486 front_border_inner_shadow_->SetHideLayerAndSubtree( |
| 490 !border_inner_shadow_visible); | 487 !border_inner_shadow_visible); |
| 491 if (border_inner_shadow_visible) { | 488 if (border_inner_shadow_visible) { |
| 492 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); | 489 front_border_inner_shadow_->SetPosition(border_inner_shadow_position); |
| 493 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); | 490 front_border_inner_shadow_->SetBounds(border_inner_shadow_size); |
| 494 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); | 491 front_border_inner_shadow_->SetOpacity(border_inner_shadow_alpha); |
| 495 } | 492 } |
| 496 | 493 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 515 title_position.y() + | 512 title_position.y() + |
| 516 (title_size.height() - title_layer->size().height()) / 2.f); | 513 (title_size.height() - title_layer->size().height()) / 2.f); |
| 517 | 514 |
| 518 title_->SetPosition(vertically_centered_position); | 515 title_->SetPosition(vertically_centered_position); |
| 519 title_layer->setBounds(title_size); | 516 title_layer->setBounds(title_size); |
| 520 title_layer->setOpacity(border_alpha); | 517 title_layer->setOpacity(border_alpha); |
| 521 } | 518 } |
| 522 | 519 |
| 523 close_button_->SetHideLayerAndSubtree(!close_btn_visible); | 520 close_button_->SetHideLayerAndSubtree(!close_btn_visible); |
| 524 if (close_btn_visible) { | 521 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); | 522 close_button_->SetPosition(close_button_position); |
| 533 close_button_->SetBounds(close_button_size); | 523 close_button_->SetBounds(close_button_size); |
| 534 // Non-linear alpha looks better. | 524 // Non-linear alpha looks better. |
| 535 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); | 525 close_button_->SetOpacity(close_alpha * close_alpha * border_alpha); |
| 536 } | 526 } |
| 537 | 527 |
| 538 if (content_visible && attach_content) { | 528 if (content_visible && attach_content) { |
| 539 { | 529 { |
| 540 // content_ and back_logo_ Transforms | 530 // content_ and back_logo_ Transforms |
| 541 gfx::Transform transform; | 531 gfx::Transform transform; |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 621 // than 1. | 611 // than 1. |
| 622 if (brightness != brightness_) { | 612 if (brightness != brightness_) { |
| 623 brightness_ = brightness; | 613 brightness_ = brightness; |
| 624 cc::FilterOperations filters; | 614 cc::FilterOperations filters; |
| 625 if (brightness_ < 1.f) | 615 if (brightness_ < 1.f) |
| 626 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); | 616 filters.Append(cc::FilterOperation::CreateBrightnessFilter(brightness_)); |
| 627 layer_->SetFilters(filters); | 617 layer_->SetFilters(filters); |
| 628 } | 618 } |
| 629 } | 619 } |
| 630 | 620 |
| 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() { | 621 scoped_refptr<cc::Layer> TabLayer::layer() { |
| 646 return layer_; | 622 return layer_; |
| 647 } | 623 } |
| 648 | 624 |
| 649 TabLayer::TabLayer(bool incognito, | 625 TabLayer::TabLayer(bool incognito, |
| 650 ui::ResourceManager* resource_manager, | 626 ui::ResourceManager* resource_manager, |
| 651 LayerTitleCache* layer_title_cache, | 627 LayerTitleCache* layer_title_cache, |
| 652 TabContentManager* tab_content_manager) | 628 TabContentManager* tab_content_manager) |
| 653 : incognito_(incognito), | 629 : incognito_(incognito), |
| 654 toolbar_background_color_(0), | |
| 655 close_button_color_(0), | |
| 656 resource_manager_(resource_manager), | 630 resource_manager_(resource_manager), |
| 657 layer_title_cache_(layer_title_cache), | 631 layer_title_cache_(layer_title_cache), |
| 658 layer_(cc::Layer::Create()), | 632 layer_(cc::Layer::Create()), |
| 659 toolbar_layer_(ToolbarLayer::Create(resource_manager)), | 633 toolbar_layer_(ToolbarLayer::Create(resource_manager)), |
| 660 title_(cc::Layer::Create()), | 634 title_(cc::Layer::Create()), |
| 661 content_(ContentLayer::Create(tab_content_manager)), | 635 content_(ContentLayer::Create(tab_content_manager)), |
| 662 side_padding_(cc::SolidColorLayer::Create()), | 636 side_padding_(cc::SolidColorLayer::Create()), |
| 663 bottom_padding_(cc::SolidColorLayer::Create()), | 637 bottom_padding_(cc::SolidColorLayer::Create()), |
| 664 close_button_(cc::UIResourceLayer::Create()), | 638 close_button_(cc::UIResourceLayer::Create()), |
| 665 front_border_(cc::NinePatchLayer::Create()), | 639 front_border_(cc::NinePatchLayer::Create()), |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 title_->AddChild(layer); | 681 title_->AddChild(layer); |
| 708 } | 682 } |
| 709 } | 683 } |
| 710 | 684 |
| 711 if (title) | 685 if (title) |
| 712 title->SetUIResourceIds(); | 686 title->SetUIResourceIds(); |
| 713 } | 687 } |
| 714 | 688 |
| 715 } // namespace android | 689 } // namespace android |
| 716 } // namespace chrome | 690 } // namespace chrome |
| OLD | NEW |