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 |