Index: chrome/browser/ui/views/avatar_menu_button.cc |
=================================================================== |
--- chrome/browser/ui/views/avatar_menu_button.cc (revision 88685) |
+++ chrome/browser/ui/views/avatar_menu_button.cc (working copy) |
@@ -1,71 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/views/avatar_menu_button.h" |
- |
-#include "ui/gfx/canvas_skia.h" |
-#include "views/controls/menu/menu_model_adapter.h" |
-#include "views/window/window.h" |
- |
-// Menu should display below the image on the frame. This |
-// offset size depends on whether the frame is in glass or opaque mode. |
-const int kMenuDisplayOffset = 5; |
- |
-static inline int Round(double x) { |
- return static_cast<int>(floor(x + 0.5)); |
-} |
- |
-AvatarMenuButton::AvatarMenuButton(const std::wstring& text, |
- ui::MenuModel* menu_model) |
- : MenuButton(NULL, text, this, false), |
- menu_model_(menu_model) { |
- // In RTL mode, the avatar icon should be looking the opposite direction. |
- EnableCanvasFlippingForRTLUI(true); |
-} |
- |
-AvatarMenuButton::~AvatarMenuButton() {} |
- |
-void AvatarMenuButton::OnPaint(gfx::Canvas* canvas) { |
- const SkBitmap& icon = GetImageToPaint(); |
- if (!icon.isNull()) { |
- // Scale the image to fit the width of the button. |
- int src_width = icon.width(); |
- int src_x = 0; |
- int dst_width = std::min(src_width, width()); |
- int dst_x = Round((width() - dst_width) / 2.0); |
- |
- // Scale the height and maintain aspect ratio. This means that the |
- // icon may not fit in the view. That's ok, we just center it vertically. |
- float scale = |
- static_cast<float>(dst_width) / static_cast<float>(icon.width()); |
- int scaled_height = Round(height() / scale); |
- int src_height = std::min(scaled_height, icon.height()); |
- int src_y = Round((icon.height() - src_height) / 2.0); |
- int dst_height = src_height * scale; |
- int dst_y = Round((height() - dst_height) / 2.0); |
- |
- canvas->DrawBitmapInt(icon, src_x, src_y, src_width, src_height, |
- dst_x, dst_y, dst_width, dst_height, false); |
- } |
-} |
- |
-gfx::Size AvatarMenuButton::GetPreferredAvatarSize() { |
- return gfx::Size(38, 31); |
-} |
- |
-// views::ViewMenuDelegate implementation |
-void AvatarMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { |
- if (!menu_model_.get()) |
- return; |
- |
- views::MenuModelAdapter menu_model_adapter(menu_model_.get()); |
- views::MenuItemView menu(&menu_model_adapter); |
- menu_model_adapter.BuildMenu(&menu); |
- |
- gfx::Point menu_point(pt.x(), pt.y() + kMenuDisplayOffset); |
- menu.RunMenuAt(source->GetWindow()->GetNativeWindow(), NULL, |
- gfx::Rect(pt, gfx::Size(0, 0)), |
- views::MenuItemView::TOPRIGHT, |
- true); |
-} |