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

Unified Diff: ui/message_center/views/message_view.cc

Issue 308053004: Add appIconMask to notification API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed comments Created 6 years, 5 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
« no previous file with comments | « ui/message_center/views/message_view.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/message_center/views/message_view.cc
diff --git a/ui/message_center/views/message_view.cc b/ui/message_center/views/message_view.cc
index 11ff5485f86612ed4314d70b68a786060404df56..3b8900c35a945aa9f1c6ae4018857d7309db9818 100644
--- a/ui/message_center/views/message_view.cc
+++ b/ui/message_center/views/message_view.cc
@@ -12,6 +12,7 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/compositor/scoped_layer_animation_settings.h"
#include "ui/gfx/canvas.h"
+#include "ui/gfx/image/image_skia_operations.h"
#include "ui/message_center/message_center.h"
#include "ui/message_center/message_center_style.h"
#include "ui/message_center/views/padded_button.h"
@@ -31,6 +32,31 @@ const int kCloseIconRightPadding = 5;
const int kShadowOffset = 1;
const int kShadowBlur = 4;
+const gfx::ImageSkia CreateImage(int width, int height, SkColor color) {
+ SkBitmap bitmap;
+ bitmap.allocN32Pixels(width, height);
+ bitmap.eraseColor(color);
+ return gfx::ImageSkia::CreateFrom1xBitmap(bitmap);
+}
+
+// Take the alpha channel of small_image, mask it with the foreground,
+// then add the masked foreground on top of the background
+const gfx::ImageSkia GetMaskedSmallImage(const gfx::ImageSkia& small_image) {
+ int width = small_image.width();
+ int height = small_image.height();
+
+ // Background color grey
+ const gfx::ImageSkia background = CreateImage(
+ width, height, message_center::kSmallImageMaskBackgroundColor);
+ // Foreground color white
+ const gfx::ImageSkia foreground = CreateImage(
+ width, height, message_center::kSmallImageMaskForegroundColor);
+ const gfx::ImageSkia masked_small_image =
+ gfx::ImageSkiaOperations::CreateMaskedImage(foreground, small_image);
+ return gfx::ImageSkiaOperations::CreateSuperimposedImage(background,
+ masked_small_image);
+}
+
} // namespace
namespace message_center {
@@ -54,8 +80,9 @@ MessageView::MessageView(MessageViewController* controller,
views::Background::CreateSolidBackground(kNotificationBackgroundColor));
AddChildView(background_view_);
+ const gfx::ImageSkia masked_small_image = GetMaskedSmallImage(small_image);
views::ImageView* small_image_view = new views::ImageView();
- small_image_view->SetImage(small_image);
+ small_image_view->SetImage(masked_small_image);
small_image_view->SetImageSize(gfx::Size(kSmallImageSize, kSmallImageSize));
// The small image view should be added to view hierarchy by the derived
// class. This ensures that it is on top of other views.
@@ -84,7 +111,9 @@ MessageView::~MessageView() {
}
void MessageView::UpdateWithNotification(const Notification& notification) {
- small_image_view_->SetImage(notification.small_image().AsImageSkia());
+ const gfx::ImageSkia masked_small_image =
+ GetMaskedSmallImage(notification.small_image().AsImageSkia());
+ small_image_view_->SetImage(masked_small_image);
display_source_ = notification.display_source();
}
« no previous file with comments | « ui/message_center/views/message_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698