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

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: changed name smallIconto appIconMask Created 6 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
« 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..980c375d01f67a6d8484664c620921b5a9b393a8 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"
@@ -33,6 +34,35 @@ const int kShadowBlur = 4;
} // namespace
+namespace {
dewittj 2014/06/27 02:43:56 Just combine the two unnamed namespaces
liyanhou 2014/06/27 03:18:40 Done.
+const gfx::ImageSkia CreateImage(int width, int height, SkColor color) {
+ SkBitmap bitmap;
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, width, height);
+ bitmap.allocPixels();
+ 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 {
MessageView::MessageView(MessageViewController* controller,
@@ -54,8 +84,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 +115,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