diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-24 11:36:23 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-07-24 11:36:23 +0000 |
commit | c9631967e8dc78d70803e87919c7a645129fbbe4 (patch) | |
tree | f6adf46d8afa8b4b0d2cfb747f4953fb5e230fde | |
parent | 71677ab3b44b9d5d7243f2e70db314ef4d8c27b5 (diff) | |
download | chromium_src-c9631967e8dc78d70803e87919c7a645129fbbe4.zip chromium_src-c9631967e8dc78d70803e87919c7a645129fbbe4.tar.gz chromium_src-c9631967e8dc78d70803e87919c7a645129fbbe4.tar.bz2 |
Make audio volume icon HDC
Update the image for 2x which only had 4 icons
Show mute icon when volume is 0 (+ some simplification)
BUG=122992,137763
TEST=manual
Review URL: https://chromiumcodereview.appspot.com/10781021
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@148089 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/system/audio/tray_volume.cc | 35 | ||||
-rw-r--r-- | ash/system/tray/system_tray_delegate.h | 4 | ||||
-rw-r--r-- | ui/resources/default_200_percent/ash/status_volume_dark.png | bin | 0 -> 3217 bytes |
3 files changed, 19 insertions, 20 deletions
diff --git a/ash/system/audio/tray_volume.cc b/ash/system/audio/tray_volume.cc index 17f121d..f395be6 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,7 +34,11 @@ namespace internal { namespace { const int kVolumeImageWidth = 25; const int kVolumeImageHeight = 25; -const int kVolumeLevel = 4; + +// IDR_AURA_UBER_TRAY_VOLUME_LEVELS contains 5 images, +// The one for mute is at the 0 index and the other +// four are used for ascending volume levels. +const int kVolumeLevels = 4; } namespace tray { @@ -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 ? + kVolumeLevels : std::ceil(level * (kVolumeLevels - 1))); + 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; } diff --git a/ash/system/tray/system_tray_delegate.h b/ash/system/tray/system_tray_delegate.h index bde7111..6af67fe 100644 --- a/ash/system/tray/system_tray_delegate.h +++ b/ash/system/tray/system_tray_delegate.h @@ -148,10 +148,10 @@ class SystemTrayDelegate { // Mutes/Unmutes the audio system. virtual void SetAudioMuted(bool muted) = 0; - // Gets the volume level. + // Gets the volume level. The range is [0, 1.0]. virtual float GetVolumeLevel() const = 0; - // Sets the volume level. + // Sets the volume level. The range is [0, 1.0]. virtual void SetVolumeLevel(float level) = 0; // Gets whether the caps lock is on. diff --git a/ui/resources/default_200_percent/ash/status_volume_dark.png b/ui/resources/default_200_percent/ash/status_volume_dark.png Binary files differnew file mode 100644 index 0000000..f4985db --- /dev/null +++ b/ui/resources/default_200_percent/ash/status_volume_dark.png |