Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Unified Diff: chrome/browser/android/compositor/layer/contextual_search_layer.cc

Issue 1337703002: [Contextual Search] Add support for crushed sprites and animate the search provider icon (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes from reviews Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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

Powered by Google App Engine
This is Rietveld 408576698