| 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) {
|
|
|