Chromium Code Reviews| Index: ash/system/audio/tray_volume.cc |
| diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc |
| index 5b9d3a38541c2785474f7b26fc330f31393f64fd..4864328db8538db2e08280eaa2b66aad8d532ade 100644 |
| --- a/ash/system/audio/tray_volume.cc |
| +++ b/ash/system/audio/tray_volume.cc |
| @@ -4,6 +4,8 @@ |
| #include "ash/system/audio/tray_volume.h" |
| +#include <cmath> |
| + |
| #include "ash/shell.h" |
| #include "ash/system/tray/system_tray_delegate.h" |
| #include "ash/system/tray/tray_constants.h" |
| @@ -18,6 +20,7 @@ |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/gfx/canvas.h" |
| #include "ui/gfx/image/image.h" |
| +#include "ui/gfx/image/image_skia_operations.h" |
| #include "ui/views/controls/button/image_button.h" |
| #include "ui/views/controls/image_view.h" |
| #include "ui/views/controls/label.h" |
| @@ -31,6 +34,10 @@ namespace internal { |
| namespace { |
| const int kVolumeImageWidth = 25; |
| const int kVolumeImageHeight = 25; |
| + |
| +// IDR_AURA_UBER_TRAY_VOLUME_LEVELS contains 5 images, |
|
Daniel Erat
2012/07/24 00:50:10
nit: "... contains 5 images. The one for mute is
oshima
2012/07/24 11:34:33
Done.
|
| +// the one for muted at 0 index, and the rest of 4 images are |
| +// used to represent volume levels. |
| const int kVolumeLevel = 4; |
|
Daniel Erat
2012/07/24 00:50:10
nit: rename to kVolumeLevels?
oshima
2012/07/24 11:34:33
Done.
|
| } |
| @@ -53,24 +60,16 @@ class VolumeButton : public views::ToggleImageButton { |
| void Update() { |
| ash::SystemTrayDelegate* delegate = |
| ash::Shell::GetInstance()->tray_delegate(); |
| - int level = static_cast<int>(delegate->GetVolumeLevel() * 100); |
| - int image_index = level / (100 / kVolumeLevel); |
| - if (level > 0 && image_index == 0) |
| - ++image_index; |
| - if (level == 100) |
| - image_index = kVolumeLevel - 1; |
| - else if (image_index == kVolumeLevel - 1) |
| - --image_index; |
| - // Index 0 is reserved for mute. |
| - if (delegate->IsAudioMuted()) |
| - image_index = 0; |
| - else |
| - ++image_index; |
| + float level = delegate->GetVolumeLevel(); |
| + int image_index = delegate->IsAudioMuted() ? |
| + 0 : (level == 1.0 ? |
| + kVolumeLevel : std::ceil(level * (kVolumeLevel -1))); |
|
Daniel Erat
2012/07/24 00:50:10
nit: space between "-" and "1"
oshima
2012/07/24 11:34:33
Done.
|
| + |
| if (image_index != image_index_) { |
| - SkIRect region = SkIRect::MakeXYWH(0, image_index * kVolumeImageHeight, |
| - kVolumeImageWidth, kVolumeImageHeight); |
| - gfx::ImageSkia image_skia; |
| - image_.ToImageSkia()->extractSubset(&image_skia, region); |
| + gfx::Rect region(0, image_index * kVolumeImageHeight, |
| + kVolumeImageWidth, kVolumeImageHeight); |
| + gfx::ImageSkia image_skia = gfx::ImageSkiaOperations::ExtractSubset( |
| + *(image_.ToImageSkia()), region); |
| SetImage(views::CustomButton::BS_NORMAL, &image_skia); |
| image_index_ = image_index; |
| } |