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

Side by Side Diff: chrome/browser/profiles/profile_shortcut_manager_win.cc

Issue 268073005: Bring back support for 38x31 avatars. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/profiles/profile_shortcut_manager_win.h" 5 #include "chrome/browser/profiles/profile_shortcut_manager_win.h"
6 6
7 #include <shlobj.h> // For SHChangeNotify(). 7 #include <shlobj.h> // For SHChangeNotify().
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 // differently than it was when a shortcut was originally created. 65 // differently than it was when a shortcut was originally created.
66 const int kMaxProfileShortcutFileNameLength = 64; 66 const int kMaxProfileShortcutFileNameLength = 64;
67 67
68 // The avatar badge size needs to be half of the shortcut icon size because 68 // The avatar badge size needs to be half of the shortcut icon size because
69 // the Windows taskbar icon is 32x32 and the avatar icon overlay is 16x16. So to 69 // the Windows taskbar icon is 32x32 and the avatar icon overlay is 16x16. So to
70 // get the shortcut avatar badge and the avatar icon overlay to match up, we 70 // get the shortcut avatar badge and the avatar icon overlay to match up, we
71 // need to preserve those ratios when creating the shortcut icon. 71 // need to preserve those ratios when creating the shortcut icon.
72 const int kShortcutIconSize = 48; 72 const int kShortcutIconSize = 48;
73 const int kProfileAvatarBadgeSize = kShortcutIconSize / 2; 73 const int kProfileAvatarBadgeSize = kShortcutIconSize / 2;
74 74
75 const int kCurrentProfileIconVersion = 2; 75 const int kCurrentProfileIconVersion = 2;
gab 2014/05/05 22:58:09 As calamity@ mentioned on issue 369495, you should
noms (inactive) 2014/05/06 00:30:03 Gab: Mike is actually reverting to the status quo
gab 2014/05/06 18:34:59 Ah ok, ignore me then :)! Thanks!
76 76
77 // 2x sized profile avatar icons. Mirrors |kDefaultAvatarIconResources| in 77 // 2x sized profile avatar icons. Mirrors |kDefaultAvatarIconResources| in
78 // profile_info_cache.cc. 78 // profile_info_cache.cc.
79 const int kProfileAvatarIconResources2x[] = { 79 const int kProfileAvatarIconResources2x[] = {
80 IDR_PROFILE_AVATAR_2X_0, 80 IDR_PROFILE_AVATAR_2X_0,
81 IDR_PROFILE_AVATAR_2X_1, 81 IDR_PROFILE_AVATAR_2X_1,
82 IDR_PROFILE_AVATAR_2X_2, 82 IDR_PROFILE_AVATAR_2X_2,
83 IDR_PROFILE_AVATAR_2X_3, 83 IDR_PROFILE_AVATAR_2X_3,
84 IDR_PROFILE_AVATAR_2X_4, 84 IDR_PROFILE_AVATAR_2X_4,
85 IDR_PROFILE_AVATAR_2X_5, 85 IDR_PROFILE_AVATAR_2X_5,
(...skipping 18 matching lines...) Expand all
104 IDR_PROFILE_AVATAR_2X_24, 104 IDR_PROFILE_AVATAR_2X_24,
105 IDR_PROFILE_AVATAR_2X_25, 105 IDR_PROFILE_AVATAR_2X_25,
106 IDR_PROFILE_AVATAR_2X_26, 106 IDR_PROFILE_AVATAR_2X_26,
107 }; 107 };
108 108
109 // Badges |app_icon_bitmap| with |avatar_bitmap| at the bottom right corner and 109 // Badges |app_icon_bitmap| with |avatar_bitmap| at the bottom right corner and
110 // returns the resulting SkBitmap. 110 // returns the resulting SkBitmap.
111 SkBitmap BadgeIcon(const SkBitmap& app_icon_bitmap, 111 SkBitmap BadgeIcon(const SkBitmap& app_icon_bitmap,
112 const SkBitmap& avatar_bitmap, 112 const SkBitmap& avatar_bitmap,
113 int scale_factor) { 113 int scale_factor) {
114 // All icons, whether cartoon, GAIA or placeholder, should be square. 114 // TODO(rlp): Share this chunk of code with
115 // TODO(mlerman) - uncomment the ASSERT once noms@ lands the square images. 115 // avatar_menu_button::DrawTaskBarDecoration.
noms (inactive) 2014/05/05 16:10:53 Can we address this TODO? Maybe move the function
Mike Lerman 2014/05/06 12:43:15 Done, refactored the code into profile_avatar_icon
116 // DCHECK(avatar_bitmap.width() == avatar_bitmap.height()); 116 SkBitmap source_bitmap = avatar_bitmap;
117 if ((avatar_bitmap.width() == scale_factor * profiles::kAvatarIconWidth) &&
118 (avatar_bitmap.height() == scale_factor * profiles::kAvatarIconHeight)) {
119 // Shave a couple of columns so the bitmap is more square. So when
120 // resized to a square aspect ratio it looks pretty.
121 gfx::Rect frame(scale_factor * profiles::kAvatarIconWidth,
122 scale_factor * profiles::kAvatarIconHeight);
123 frame.Inset(scale_factor * 2, 0, scale_factor * 2, 0);
124 avatar_bitmap.extractSubset(&source_bitmap, gfx::RectToSkIRect(frame));
125 } else {
126 // If not the icon's aspect ratio, the image should be square.
127 DCHECK(avatar_bitmap.width() == avatar_bitmap.height());
128 }
117 129
118 int avatar_badge_size = kProfileAvatarBadgeSize; 130 int avatar_badge_size = kProfileAvatarBadgeSize;
119 if (app_icon_bitmap.width() != kShortcutIconSize) { 131 if (app_icon_bitmap.width() != kShortcutIconSize) {
120 avatar_badge_size = 132 avatar_badge_size =
121 app_icon_bitmap.width() * kProfileAvatarBadgeSize / kShortcutIconSize; 133 app_icon_bitmap.width() * kProfileAvatarBadgeSize / kShortcutIconSize;
122 } 134 }
123 SkBitmap sk_icon = skia::ImageOperations::Resize( 135 SkBitmap sk_icon = skia::ImageOperations::Resize(
124 avatar_bitmap, skia::ImageOperations::RESIZE_LANCZOS3, avatar_badge_size, 136 source_bitmap, skia::ImageOperations::RESIZE_LANCZOS3, avatar_badge_size,
125 avatar_bitmap.height() * avatar_badge_size / avatar_bitmap.width()); 137 source_bitmap.height() * avatar_badge_size / source_bitmap.width());
126 138
127 // Overlay the avatar on the icon, anchoring it to the bottom-right of the 139 // Overlay the avatar on the icon, anchoring it to the bottom-right of the
128 // icon. 140 // icon.
129 SkBitmap badged_bitmap; 141 SkBitmap badged_bitmap;
130 badged_bitmap.allocN32Pixels(app_icon_bitmap.width(), 142 badged_bitmap.allocN32Pixels(app_icon_bitmap.width(),
131 app_icon_bitmap.height()); 143 app_icon_bitmap.height());
132 SkCanvas offscreen_canvas(badged_bitmap); 144 SkCanvas offscreen_canvas(badged_bitmap);
133 offscreen_canvas.clear(SK_ColorTRANSPARENT); 145 offscreen_canvas.clear(SK_ColorTRANSPARENT);
134 146
135 offscreen_canvas.drawBitmap(app_icon_bitmap, 0, 0); 147 offscreen_canvas.drawBitmap(app_icon_bitmap, 0, 0);
(...skipping 707 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 // Ensure the profile's icon file has been created. 855 // Ensure the profile's icon file has been created.
844 CreateOrUpdateProfileIcon(profile->GetPath()); 856 CreateOrUpdateProfileIcon(profile->GetPath());
845 } 857 }
846 break; 858 break;
847 } 859 }
848 default: 860 default:
849 NOTREACHED(); 861 NOTREACHED();
850 break; 862 break;
851 } 863 }
852 } 864 }
OLDNEW
« no previous file with comments | « chrome/browser/profiles/profile_avatar_icon_util.cc ('k') | chrome/browser/resources/options/browser_options.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698