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 |