Chromium Code Reviews| Index: chrome/browser/android/compositor/layer/contextual_search_layer.cc |
| diff --git a/chrome/browser/android/compositor/layer/contextual_search_layer.cc b/chrome/browser/android/compositor/layer/contextual_search_layer.cc |
| index 15f2b6f977cdf5e5ac241682d169b6cf434eee3c..afa03207845bdb04749d6a4e62ffb248b3741d8a 100644 |
| --- a/chrome/browser/android/compositor/layer/contextual_search_layer.cc |
| +++ b/chrome/browser/android/compositor/layer/contextual_search_layer.cc |
| @@ -60,6 +60,8 @@ void ContextualSearchLayer::SetProperties( |
| float search_bar_border_height, |
| bool search_bar_shadow_visible, |
| float search_bar_shadow_opacity, |
| + float search_provider_icon_sprite_size, |
| + int search_provider_icon_sprite_frame, |
| float arrow_icon_opacity, |
| float arrow_icon_rotation, |
| bool close_icon_visible, |
| @@ -81,12 +83,12 @@ void ContextualSearchLayer::SetProperties( |
| ui::ResourceManager::Resource* panel_shadow_resource = |
| resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| panel_shadow_resource_id); |
| - ui::ResourceManager::Resource* search_provider_icon_resource = |
| + ui::ResourceManager::Resource* search_provider_icon_sprite_resource = |
| resource_manager_->GetResource(ui::ANDROID_RESOURCE_TYPE_STATIC, |
| search_provider_icon_resource_id); |
| DCHECK(panel_shadow_resource); |
| - DCHECK(search_provider_icon_resource); |
| + DCHECK(search_provider_icon_sprite_resource); |
| // Round values to avoid pixel gap between layers. |
| search_bar_height = floor(search_bar_height); |
| @@ -148,25 +150,33 @@ void ContextualSearchLayer::SetProperties( |
| // --------------------------------------------------------------------------- |
| // Search Provider Icon |
| // --------------------------------------------------------------------------- |
| + search_provider_icon_sprites_per_row_ = |
|
Changwan Ryu
2015/09/17 06:10:08
Actually, you don't need to keep these as member v
Theresa
2015/09/25 00:58:13
Done.
|
| + search_provider_icon_sprite_resource->size.width() / |
| + search_provider_icon_sprite_size; |
| + search_provider_icon_sprite_rows_ = |
| + search_provider_icon_sprite_resource->size.height() / |
| + search_provider_icon_sprite_size; |
| + |
| // Positions the Search Provider Icon at the start of the Search Bar. |
| - float search_provider_icon_left; |
| + float icon_x; |
| if (is_rtl) { |
| - search_provider_icon_left = search_panel_width - |
| - search_provider_icon_resource->size.width() - search_bar_margin_side; |
| + icon_x = search_panel_width - search_provider_icon_sprite_size - |
| + search_bar_margin_side; |
| } else { |
| - search_provider_icon_left = search_bar_margin_side; |
| + icon_x = search_bar_margin_side; |
| } |
| // Centers the Search Provider Icon vertically in the Search Bar. |
| - float search_provider_icon_top = |
| - search_bar_height / 2 - |
| - search_provider_icon_resource->size.height() / 2; |
| + float icon_y = search_bar_height / 2 - search_provider_icon_sprite_size / 2; |
| + search_provider_icon_sprite_->SetUIResourceId( |
| + search_provider_icon_sprite_resource->ui_resource->id()); |
| + search_provider_icon_sprite_->SetBounds( |
| + gfx::Size(search_provider_icon_sprite_size, |
| + search_provider_icon_sprite_size)); |
| + search_provider_icon_sprite_->SetPosition(gfx::PointF(icon_x, icon_y)); |
| - search_provider_icon_->SetUIResourceId( |
| - search_provider_icon_resource->ui_resource->id()); |
| - search_provider_icon_->SetBounds(search_provider_icon_resource->size); |
| - search_provider_icon_->SetPosition( |
| - gfx::PointF(search_provider_icon_left, search_provider_icon_top)); |
| + // Sets the portion of search_provider_icon_ that gets drawn. |
| + SetSearchProviderIconSpriteFrame(search_provider_icon_sprite_frame); |
| // --------------------------------------------------------------------------- |
| // Arrow Icon |
| @@ -413,7 +423,7 @@ ContextualSearchLayer::ContextualSearchLayer( |
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| search_bar_shadow_( |
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| - search_provider_icon_( |
| + search_provider_icon_sprite_( |
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| arrow_icon_( |
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| @@ -430,7 +440,9 @@ ContextualSearchLayer::ContextualSearchLayer( |
| search_promo_( |
| cc::UIResourceLayer::Create(content::Compositor::LayerSettings())), |
| search_promo_container_( |
| - cc::SolidColorLayer::Create(content::Compositor::LayerSettings())) { |
| + cc::SolidColorLayer::Create(content::Compositor::LayerSettings())), |
| + search_provider_icon_sprites_per_row_(0), |
| + search_provider_icon_sprite_rows_(0) { |
| layer_->SetMasksToBounds(false); |
| layer_->SetIsDrawable(true); |
| @@ -451,8 +463,8 @@ ContextualSearchLayer::ContextualSearchLayer( |
| layer_->AddChild(search_term_); |
| // Search Provider Icon |
| - search_provider_icon_->SetIsDrawable(true); |
| - layer_->AddChild(search_provider_icon_); |
| + search_provider_icon_sprite_->SetIsDrawable(true); |
| + layer_->AddChild(search_provider_icon_sprite_); |
| // Arrow Icon |
| arrow_icon_->SetIsDrawable(true); |
| @@ -491,5 +503,24 @@ scoped_refptr<cc::Layer> ContextualSearchLayer::layer() { |
| return layer_; |
| } |
| +void ContextualSearchLayer::SetSearchProviderIconSpriteFrame(int sprite_frame) { |
| + float column = static_cast<float>( |
| + sprite_frame % search_provider_icon_sprites_per_row_); |
| + float row = static_cast<float>( |
| + sprite_frame / search_provider_icon_sprites_per_row_); |
| + CHECK(row <= search_provider_icon_sprite_rows_); |
| + |
| + float top_left_x = column / |
| + static_cast<float>(search_provider_icon_sprites_per_row_); |
| + float top_left_y = row / |
| + static_cast<float>(search_provider_icon_sprite_rows_); |
| + float bottom_right_x = (column + 1.f) / |
| + static_cast<float>(search_provider_icon_sprites_per_row_); |
| + float bottom_right_y = (row + 1.f) / |
| + static_cast<float>(search_provider_icon_sprite_rows_); |
| + search_provider_icon_sprite_->SetUV(gfx::PointF(top_left_x, top_left_y), |
| + gfx::PointF(bottom_right_x, bottom_right_y)); |
|
Changwan Ryu
2015/09/17 06:10:08
nit: indentation
Theresa
2015/09/25 00:58:14
Acknowledged.
|
| +} |
| + |
| } // namespace android |
| } // namespace chrome |