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

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: Rebase 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
« no previous file with comments | « ash/frame/default_header_painter.h ('k') | ash/frame/default_header_painter_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/frame/default_header_painter.cc
diff --git a/ash/frame/default_header_painter.cc b/ash/frame/default_header_painter.cc
index 236919f3c709e97c7cd1291c6e4de6e3da6710a7..72d720eb460a5f7d4e8ad831b2d4545112beac1d 100644
--- a/ash/frame/default_header_painter.cc
+++ b/ash/frame/default_header_painter.cc
@@ -39,6 +39,8 @@ const SkColor kHeaderContentSeparatorInactiveColor =
const SkColor kDefaultFrameColor = SkColorSetRGB(242, 242, 242);
// 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,
@@ -99,36 +101,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 {
@@ -143,6 +116,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)
@@ -181,7 +155,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 =
@@ -221,6 +195,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) {
@@ -311,20 +286,57 @@ void DefaultHeaderPainter::LayoutLeftHeaderView() {
}
}
-void DefaultHeaderPainter::UpdateSizeButtonImages() {
+bool DefaultHeaderPainter::ShouldUseLightImages() {
+ 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);
}
« no previous file with comments | « ash/frame/default_header_painter.h ('k') | ash/frame/default_header_painter_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698