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 |