| 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 "chrome/browser/ui/views/frame/browser_header_painter_ash.h" | 5 #include "chrome/browser/ui/views/frame/browser_header_painter_ash.h" |
| 6 | 6 |
| 7 #include "ash/common/ash_layout_constants.h" | 7 #include "ash/common/ash_layout_constants.h" |
| 8 #include "ash/common/frame/caption_buttons/frame_caption_button_container_view.h
" | 8 #include "ash/common/frame/caption_buttons/frame_caption_button_container_view.h
" |
| 9 #include "ash/common/frame/header_painter_util.h" | 9 #include "ash/common/frame/header_painter_util.h" |
| 10 #include "base/logging.h" // DCHECK | 10 #include "base/logging.h" // DCHECK |
| 11 #include "chrome/browser/themes/theme_properties.h" | 11 #include "chrome/browser/themes/theme_properties.h" |
| 12 #include "chrome/browser/ui/browser.h" | 12 #include "chrome/browser/ui/browser.h" |
| 13 #include "chrome/browser/ui/views/frame/browser_frame.h" | 13 #include "chrome/browser/ui/views/frame/browser_frame.h" |
| 14 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h" | 14 #include "chrome/browser/ui/views/frame/browser_non_client_frame_view_ash.h" |
| 15 #include "chrome/browser/ui/views/frame/browser_view.h" | 15 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 16 #include "chrome/grit/theme_resources.h" | |
| 17 #include "third_party/skia/include/core/SkCanvas.h" | 16 #include "third_party/skia/include/core/SkCanvas.h" |
| 18 #include "third_party/skia/include/core/SkColor.h" | 17 #include "third_party/skia/include/core/SkColor.h" |
| 19 #include "third_party/skia/include/core/SkPaint.h" | 18 #include "third_party/skia/include/core/SkPaint.h" |
| 20 #include "third_party/skia/include/core/SkPath.h" | 19 #include "third_party/skia/include/core/SkPath.h" |
| 21 #include "ui/base/material_design/material_design_controller.h" | |
| 22 #include "ui/base/resource/resource_bundle.h" | |
| 23 #include "ui/base/theme_provider.h" | |
| 24 #include "ui/gfx/animation/slide_animation.h" | 20 #include "ui/gfx/animation/slide_animation.h" |
| 25 #include "ui/gfx/canvas.h" | 21 #include "ui/gfx/canvas.h" |
| 26 #include "ui/gfx/geometry/rect.h" | 22 #include "ui/gfx/geometry/rect.h" |
| 27 #include "ui/gfx/image/image_skia.h" | 23 #include "ui/gfx/image/image_skia.h" |
| 28 #include "ui/gfx/skia_util.h" | 24 #include "ui/gfx/skia_util.h" |
| 29 #include "ui/gfx/vector_icons_public.h" | 25 #include "ui/gfx/vector_icons_public.h" |
| 30 #include "ui/views/view.h" | 26 #include "ui/views/view.h" |
| 31 #include "ui/views/widget/widget.h" | 27 #include "ui/views/widget/widget.h" |
| 32 #include "ui/views/widget/widget_delegate.h" | 28 #include "ui/views/widget/widget_delegate.h" |
| 33 | 29 |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 activation_animation_->Reset(1); | 177 activation_animation_->Reset(1); |
| 182 else | 178 else |
| 183 activation_animation_->Reset(0); | 179 activation_animation_->Reset(0); |
| 184 } | 180 } |
| 185 initial_paint_ = false; | 181 initial_paint_ = false; |
| 186 } | 182 } |
| 187 | 183 |
| 188 PaintFrameImages(canvas, false); | 184 PaintFrameImages(canvas, false); |
| 189 PaintFrameImages(canvas, true); | 185 PaintFrameImages(canvas, true); |
| 190 | 186 |
| 191 if (!ui::MaterialDesignController::IsModeMaterial() && | |
| 192 !frame_->IsMaximized() && | |
| 193 !frame_->IsFullscreen()) { | |
| 194 PaintHighlightForRestoredWindow(canvas); | |
| 195 } | |
| 196 | |
| 197 if (frame_->widget_delegate() && | 187 if (frame_->widget_delegate() && |
| 198 frame_->widget_delegate()->ShouldShowWindowTitle()) { | 188 frame_->widget_delegate()->ShouldShowWindowTitle()) { |
| 199 PaintTitleBar(canvas); | 189 PaintTitleBar(canvas); |
| 200 } | 190 } |
| 201 } | 191 } |
| 202 | 192 |
| 203 void BrowserHeaderPainterAsh::LayoutHeader() { | 193 void BrowserHeaderPainterAsh::LayoutHeader() { |
| 204 // Purposefully set |painted_height_| to an invalid value. We cannot use | 194 // Purposefully set |painted_height_| to an invalid value. We cannot use |
| 205 // |painted_height_| because the computation of |painted_height_| may depend | 195 // |painted_height_| because the computation of |painted_height_| may depend |
| 206 // on having laid out the window controls. | 196 // on having laid out the window controls. |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 276 | 266 |
| 277 SkPaint paint; | 267 SkPaint paint; |
| 278 paint.setBlendMode(SkBlendMode::kPlus); | 268 paint.setBlendMode(SkBlendMode::kPlus); |
| 279 paint.setAlpha(alpha); | 269 paint.setAlpha(alpha); |
| 280 paint.setColor(SkColorSetA(view_->GetFrameColor(active), alpha)); | 270 paint.setColor(SkColorSetA(view_->GetFrameColor(active), alpha)); |
| 281 PaintFrameImagesInRoundRect( | 271 PaintFrameImagesInRoundRect( |
| 282 canvas, frame_image, frame_overlay_image, paint, GetPaintedBounds(), | 272 canvas, frame_image, frame_overlay_image, paint, GetPaintedBounds(), |
| 283 corner_radius, ash::HeaderPainterUtil::GetThemeBackgroundXInset()); | 273 corner_radius, ash::HeaderPainterUtil::GetThemeBackgroundXInset()); |
| 284 } | 274 } |
| 285 | 275 |
| 286 void BrowserHeaderPainterAsh::PaintHighlightForRestoredWindow( | |
| 287 gfx::Canvas* canvas) { | |
| 288 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | |
| 289 gfx::ImageSkia top_left_corner = *rb.GetImageSkiaNamed( | |
| 290 IDR_ASH_BROWSER_WINDOW_HEADER_SHADE_TOP_LEFT); | |
| 291 gfx::ImageSkia top_right_corner = *rb.GetImageSkiaNamed( | |
| 292 IDR_ASH_BROWSER_WINDOW_HEADER_SHADE_TOP_RIGHT); | |
| 293 gfx::ImageSkia top_edge = *rb.GetImageSkiaNamed( | |
| 294 IDR_ASH_BROWSER_WINDOW_HEADER_SHADE_TOP); | |
| 295 gfx::ImageSkia left_edge = *rb.GetImageSkiaNamed( | |
| 296 IDR_ASH_BROWSER_WINDOW_HEADER_SHADE_LEFT); | |
| 297 gfx::ImageSkia right_edge = *rb.GetImageSkiaNamed( | |
| 298 IDR_ASH_BROWSER_WINDOW_HEADER_SHADE_RIGHT); | |
| 299 | |
| 300 int top_left_width = top_left_corner.width(); | |
| 301 int top_left_height = top_left_corner.height(); | |
| 302 canvas->DrawImageInt(top_left_corner, 0, 0); | |
| 303 | |
| 304 int top_right_width = top_right_corner.width(); | |
| 305 int top_right_height = top_right_corner.height(); | |
| 306 canvas->DrawImageInt(top_right_corner, | |
| 307 view_->width() - top_right_width, | |
| 308 0); | |
| 309 | |
| 310 canvas->TileImageInt( | |
| 311 top_edge, | |
| 312 top_left_width, | |
| 313 0, | |
| 314 view_->width() - top_left_width - top_right_width, | |
| 315 top_edge.height()); | |
| 316 | |
| 317 canvas->TileImageInt(left_edge, | |
| 318 0, | |
| 319 top_left_height, | |
| 320 left_edge.width(), | |
| 321 painted_height_ - top_left_height); | |
| 322 | |
| 323 canvas->TileImageInt(right_edge, | |
| 324 view_->width() - right_edge.width(), | |
| 325 top_right_height, | |
| 326 right_edge.width(), | |
| 327 painted_height_ - top_right_height); | |
| 328 } | |
| 329 | |
| 330 void BrowserHeaderPainterAsh::PaintTitleBar(gfx::Canvas* canvas) { | 276 void BrowserHeaderPainterAsh::PaintTitleBar(gfx::Canvas* canvas) { |
| 331 // The window icon is painted by its own views::View. | 277 // The window icon is painted by its own views::View. |
| 332 gfx::Rect title_bounds = GetTitleBounds(); | 278 gfx::Rect title_bounds = GetTitleBounds(); |
| 333 title_bounds.set_x(view_->GetMirroredXForRect(title_bounds)); | 279 title_bounds.set_x(view_->GetMirroredXForRect(title_bounds)); |
| 334 canvas->DrawStringRectWithFlags(frame_->widget_delegate()->GetWindowTitle(), | 280 canvas->DrawStringRectWithFlags(frame_->widget_delegate()->GetWindowTitle(), |
| 335 BrowserFrame::GetTitleFontList(), | 281 BrowserFrame::GetTitleFontList(), |
| 336 is_incognito_ ? kIncognitoWindowTitleTextColor | 282 is_incognito_ ? kIncognitoWindowTitleTextColor |
| 337 : kNormalWindowTitleTextColor, | 283 : kNormalWindowTitleTextColor, |
| 338 title_bounds, | 284 title_bounds, |
| 339 gfx::Canvas::NO_SUBPIXEL_RENDERING); | 285 gfx::Canvas::NO_SUBPIXEL_RENDERING); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 367 } | 313 } |
| 368 | 314 |
| 369 gfx::Rect BrowserHeaderPainterAsh::GetPaintedBounds() const { | 315 gfx::Rect BrowserHeaderPainterAsh::GetPaintedBounds() const { |
| 370 return gfx::Rect(view_->width(), painted_height_); | 316 return gfx::Rect(view_->width(), painted_height_); |
| 371 } | 317 } |
| 372 | 318 |
| 373 gfx::Rect BrowserHeaderPainterAsh::GetTitleBounds() const { | 319 gfx::Rect BrowserHeaderPainterAsh::GetTitleBounds() const { |
| 374 return ash::HeaderPainterUtil::GetTitleBounds(window_icon_, | 320 return ash::HeaderPainterUtil::GetTitleBounds(window_icon_, |
| 375 caption_button_container_, BrowserFrame::GetTitleFontList()); | 321 caption_button_container_, BrowserFrame::GetTitleFontList()); |
| 376 } | 322 } |
| OLD | NEW |