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

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

Issue 2057203002: Bringing back fast user switching on desktop user menu (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ifdef for Android 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
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 2d82b35a684ce27f9220bf0795ba8455ffd41856..bc1eb4ac4015f7f494b6de57edf22369a3eb7cbd 100644
--- a/chrome/browser/profiles/profile_avatar_icon_util.cc
+++ b/chrome/browser/profiles/profile_avatar_icon_util.cc
@@ -29,6 +29,7 @@
#include "ui/gfx/image/canvas_image_source.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/image/image_skia_operations.h"
+#include "ui/gfx/path.h"
#include "ui/gfx/skia_util.h"
#include "url/gurl.h"
#include "url/url_canon.h"
@@ -72,7 +73,8 @@ class AvatarImageSource : public gfx::CanvasImageSource {
const gfx::Size& canvas_size,
int width,
AvatarPosition position,
- AvatarBorder border);
+ AvatarBorder border,
+ profiles::AvatarShape shape=profiles::SHAPE_SQUARE);
~AvatarImageSource() override;
// CanvasImageSource override:
@@ -85,6 +87,7 @@ class AvatarImageSource : public gfx::CanvasImageSource {
const int height_;
const AvatarPosition position_;
const AvatarBorder border_;
+ const profiles::AvatarShape shape_;
DISALLOW_COPY_AND_ASSIGN(AvatarImageSource);
};
@@ -93,13 +96,15 @@ AvatarImageSource::AvatarImageSource(gfx::ImageSkia avatar,
const gfx::Size& canvas_size,
int width,
AvatarPosition position,
- AvatarBorder border)
+ AvatarBorder border,
+ profiles::AvatarShape shape)
: gfx::CanvasImageSource(canvas_size, false),
canvas_size_(canvas_size),
width_(width),
height_(GetScaledAvatarHeightForWidth(width, avatar)),
position_(position),
- border_(border) {
+ border_(border),
+ shape_(shape) {
avatar_ = gfx::ImageSkiaOperations::CreateResizedImage(
avatar, skia::ImageOperations::RESIZE_BEST,
gfx::Size(width_, height_));
@@ -113,7 +118,20 @@ void AvatarImageSource::Draw(gfx::Canvas* canvas) {
int x = (canvas_size_.width() - width_) / 2;
int y;
- if (position_ == POSITION_CENTER) {
+ if (shape_ == profiles::SHAPE_CIRCLE) {
+ // Draw the avatar on the bottom center of the canvas; overrides the
+ // position specification.
+ y = canvas_size_.height() - height_;
+ #if !defined(OS_ANDROID)
+ // Calculate the circular mask that will be used to display the avatar
+ // image.
+ gfx::Path circular_mask;
+ circular_mask.addCircle(SkIntToScalar(canvas_size_.width() / 2),
+ SkIntToScalar(canvas_size_.height() / 2),
+ SkIntToScalar(canvas_size_.width() / 2));
+ canvas->ClipPath(circular_mask, true);
+ #endif
+ } else if (position_ == POSITION_CENTER) {
Roger Tawa OOO till Jul 10th 2016/06/14 15:25:13 If someone happens to use SHAPE_CIRCLE in clank, t
Jane 2016/06/15 14:21:13 Done. I assume you meant putting the if condition
Roger Tawa OOO till Jul 10th 2016/06/17 14:35:56 As is, the CIRCLE enum is still defined on android
// Draw the avatar centered on the canvas.
y = (canvas_size_.height() - height_) / 2;
} else {
@@ -226,7 +244,8 @@ const size_t kPlaceholderAvatarIndex = 26;
gfx::Image GetSizedAvatarIcon(const gfx::Image& image,
bool is_rectangle,
- int width, int height) {
+ int width, int height,
+ AvatarShape shape) {
if (!is_rectangle && image.Height() <= height)
return image;
@@ -235,7 +254,8 @@ gfx::Image GetSizedAvatarIcon(const gfx::Image& image,
// Source for a centered, sized icon. GAIA images get a border.
std::unique_ptr<gfx::ImageSkiaSource> source(new AvatarImageSource(
*image.ToImageSkia(), size, std::min(width, height),
- AvatarImageSource::POSITION_CENTER, AvatarImageSource::BORDER_NONE));
+ AvatarImageSource::POSITION_CENTER, AvatarImageSource::BORDER_NONE,
+ shape));
return gfx::Image(gfx::ImageSkia(source.release(), size));
}

Powered by Google App Engine
This is Rietveld 408576698