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

Unified Diff: ash/frame/default_header_painter.cc

Issue 934503002: Ash frames: dark frames now use white caption buttons. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: ash_unittests Created 5 years, 10 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: ash/frame/default_header_painter.cc
diff --git a/ash/frame/default_header_painter.cc b/ash/frame/default_header_painter.cc
index 125cb510e2c161da0730ab929f8529cdaea95fad..ca253d3a3b1084db3be3a81ae29500a24fbec321 100644
--- a/ash/frame/default_header_painter.cc
+++ b/ash/frame/default_header_painter.cc
@@ -41,6 +41,8 @@ const SkColor kDefaultFrameColor = SkColorSetRGB(242, 242, 242);
const SkAlpha kInactiveFrameAlpha = 204;
// Duration of crossfade animation for activating and deactivating frame.
const int kActivationCrossfadeDurationMs = 200;
+// Luminance below which to use white caption buttons.
+const int kMaxLuminanceForLightButtons = 125;
// Tiles an image into an area, rounding the top corners.
void TileRoundRect(gfx::Canvas* canvas,
@@ -101,36 +103,7 @@ void DefaultHeaderPainter::Init(
frame_ = frame;
view_ = header_view;
caption_button_container_ = caption_button_container;
-
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_MINIMIZE,
- IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE,
- IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_I,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
- UpdateSizeButtonImages();
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_CLOSE,
- IDR_AURA_WINDOW_CONTROL_ICON_CLOSE,
- IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_I,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
-
- // There is no dedicated icon for the snap-left and snap-right buttons
- // when |frame_| is inactive because they should never be visible while
- // |frame_| is inactive.
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
- caption_button_container_->SetButtonImages(
- CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
- IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+ UpdateAllButtonImages();
}
int DefaultHeaderPainter::GetMinimumHeaderWidth() const {
@@ -145,6 +118,7 @@ void DefaultHeaderPainter::PaintHeader(gfx::Canvas* canvas, Mode mode) {
mode_ = mode;
if (mode_ != old_mode) {
+ UpdateAllButtonImages();
if (!initial_paint_ && HeaderPainterUtil::CanAnimateActivation(frame_)) {
activation_animation_->SetSlideDuration(kActivationCrossfadeDurationMs);
if (mode_ == MODE_ACTIVE)
@@ -183,7 +157,7 @@ void DefaultHeaderPainter::PaintHeader(gfx::Canvas* canvas, Mode mode) {
}
void DefaultHeaderPainter::LayoutHeader() {
- UpdateSizeButtonImages();
+ UpdateSizeButtonImages(ShouldUseLightImages());
caption_button_container_->Layout();
gfx::Size caption_button_container_size =
@@ -223,6 +197,7 @@ void DefaultHeaderPainter::SetFrameColors(SkColor active_frame_color,
SkColor inactive_frame_color) {
active_frame_color_ = active_frame_color;
inactive_frame_color_ = inactive_frame_color;
+ UpdateAllButtonImages();
}
void DefaultHeaderPainter::UpdateLeftHeaderView(views::View* left_header_view) {
@@ -313,20 +288,57 @@ void DefaultHeaderPainter::LayoutLeftHeaderView() {
}
}
-void DefaultHeaderPainter::UpdateSizeButtonImages() {
+bool DefaultHeaderPainter::ShouldUseLightImages() {
James Cook 2015/02/17 22:16:55 Can you add a little test for this? It would be ni
benwells 2015/02/18 07:08:46 Done.
+ int luminance = color_utils::GetLuminanceForColor(
+ mode_ == MODE_INACTIVE ? inactive_frame_color_ : active_frame_color_);
+ return luminance < kMaxLuminanceForLightButtons;
+}
+
+void DefaultHeaderPainter::UpdateAllButtonImages() {
+ bool use_light_images = ShouldUseLightImages();
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_MINIMIZE,
+ use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+
+ UpdateSizeButtonImages(use_light_images);
+
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_CLOSE,
+ use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_CLOSE,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_LEFT_SNAPPED,
+ use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+
+ caption_button_container_->SetButtonImages(
+ CAPTION_BUTTON_ICON_RIGHT_SNAPPED,
+ use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
+ IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
+}
+
+void DefaultHeaderPainter::UpdateSizeButtonImages(bool use_light_images) {
int icon_id = 0;
- int inactive_icon_id = 0;
if (frame_->IsMaximized() || frame_->IsFullscreen()) {
- icon_id = IDR_AURA_WINDOW_CONTROL_ICON_RESTORE;
- inactive_icon_id = IDR_AURA_WINDOW_CONTROL_ICON_RESTORE_I;
+ icon_id = use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_RESTORE_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_RESTORE;
} else {
- icon_id = IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE;
- inactive_icon_id = IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE_I;
+ icon_id = use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE_WHITE
+ : IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE;
}
caption_button_container_->SetButtonImages(
CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE,
icon_id,
- inactive_icon_id,
IDR_AURA_WINDOW_CONTROL_BACKGROUND_H,
IDR_AURA_WINDOW_CONTROL_BACKGROUND_P);
}

Powered by Google App Engine
This is Rietveld 408576698