| Index: chrome/browser/ui/views/browser_action_view.cc
|
| diff --git a/chrome/browser/ui/views/browser_action_view.cc b/chrome/browser/ui/views/browser_action_view.cc
|
| index 01877ec97e7a4cc41555242559ea06057161748d..dab1652c26312485bf50a9d87701781a8fd0a336 100644
|
| --- a/chrome/browser/ui/views/browser_action_view.cc
|
| +++ b/chrome/browser/ui/views/browser_action_view.cc
|
| @@ -20,27 +20,14 @@
|
| #include "ui/base/event.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/gfx/canvas.h"
|
| -#include "ui/gfx/skbitmap_operations.h"
|
| +#include "ui/gfx/image/image_skia.h"
|
| +#include "ui/gfx/image/image_skia_operations.h"
|
| +#include "ui/gfx/image/image_skia_source.h"
|
| #include "ui/views/controls/menu/menu_model_adapter.h"
|
| #include "ui/views/controls/menu/menu_runner.h"
|
|
|
| using extensions::Extension;
|
|
|
| -namespace {
|
| -
|
| -// Return a more transparent |image|, with 25% of its original opacity.
|
| -SkBitmap MakeTransparent(const SkBitmap& image) {
|
| - SkBitmap alpha;
|
| - alpha.setConfig(SkBitmap::kARGB_8888_Config, image.width(), image.height());
|
| - alpha.allocPixels();
|
| - alpha.eraseColor(SkColorSetARGB(64, 0, 0, 0));
|
| -
|
| - return SkBitmapOperations::CreateMaskedBitmap(image, alpha);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // BrowserActionView
|
|
|
| @@ -64,23 +51,15 @@ BrowserActionView::BrowserActionView(const Extension* extension,
|
| BrowserActionView::~BrowserActionView() {
|
| }
|
|
|
| -gfx::Canvas* BrowserActionView::GetIconWithBadge() {
|
| +gfx::ImageSkia BrowserActionView::GetIconWithBadge() {
|
| int tab_id = delegate_->GetCurrentTabId();
|
|
|
| - SkBitmap icon =
|
| - *button_->extension()->browser_action()->GetIcon(tab_id).ToSkBitmap();
|
| -
|
| - // Dim the icon if our button is disabled.
|
| + const ExtensionAction* action = button_->extension()->browser_action();
|
| + gfx::Size spacing(0, ToolbarView::kVertSpacing);
|
| + gfx::ImageSkia icon = *action->GetIcon(tab_id).ToImageSkia();
|
| if (!button_->IsEnabled(tab_id))
|
| - icon = MakeTransparent(icon);
|
| -
|
| - gfx::Canvas* canvas =
|
| - new gfx::Canvas(gfx::ImageSkiaRep(icon, ui::SCALE_FACTOR_100P), false);
|
| -
|
| - gfx::Rect bounds(icon.width(), icon.height() + ToolbarView::kVertSpacing);
|
| - button_->extension()->browser_action()->PaintBadge(canvas, bounds, tab_id);
|
| -
|
| - return canvas;
|
| + icon = gfx::ImageSkiaOperations::CreateTransparentImage(icon, .25);
|
| + return action->GetIconWithBadge(icon, tab_id, spacing);
|
| }
|
|
|
| void BrowserActionView::Layout() {
|
| @@ -261,39 +240,23 @@ void BrowserActionButton::UpdateState() {
|
| views::CustomButton::BS_NORMAL);
|
| }
|
|
|
| - SkBitmap icon(*browser_action()->GetIcon(tab_id).ToSkBitmap());
|
| + gfx::ImageSkia icon = *browser_action()->GetIcon(tab_id).ToImageSkia();
|
| +
|
| if (!icon.isNull()) {
|
| if (!browser_action()->GetIsVisible(tab_id))
|
| - icon = MakeTransparent(icon);
|
| - SkPaint paint;
|
| - paint.setXfermode(SkXfermode::Create(SkXfermode::kSrcOver_Mode));
|
| + icon = gfx::ImageSkiaOperations::CreateTransparentImage(icon, .25);
|
| +
|
| ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
|
|
| - SkBitmap bg;
|
| - rb.GetBitmapNamed(IDR_BROWSER_ACTION)->copyTo(&bg,
|
| - SkBitmap::kARGB_8888_Config);
|
| - SkCanvas bg_canvas(bg);
|
| - bg_canvas.drawBitmap(icon, SkIntToScalar((bg.width() - icon.width()) / 2),
|
| - SkIntToScalar((bg.height() - icon.height()) / 2), &paint);
|
| - SetIcon(bg);
|
| -
|
| - SkBitmap bg_h;
|
| - rb.GetBitmapNamed(IDR_BROWSER_ACTION_H)->copyTo(&bg_h,
|
| - SkBitmap::kARGB_8888_Config);
|
| - SkCanvas bg_h_canvas(bg_h);
|
| - bg_h_canvas.drawBitmap(icon,
|
| - SkIntToScalar((bg_h.width() - icon.width()) / 2),
|
| - SkIntToScalar((bg_h.height() - icon.height()) / 2), &paint);
|
| - SetHoverIcon(bg_h);
|
| -
|
| - SkBitmap bg_p;
|
| - rb.GetBitmapNamed(IDR_BROWSER_ACTION_P)->copyTo(&bg_p,
|
| - SkBitmap::kARGB_8888_Config);
|
| - SkCanvas bg_p_canvas(bg_p);
|
| - bg_p_canvas.drawBitmap(icon,
|
| - SkIntToScalar((bg_p.width() - icon.width()) / 2),
|
| - SkIntToScalar((bg_p.height() - icon.height()) / 2), &paint);
|
| - SetPushedIcon(bg_p);
|
| + gfx::ImageSkia bg = *rb.GetImageSkiaNamed(IDR_BROWSER_ACTION);
|
| + SetIcon(gfx::ImageSkiaOperations::CreateSuperimposedImage(bg, icon));
|
| +
|
| + gfx::ImageSkia bg_h = *rb.GetImageSkiaNamed(IDR_BROWSER_ACTION_H);
|
| + SetHoverIcon(gfx::ImageSkiaOperations::CreateSuperimposedImage(bg_h, icon));
|
| +
|
| + gfx::ImageSkia bg_p = *rb.GetImageSkiaNamed(IDR_BROWSER_ACTION_P);
|
| + SetPushedIcon(
|
| + gfx::ImageSkiaOperations::CreateSuperimposedImage(bg_p, icon));
|
| }
|
|
|
| // If the browser action name is empty, show the extension name instead.
|
|
|