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

Unified Diff: chrome/browser/profiles/profile_avatar_icon_util.cc

Issue 212603011: Newly created profiles should have the grey silhouette as avatar. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase reviewed Created 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/profiles/profile_avatar_icon_util.h ('k') | chrome/browser/profiles/profile_info_cache.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/profiles/profile_avatar_icon_util.cc
diff --git a/chrome/browser/profiles/profile_avatar_icon_util.cc b/chrome/browser/profiles/profile_avatar_icon_util.cc
index cc0264d70da26595c719336af3296dc3148caf9b..192a0b762203695488a0b346651fddfb45de08fb 100644
--- a/chrome/browser/profiles/profile_avatar_icon_util.cc
+++ b/chrome/browser/profiles/profile_avatar_icon_util.cc
@@ -176,8 +176,13 @@ void AvatarImageSource::Draw(gfx::Canvas* canvas) {
namespace profiles {
+struct IconResourceInfo {
+ int resource_id;
+ const char* filename;
+};
+
const int kAvatarIconWidth = 38;
-const int kAvatarIconHeight = 31;
+const int kAvatarIconHeight = 38;
const int kAvatarIconPadding = 2;
const SkColor kAvatarTutorialBackgroundColor = SkColorSetRGB(0x42, 0x85, 0xf4);
const SkColor kAvatarTutorialContentTextColor = SkColorSetRGB(0xc6, 0xda, 0xfc);
@@ -188,87 +193,35 @@ const char kDefaultUrlPrefix[] = "chrome://theme/IDR_PROFILE_AVATAR_";
const char kGAIAPictureFileName[] = "Google Profile Picture.png";
const char kHighResAvatarFolderName[] = "Avatars";
-const int kDefaultAvatarIconResources[] = {
- IDR_PROFILE_AVATAR_0,
- IDR_PROFILE_AVATAR_1,
- IDR_PROFILE_AVATAR_2,
- IDR_PROFILE_AVATAR_3,
- IDR_PROFILE_AVATAR_4,
- IDR_PROFILE_AVATAR_5,
- IDR_PROFILE_AVATAR_6,
- IDR_PROFILE_AVATAR_7,
- IDR_PROFILE_AVATAR_8,
- IDR_PROFILE_AVATAR_9,
- IDR_PROFILE_AVATAR_10,
- IDR_PROFILE_AVATAR_11,
- IDR_PROFILE_AVATAR_12,
- IDR_PROFILE_AVATAR_13,
- IDR_PROFILE_AVATAR_14,
- IDR_PROFILE_AVATAR_15,
- IDR_PROFILE_AVATAR_16,
- IDR_PROFILE_AVATAR_17,
- IDR_PROFILE_AVATAR_18,
- IDR_PROFILE_AVATAR_19,
- IDR_PROFILE_AVATAR_20,
- IDR_PROFILE_AVATAR_21,
- IDR_PROFILE_AVATAR_22,
- IDR_PROFILE_AVATAR_23,
- IDR_PROFILE_AVATAR_24,
- IDR_PROFILE_AVATAR_25,
-};
-
-// File names for the high-res avatar icon resources. In the same order as
-// the avatars in kDefaultAvatarIconResources.
-const char* kDefaultAvatarIconResourceFileNames[] = {
- "avatar_generic.png",
- "avatar_generic_aqua.png",
- "avatar_generic_blue.png",
- "avatar_generic_green.png",
- "avatar_generic_orange.png",
- "avatar_generic_purple.png",
- "avatar_generic_red.png",
- "avatar_generic_yellow.png",
- "avatar_secret_agent.png",
- "avatar_superhero.png",
- "avatar_volley_ball.png",
- "avatar_businessman.png",
- "avatar_ninja.png",
- "avatar_alien.png",
- "avatar_smiley.png",
- "avatar_flower.png",
- "avatar_pizza.png",
- "avatar_soccer.png",
- "avatar_burger.png",
- "avatar_cat.png",
- "avatar_cupcake.png",
- "avatar_dog.png",
- "avatar_horse.png",
- "avatar_margarita.png",
- "avatar_note.png",
- "avatar_sun_cloud.png",
-};
+// This avatar does not exist on the server, the high res copy is in the build.
+const char kNoHighResAvatar[] = "NothingToDownload";
-const size_t kDefaultAvatarIconsCount = arraysize(kDefaultAvatarIconResources);
+// The size of the function-static kDefaultAvatarIconResources array below.
+const size_t kDefaultAvatarIconsCount = 27;
// The first 8 icons are generic.
const size_t kGenericAvatarIconsCount = 8;
+// The avatar used as a placeholder (grey silhouette).
+const int kPlaceholderAvatarIcon = 26;
+
gfx::Image GetSizedAvatarIcon(const gfx::Image& image,
bool is_rectangle,
int width, int height) {
- if (!is_rectangle)
+ if (!is_rectangle && image.Height() <= height)
return image;
gfx::Size size(width, height);
- // Source for a centered, sized icon with a border.
+ // Source for a centered, sized icon. GAIA images get a border.
scoped_ptr<gfx::ImageSkiaSource> source(
new AvatarImageSource(
*image.ToImageSkia(),
size,
std::min(width, height),
AvatarImageSource::POSITION_CENTER,
- AvatarImageSource::BORDER_NONE));
+ is_rectangle ? AvatarImageSource::BORDER_NORMAL :
+ AvatarImageSource::BORDER_NONE));
return gfx::Image(gfx::ImageSkia(source.release(), size));
}
@@ -286,10 +239,11 @@ gfx::Image GetAvatarIconForWebUI(const gfx::Image& image,
}
gfx::Image GetAvatarIconForTitleBar(const gfx::Image& image,
- bool is_rectangle,
+ bool is_gaia_image,
int dst_width,
int dst_height) {
- if (!is_rectangle)
+ // The image requires no border or resizing.
+ if (!is_gaia_image && image.Height() <= kAvatarIconHeight)
return image;
int size = std::min(std::min(kAvatarIconWidth, kAvatarIconHeight),
@@ -297,14 +251,15 @@ gfx::Image GetAvatarIconForTitleBar(const gfx::Image& image,
gfx::Size dst_size(dst_width, dst_height);
// Source for a sized icon drawn at the bottom center of the canvas,
- // with an etched border.
+ // with an etched border (for GAIA images).
scoped_ptr<gfx::ImageSkiaSource> source(
new AvatarImageSource(
*image.ToImageSkia(),
dst_size,
size,
AvatarImageSource::POSITION_BOTTOM_CENTER,
- AvatarImageSource::BORDER_ETCHED));
+ is_gaia_image ? AvatarImageSource::BORDER_ETCHED :
+ AvatarImageSource::BORDER_NONE));
return gfx::Image(gfx::ImageSkia(source.release(), dst_size));
}
@@ -318,13 +273,59 @@ size_t GetGenericAvatarIconCount() {
return kGenericAvatarIconsCount;
}
+int GetPlaceholderAvatarIndex() {
+ return kPlaceholderAvatarIcon;
+}
+
+int GetPlaceholderAvatarIconResourceID() {
+ return IDR_PROFILE_AVATAR_26;
+}
+
+const IconResourceInfo* GetDefaultAvatarIconResourceInfo(size_t index) {
+ static const IconResourceInfo resource_info[kDefaultAvatarIconsCount] = {
+ { IDR_PROFILE_AVATAR_0, "avatar_generic.png"},
+ { IDR_PROFILE_AVATAR_1, "avatar_generic_aqua.png"},
+ { IDR_PROFILE_AVATAR_2, "avatar_generic_blue.png"},
+ { IDR_PROFILE_AVATAR_3, "avatar_generic_green.png"},
+ { IDR_PROFILE_AVATAR_4, "avatar_generic_orange.png"},
+ { IDR_PROFILE_AVATAR_5, "avatar_generic_purple.png"},
+ { IDR_PROFILE_AVATAR_6, "avatar_generic_red.png"},
+ { IDR_PROFILE_AVATAR_7, "avatar_generic_yellow.png"},
+ { IDR_PROFILE_AVATAR_8, "avatar_secret_agent.png"},
+ { IDR_PROFILE_AVATAR_9, "avatar_superhero.png"},
+ { IDR_PROFILE_AVATAR_10, "avatar_volley_ball.png"},
+ { IDR_PROFILE_AVATAR_11, "avatar_businessman.png"},
+ { IDR_PROFILE_AVATAR_12, "avatar_ninja.png"},
+ { IDR_PROFILE_AVATAR_13, "avatar_alien.png"},
+ { IDR_PROFILE_AVATAR_14, "avatar_smiley.png"},
+ { IDR_PROFILE_AVATAR_15, "avatar_flower.png"},
+ { IDR_PROFILE_AVATAR_16, "avatar_pizza.png"},
+ { IDR_PROFILE_AVATAR_17, "avatar_soccer.png"},
+ { IDR_PROFILE_AVATAR_18, "avatar_burger.png"},
+ { IDR_PROFILE_AVATAR_19, "avatar_cat.png"},
+ { IDR_PROFILE_AVATAR_20, "avatar_cupcake.png"},
+ { IDR_PROFILE_AVATAR_21, "avatar_dog.png"},
+ { IDR_PROFILE_AVATAR_22, "avatar_horse.png"},
+ { IDR_PROFILE_AVATAR_23, "avatar_margarita.png"},
+ { IDR_PROFILE_AVATAR_24, "avatar_note.png"},
+ { IDR_PROFILE_AVATAR_25, "avatar_sun_cloud.png"},
+ { IDR_PROFILE_AVATAR_26, kNoHighResAvatar},
+ };
+ return &resource_info[index];
+}
+
int GetDefaultAvatarIconResourceIDAtIndex(size_t index) {
DCHECK(IsDefaultAvatarIconIndex(index));
- return kDefaultAvatarIconResources[index];
+ return GetDefaultAvatarIconResourceInfo(index)->resource_id;
}
const char* GetDefaultAvatarIconFileNameAtIndex(size_t index) {
- return kDefaultAvatarIconResourceFileNames[index];
+ DCHECK(index < kDefaultAvatarIconsCount);
+ return GetDefaultAvatarIconResourceInfo(index)->filename;
+}
+
+const char* GetNoHighResAvatarFileName() {
+ return kNoHighResAvatar;
}
std::string GetDefaultAvatarIconUrl(size_t index) {
« no previous file with comments | « chrome/browser/profiles/profile_avatar_icon_util.h ('k') | chrome/browser/profiles/profile_info_cache.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698