| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/frame/default_header_painter.h" | 5 #include "ash/frame/default_header_painter.h" |
| 6 | 6 |
| 7 #include "ash/ash_layout_constants.h" | 7 #include "ash/ash_layout_constants.h" |
| 8 #include "ash/frame/caption_buttons/frame_caption_button_container_view.h" | 8 #include "ash/frame/caption_buttons/frame_caption_button_container_view.h" |
| 9 #include "ash/frame/header_painter_util.h" | 9 #include "ash/frame/header_painter_util.h" |
| 10 #include "base/debug/leak_annotations.h" | 10 #include "base/debug/leak_annotations.h" |
| 11 #include "base/logging.h" // DCHECK | 11 #include "base/logging.h" // DCHECK |
| 12 #include "grit/ash_resources.h" | 12 #include "grit/ash_resources.h" |
| 13 #include "third_party/skia/include/core/SkPaint.h" | 13 #include "third_party/skia/include/core/SkPaint.h" |
| 14 #include "third_party/skia/include/core/SkPath.h" | 14 #include "third_party/skia/include/core/SkPath.h" |
| 15 #include "ui/base/resource/resource_bundle.h" | 15 #include "ui/base/resource/resource_bundle.h" |
| 16 #include "ui/gfx/animation/slide_animation.h" | 16 #include "ui/gfx/animation/slide_animation.h" |
| 17 #include "ui/gfx/canvas.h" | 17 #include "ui/gfx/canvas.h" |
| 18 #include "ui/gfx/color_utils.h" | 18 #include "ui/gfx/color_utils.h" |
| 19 #include "ui/gfx/font_list.h" | 19 #include "ui/gfx/font_list.h" |
| 20 #include "ui/gfx/geometry/rect.h" | 20 #include "ui/gfx/geometry/rect.h" |
| 21 #include "ui/gfx/image/image.h" | 21 #include "ui/gfx/image/image.h" |
| 22 #include "ui/gfx/scoped_canvas.h" | 22 #include "ui/gfx/scoped_canvas.h" |
| 23 #include "ui/gfx/skia_util.h" | 23 #include "ui/gfx/skia_util.h" |
| 24 #include "ui/gfx/vector_icons_public.h" |
| 24 #include "ui/views/view.h" | 25 #include "ui/views/view.h" |
| 25 #include "ui/views/widget/native_widget_aura.h" | 26 #include "ui/views/widget/native_widget_aura.h" |
| 26 #include "ui/views/widget/widget.h" | 27 #include "ui/views/widget/widget.h" |
| 27 #include "ui/views/widget/widget_delegate.h" | 28 #include "ui/views/widget/widget_delegate.h" |
| 28 | 29 |
| 29 using views::Widget; | 30 using views::Widget; |
| 30 | 31 |
| 31 namespace { | 32 namespace { |
| 32 | 33 |
| 33 // Color for the window title text. | 34 // Color for the window title text. |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 151 } | 152 } |
| 152 if (frame_->widget_delegate() && | 153 if (frame_->widget_delegate() && |
| 153 frame_->widget_delegate()->ShouldShowWindowTitle()) { | 154 frame_->widget_delegate()->ShouldShowWindowTitle()) { |
| 154 PaintTitleBar(canvas); | 155 PaintTitleBar(canvas); |
| 155 } | 156 } |
| 156 if (!UsesCustomFrameColors()) | 157 if (!UsesCustomFrameColors()) |
| 157 PaintHeaderContentSeparator(canvas); | 158 PaintHeaderContentSeparator(canvas); |
| 158 } | 159 } |
| 159 | 160 |
| 160 void DefaultHeaderPainter::LayoutHeader() { | 161 void DefaultHeaderPainter::LayoutHeader() { |
| 161 UpdateSizeButtonImages(ShouldUseLightImages()); | 162 caption_button_container_->SetUseLightImages(ShouldUseLightImages()); |
| 163 UpdateSizeButtonImages(); |
| 162 caption_button_container_->Layout(); | 164 caption_button_container_->Layout(); |
| 163 | 165 |
| 164 gfx::Size caption_button_container_size = | 166 gfx::Size caption_button_container_size = |
| 165 caption_button_container_->GetPreferredSize(); | 167 caption_button_container_->GetPreferredSize(); |
| 166 caption_button_container_->SetBounds( | 168 caption_button_container_->SetBounds( |
| 167 view_->width() - caption_button_container_size.width(), | 169 view_->width() - caption_button_container_size.width(), |
| 168 0, | 170 0, |
| 169 caption_button_container_size.width(), | 171 caption_button_container_size.width(), |
| 170 caption_button_container_size.height()); | 172 caption_button_container_size.height()); |
| 171 | 173 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 } | 290 } |
| 289 } | 291 } |
| 290 | 292 |
| 291 bool DefaultHeaderPainter::ShouldUseLightImages() { | 293 bool DefaultHeaderPainter::ShouldUseLightImages() { |
| 292 int luminance = color_utils::GetLuminanceForColor( | 294 int luminance = color_utils::GetLuminanceForColor( |
| 293 mode_ == MODE_INACTIVE ? inactive_frame_color_ : active_frame_color_); | 295 mode_ == MODE_INACTIVE ? inactive_frame_color_ : active_frame_color_); |
| 294 return luminance < kMaxLuminanceForLightButtons; | 296 return luminance < kMaxLuminanceForLightButtons; |
| 295 } | 297 } |
| 296 | 298 |
| 297 void DefaultHeaderPainter::UpdateAllButtonImages() { | 299 void DefaultHeaderPainter::UpdateAllButtonImages() { |
| 298 bool use_light_images = ShouldUseLightImages(); | 300 caption_button_container_->SetUseLightImages(ShouldUseLightImages()); |
| 299 caption_button_container_->SetButtonImage( | 301 caption_button_container_->SetButtonImage( |
| 300 CAPTION_BUTTON_ICON_MINIMIZE, | 302 CAPTION_BUTTON_ICON_MINIMIZE, gfx::VectorIconId::WINDOW_CONTROL_MINIMIZE); |
| 301 use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE_WHITE | |
| 302 : IDR_AURA_WINDOW_CONTROL_ICON_MINIMIZE); | |
| 303 | 303 |
| 304 UpdateSizeButtonImages(use_light_images); | 304 UpdateSizeButtonImages(); |
| 305 | 305 |
| 306 caption_button_container_->SetButtonImage( | 306 caption_button_container_->SetButtonImage( |
| 307 CAPTION_BUTTON_ICON_CLOSE, use_light_images | 307 CAPTION_BUTTON_ICON_CLOSE, gfx::VectorIconId::WINDOW_CONTROL_CLOSE); |
| 308 ? IDR_AURA_WINDOW_CONTROL_ICON_CLOSE_WHITE | |
| 309 : IDR_AURA_WINDOW_CONTROL_ICON_CLOSE); | |
| 310 | 308 |
| 311 caption_button_container_->SetButtonImage( | 309 caption_button_container_->SetButtonImage( |
| 312 CAPTION_BUTTON_ICON_LEFT_SNAPPED, | 310 CAPTION_BUTTON_ICON_LEFT_SNAPPED, |
| 313 use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED_WHITE | 311 gfx::VectorIconId::WINDOW_CONTROL_LEFT_SNAPPED); |
| 314 : IDR_AURA_WINDOW_CONTROL_ICON_LEFT_SNAPPED); | |
| 315 | 312 |
| 316 caption_button_container_->SetButtonImage( | 313 caption_button_container_->SetButtonImage( |
| 317 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, | 314 CAPTION_BUTTON_ICON_RIGHT_SNAPPED, |
| 318 use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED_WHITE | 315 gfx::VectorIconId::WINDOW_CONTROL_RIGHT_SNAPPED); |
| 319 : IDR_AURA_WINDOW_CONTROL_ICON_RIGHT_SNAPPED); | |
| 320 } | 316 } |
| 321 | 317 |
| 322 void DefaultHeaderPainter::UpdateSizeButtonImages(bool use_light_images) { | 318 void DefaultHeaderPainter::UpdateSizeButtonImages() { |
| 323 int icon_id = 0; | 319 gfx::VectorIconId icon_id = frame_->IsMaximized() || frame_->IsFullscreen() |
| 324 if (frame_->IsMaximized() || frame_->IsFullscreen()) { | 320 ? gfx::VectorIconId::WINDOW_CONTROL_RESTORE |
| 325 icon_id = use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_RESTORE_WHITE | 321 : gfx::VectorIconId::WINDOW_CONTROL_MAXIMIZE; |
| 326 : IDR_AURA_WINDOW_CONTROL_ICON_RESTORE; | |
| 327 } else { | |
| 328 icon_id = use_light_images ? IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE_WHITE | |
| 329 : IDR_AURA_WINDOW_CONTROL_ICON_MAXIMIZE; | |
| 330 } | |
| 331 caption_button_container_->SetButtonImage( | 322 caption_button_container_->SetButtonImage( |
| 332 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, icon_id); | 323 CAPTION_BUTTON_ICON_MAXIMIZE_RESTORE, icon_id); |
| 333 } | 324 } |
| 334 | 325 |
| 335 gfx::Rect DefaultHeaderPainter::GetLocalBounds() const { | 326 gfx::Rect DefaultHeaderPainter::GetLocalBounds() const { |
| 336 return gfx::Rect(view_->width(), painted_height_); | 327 return gfx::Rect(view_->width(), painted_height_); |
| 337 } | 328 } |
| 338 | 329 |
| 339 gfx::Rect DefaultHeaderPainter::GetTitleBounds() const { | 330 gfx::Rect DefaultHeaderPainter::GetTitleBounds() const { |
| 340 return HeaderPainterUtil::GetTitleBounds( | 331 return HeaderPainterUtil::GetTitleBounds( |
| 341 left_header_view_, caption_button_container_, GetTitleFontList()); | 332 left_header_view_, caption_button_container_, GetTitleFontList()); |
| 342 } | 333 } |
| 343 | 334 |
| 344 bool DefaultHeaderPainter::UsesCustomFrameColors() const { | 335 bool DefaultHeaderPainter::UsesCustomFrameColors() const { |
| 345 return active_frame_color_ != kDefaultFrameColor || | 336 return active_frame_color_ != kDefaultFrameColor || |
| 346 inactive_frame_color_ != kDefaultFrameColor; | 337 inactive_frame_color_ != kDefaultFrameColor; |
| 347 } | 338 } |
| 348 | 339 |
| 349 } // namespace ash | 340 } // namespace ash |
| OLD | NEW |