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; |
} |