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

Side by Side Diff: ash/shelf/shelf_button.cc

Issue 1907363004: (Merge to M-51) Revise the shelf alignment locking mechanism. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2704
Patch Set: Created 4 years, 8 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 unified diff | Download patch
« no previous file with comments | « ash/shelf/shelf_bezel_event_filter.cc ('k') | ash/shelf/shelf_layout_manager.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/shelf/shelf_button.h" 5 #include "ash/shelf/shelf_button.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "ash/ash_constants.h" 9 #include "ash/ash_constants.h"
10 #include "ash/ash_switches.h" 10 #include "ash/ash_switches.h"
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 void UpdateBounds() { 173 void UpdateBounds() {
174 gfx::Rect bounds = base_bounds_; 174 gfx::Rect bounds = base_bounds_;
175 if (show_attention_) { 175 if (show_attention_) {
176 // Scale from .35 to 1.0 of the total width (which is wider than the 176 // Scale from .35 to 1.0 of the total width (which is wider than the
177 // visible width of the image), so the animation "rests" briefly at full 177 // visible width of the image), so the animation "rests" briefly at full
178 // visible width. Cap bounds length at kIconSize to prevent visual 178 // visible width. Cap bounds length at kIconSize to prevent visual
179 // flutter while centering bar within further expanding bounds. 179 // flutter while centering bar within further expanding bounds.
180 double animation = animating_ ? 180 double animation = animating_ ?
181 ShelfButtonAnimation::GetInstance()->GetAnimation() : 1.0; 181 ShelfButtonAnimation::GetInstance()->GetAnimation() : 1.0;
182 double scale = .35 + .65 * animation; 182 double scale = .35 + .65 * animation;
183 if (shelf_->alignment() == SHELF_ALIGNMENT_BOTTOM) { 183 if (shelf_->IsHorizontalAlignment()) {
184 int width = base_bounds_.width() * scale; 184 int width = base_bounds_.width() * scale;
185 bounds.set_width(std::min(width, kIconSize)); 185 bounds.set_width(std::min(width, kIconSize));
186 int x_offset = (base_bounds_.width() - bounds.width()) / 2; 186 int x_offset = (base_bounds_.width() - bounds.width()) / 2;
187 bounds.set_x(base_bounds_.x() + x_offset); 187 bounds.set_x(base_bounds_.x() + x_offset);
188 UpdateAnimating(bounds.width() == kIconSize); 188 UpdateAnimating(bounds.width() == kIconSize);
189 } else { 189 } else {
190 int height = base_bounds_.height() * scale; 190 int height = base_bounds_.height() * scale;
191 bounds.set_height(std::min(height, kIconSize)); 191 bounds.set_height(std::min(height, kIconSize));
192 int y_offset = (base_bounds_.height() - bounds.height()) / 2; 192 int y_offset = (base_bounds_.height() - bounds.height()) / 2;
193 bounds.set_y(base_bounds_.y() + y_offset); 193 bounds.set_y(base_bounds_.y() + y_offset);
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
478 478
479 int bar_id = 0; 479 int bar_id = 0;
480 if (state_ & (STATE_ACTIVE)) 480 if (state_ & (STATE_ACTIVE))
481 bar_id = IDR_ASH_SHELF_UNDERLINE_ACTIVE; 481 bar_id = IDR_ASH_SHELF_UNDERLINE_ACTIVE;
482 else if (state_ & STATE_ATTENTION) 482 else if (state_ & STATE_ATTENTION)
483 bar_id = IDR_ASH_SHELF_UNDERLINE_ATTENTION; 483 bar_id = IDR_ASH_SHELF_UNDERLINE_ATTENTION;
484 else if (state_ & STATE_RUNNING) 484 else if (state_ & STATE_RUNNING)
485 bar_id = IDR_ASH_SHELF_UNDERLINE_RUNNING; 485 bar_id = IDR_ASH_SHELF_UNDERLINE_RUNNING;
486 486
487 if (bar_id != 0) { 487 if (bar_id != 0) {
488 ResourceBundle& rb = ResourceBundle::GetSharedInstance();
489 const gfx::ImageSkia* image = rb.GetImageNamed(bar_id).ToImageSkia();
490
491 Shelf* shelf = shelf_view_->shelf(); 488 Shelf* shelf = shelf_view_->shelf();
492 if (shelf->alignment() == SHELF_ALIGNMENT_BOTTOM) { 489 ResourceBundle* rb = &ResourceBundle::GetSharedInstance();
493 bar_->SetImage(*image); 490 gfx::ImageSkia image = *rb->GetImageNamed(bar_id).ToImageSkia();
494 } else { 491 if (!shelf->IsHorizontalAlignment()) {
495 bar_->SetImage(gfx::ImageSkiaOperations::CreateRotatedImage( 492 image = gfx::ImageSkiaOperations::CreateRotatedImage(
496 *image, shelf->SelectValueForShelfAlignment( 493 image, shelf->alignment() == SHELF_ALIGNMENT_LEFT
497 SkBitmapOperations::ROTATION_90_CW, 494 ? SkBitmapOperations::ROTATION_90_CW
498 SkBitmapOperations::ROTATION_90_CW, 495 : SkBitmapOperations::ROTATION_270_CW);
499 SkBitmapOperations::ROTATION_270_CW)));
500 } 496 }
497 bar_->SetImage(image);
501 bar_->SetHorizontalAlignment(shelf->SelectValueForShelfAlignment( 498 bar_->SetHorizontalAlignment(shelf->SelectValueForShelfAlignment(
502 views::ImageView::CENTER, views::ImageView::LEADING, 499 views::ImageView::CENTER, views::ImageView::LEADING,
503 views::ImageView::TRAILING)); 500 views::ImageView::TRAILING));
504 bar_->SetVerticalAlignment(shelf->SelectValueForShelfAlignment( 501 bar_->SetVerticalAlignment(shelf->SelectValueForShelfAlignment(
505 views::ImageView::TRAILING, views::ImageView::CENTER, 502 views::ImageView::TRAILING, views::ImageView::CENTER,
506 views::ImageView::CENTER)); 503 views::ImageView::CENTER));
507 bar_->SchedulePaint(); 504 bar_->SchedulePaint();
508 } 505 }
509 506
510 bar_->SetVisible(bar_id != 0 && state_ != STATE_NORMAL); 507 bar_->SetVisible(bar_id != 0 && state_ != STATE_NORMAL);
511 } 508 }
512 509
513 } // namespace ash 510 } // namespace ash
OLDNEW
« no previous file with comments | « ash/shelf/shelf_bezel_event_filter.cc ('k') | ash/shelf/shelf_layout_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698