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

Unified Diff: ash/system/chromeos/power/power_status.h

Issue 2063633002: Render Ash material design battery image icon without PNGs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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
« no previous file with comments | « no previous file | ash/system/chromeos/power/power_status.cc » ('j') | ash/system/chromeos/power/power_status.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/chromeos/power/power_status.h
diff --git a/ash/system/chromeos/power/power_status.h b/ash/system/chromeos/power/power_status.h
index 7fb94d7236e4ae3fd95373cd9e978e83f06da934..630f673819660c9e2f9fbab4a44ecac65910278c 100644
--- a/ash/system/chromeos/power/power_status.h
+++ b/ash/system/chromeos/power/power_status.h
@@ -24,6 +24,16 @@ namespace ash {
// available to interested classes within Ash.
class ASH_EXPORT PowerStatus : public chromeos::PowerManagerClient::Observer {
public:
+ // Types of badges which can be drawn over top of a battery icon.
+ enum IconBadge {
+ ICON_BADGE_NONE,
+ ICON_BADGE_ALERT,
+ ICON_BADGE_X,
+ ICON_BADGE_BOLT,
+ ICON_BADGE_QUESTION,
+ ICON_BADGE_UNRELIABLE
+ };
+
// Different styles of battery icons.
enum IconSet {
ICON_LIGHT,
@@ -62,18 +72,19 @@ class ASH_EXPORT PowerStatus : public chromeos::PowerManagerClient::Observer {
int description_id;
};
- // Information about the battery image corresponding to the status at a given
- // point in time. This can be cached and later compared to avoid unnecessarily
- // updating onscreen icons (GetBatteryImage() creates a new image on each
- // call).
- struct BatteryImageInfo {
- BatteryImageInfo() : resource_id(-1), offset(-1), index(-1) {}
+ // A version of BatteryImageInfo used when material design is not enabled.
+ // TODO(tdanderson): Remove this once material design is enabled by default.
+ // See crbug.com/614453.
+ struct BatteryImageInfoNonMD {
+ BatteryImageInfoNonMD() : resource_id(-1), offset(-1), index(-1) {}
- bool operator==(const BatteryImageInfo& o) const {
+ bool operator==(const BatteryImageInfoNonMD& o) const {
return resource_id == o.resource_id && offset == o.offset &&
index == o.index;
}
- bool operator!=(const BatteryImageInfo& o) const { return !(*this == o); }
+ bool operator!=(const BatteryImageInfoNonMD& o) const {
+ return !(*this == o);
+ }
// Resource ID of the image containing the specific battery icon to use.
int resource_id;
@@ -87,6 +98,41 @@ class ASH_EXPORT PowerStatus : public chromeos::PowerManagerClient::Observer {
int index;
};
+ // Information about the battery image corresponding to the status at a given
+ // point in time. This can be cached and later compared to avoid unnecessarily
+ // updating onscreen icons (GetBatteryImage() creates a new image on each
+ // call).
+ struct BatteryImageInfo {
+ BatteryImageInfo() : icon_set(ICON_LIGHT), icon_badge(ICON_BADGE_NONE), fill_level(-1) {}
+
+ bool operator==(const BatteryImageInfo& o) const {
+ return icon_set == o.icon_set &&
+ icon_badge == o.icon_badge &&
+ fill_level == o.fill_level;
+ }
+
+ bool operator!=(const BatteryImageInfo& o) const {
+ return !(*this == o);
+ }
+
+ // The color scheme that should be used for the icon. ICON_LIGHT is used
+ // for the system tray, and ICON_DARK is used elsewhere.
+ IconSet icon_set;
+
+ // The badge (lightning bolt, exclamation mark, etc) that should be drawn
+ // on top of the battery icon.
+ // TODO(tdanderson): Consider using gfx::VectorIconId instead of this enum
+ // once all possible badges have been vectorized. See crbug.com/617298.
+ IconBadge icon_badge;
+
+ // A value between 0 and 14 representing the number of pixels that should
+ // be drawn as the fill color, upwards from the bottom of the 16x16 grid
+ // containing the battery image. Note that there is 2px of bottom padding
+ // baked into the battery icon, which means that no fill amount will be
+ // visible inside the battery for a |fill_level| of 0 or 1.
+ int fill_level;
+ };
+
// Maximum battery time-to-full or time-to-empty that should be displayed
// in the UI. If the current is close to zero, battery time estimates can
// get very large; avoid displaying these large numbers.
@@ -193,8 +239,20 @@ class ASH_EXPORT PowerStatus : public chromeos::PowerManagerClient::Observer {
// returned by this method to avoid creating new images unnecessarily.
BatteryImageInfo GetBatteryImageInfo(IconSet icon_set) const;
+ // Returns the BatteryImageInfoNonMD struct corresponding to |info|.
+ // TODO(tdanderson): Remove this once material design is enabled by default.
+ // See crbug.com/614453.
+ BatteryImageInfoNonMD ConvertToBatteryImageInfoNonMD(
+ const BatteryImageInfo info) const;
+
// Creates a new image that should be shown for the battery's current state.
- gfx::ImageSkia GetBatteryImage(IconSet icon_set) const;
+ gfx::ImageSkia GetBatteryImage(const BatteryImageInfo info) const;
+
+ // A version of GetBatteryImage() that is used when material design is not
+ // enabled.
+ // TODO(tdanderson): Remove this once material design is enabled by default.
+ // See crbug.com/614453.
+ gfx::ImageSkia GetBatteryImageNonMD(const BatteryImageInfoNonMD info) const;
// Returns an string describing the current state for accessibility.
base::string16 GetAccessibleNameString(bool full_description) const;
« no previous file with comments | « no previous file | ash/system/chromeos/power/power_status.cc » ('j') | ash/system/chromeos/power/power_status.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698