Chromium Code Reviews| 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); |
| } |