| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h" | 5 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_toolbar_view.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ntp_background_util.h" | 7 #include "chrome/browser/ntp_background_util.h" |
| 8 #include "chrome/browser/themes/theme_service.h" | 8 #include "chrome/browser/themes/theme_service.h" |
| 9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" | 9 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_constants.h" |
| 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" | 10 #import "chrome/browser/ui/cocoa/bookmarks/bookmark_bar_controller.h" |
| 11 #import "chrome/browser/ui/cocoa/browser_window_controller.h" | 11 #import "chrome/browser/ui/cocoa/browser_window_controller.h" |
| 12 #import "chrome/browser/ui/cocoa/themed_window.h" | 12 #import "chrome/browser/ui/cocoa/themed_window.h" |
| 13 #include "ui/base/theme_provider.h" | 13 #include "ui/base/theme_provider.h" |
| 14 #include "ui/gfx/canvas_skia_paint.h" | 14 #include "ui/gfx/canvas_skia_paint.h" |
| 15 #include "ui/gfx/rect.h" | 15 #include "ui/gfx/rect.h" |
| 16 #include "ui/gfx/scoped_ns_graphics_context_state_mac.h" |
| 16 | 17 |
| 17 const CGFloat kBorderRadius = 3.0; | 18 const CGFloat kBorderRadius = 3.0; |
| 18 | 19 |
| 19 @interface BookmarkBarToolbarView (Private) | 20 @interface BookmarkBarToolbarView (Private) |
| 20 - (void)drawRectAsBubble:(NSRect)rect; | 21 - (void)drawRectAsBubble:(NSRect)rect; |
| 21 @end | 22 @end |
| 22 | 23 |
| 23 @implementation BookmarkBarToolbarView | 24 @implementation BookmarkBarToolbarView |
| 24 | 25 |
| 25 - (BOOL)isOpaque { | 26 - (BOOL)isOpaque { |
| (...skipping 23 matching lines...) Expand all Loading... |
| 49 // to morph the bubble to a regular bar (shape and colour). | 50 // to morph the bubble to a regular bar (shape and colour). |
| 50 CGFloat morph = [controller_ detachedMorphProgress]; | 51 CGFloat morph = [controller_ detachedMorphProgress]; |
| 51 | 52 |
| 52 NSRect bounds = [self bounds]; | 53 NSRect bounds = [self bounds]; |
| 53 | 54 |
| 54 ui::ThemeProvider* themeProvider = [controller_ themeProvider]; | 55 ui::ThemeProvider* themeProvider = [controller_ themeProvider]; |
| 55 if (!themeProvider) | 56 if (!themeProvider) |
| 56 return; | 57 return; |
| 57 | 58 |
| 58 NSGraphicsContext* context = [NSGraphicsContext currentContext]; | 59 NSGraphicsContext* context = [NSGraphicsContext currentContext]; |
| 59 [context saveGraphicsState]; | 60 gfx::ScopedNSGraphicsContextState scopedGState(context); |
| 60 | 61 |
| 61 // Draw the background. | 62 // Draw the background. |
| 62 { | 63 { |
| 63 // CanvasSkiaPaint draws to the NSGraphicsContext during its destructor, so | 64 // CanvasSkiaPaint draws to the NSGraphicsContext during its destructor, so |
| 64 // explicitly scope this. | 65 // explicitly scope this. |
| 65 // | 66 // |
| 66 // Paint the entire bookmark bar, even if the damage rect is much smaller | 67 // Paint the entire bookmark bar, even if the damage rect is much smaller |
| 67 // because PaintBackgroundDetachedMode() assumes that area's origin is | 68 // because PaintBackgroundDetachedMode() assumes that area's origin is |
| 68 // (0, 0) and that its size is the size of the bookmark bar. | 69 // (0, 0) and that its size is the size of the bookmark bar. |
| 69 // | 70 // |
| (...skipping 24 matching lines...) Expand all Loading... |
| 94 yRadius:(morph * kBorderRadius)]; | 95 yRadius:(morph * kBorderRadius)]; |
| 95 | 96 |
| 96 // Draw the rounded rectangle. | 97 // Draw the rounded rectangle. |
| 97 NSColor* toolbarColor = | 98 NSColor* toolbarColor = |
| 98 themeProvider->GetNSColor(ThemeService::COLOR_TOOLBAR, true); | 99 themeProvider->GetNSColor(ThemeService::COLOR_TOOLBAR, true); |
| 99 CGFloat alpha = morph * [toolbarColor alphaComponent]; | 100 CGFloat alpha = morph * [toolbarColor alphaComponent]; |
| 100 [[toolbarColor colorWithAlphaComponent:alpha] set]; // Set with opacity. | 101 [[toolbarColor colorWithAlphaComponent:alpha] set]; // Set with opacity. |
| 101 [border fill]; | 102 [border fill]; |
| 102 | 103 |
| 103 // Fade in/out the background. | 104 // Fade in/out the background. |
| 104 [context saveGraphicsState]; | 105 { |
| 105 [border setClip]; | 106 gfx::ScopedNSGraphicsContextState bgScopedState(context); |
| 106 CGContextRef cgContext = (CGContextRef)[context graphicsPort]; | 107 [border setClip]; |
| 107 CGContextBeginTransparencyLayer(cgContext, NULL); | 108 CGContextRef cgContext = (CGContextRef)[context graphicsPort]; |
| 108 CGContextSetAlpha(cgContext, 1 - morph); | 109 CGContextBeginTransparencyLayer(cgContext, NULL); |
| 109 [context setPatternPhase:[[self window] themePatternPhase]]; | 110 CGContextSetAlpha(cgContext, 1 - morph); |
| 110 [self drawBackground]; | 111 [context setPatternPhase:[[self window] themePatternPhase]]; |
| 111 CGContextEndTransparencyLayer(cgContext); | 112 [self drawBackground]; |
| 112 [context restoreGraphicsState]; | 113 CGContextEndTransparencyLayer(cgContext); |
| 114 } |
| 113 | 115 |
| 114 // Draw the border of the rounded rectangle. | 116 // Draw the border of the rounded rectangle. |
| 115 NSColor* borderColor = themeProvider->GetNSColor( | 117 NSColor* borderColor = themeProvider->GetNSColor( |
| 116 ThemeService::COLOR_TOOLBAR_BUTTON_STROKE, true); | 118 ThemeService::COLOR_TOOLBAR_BUTTON_STROKE, true); |
| 117 alpha = morph * [borderColor alphaComponent]; | 119 alpha = morph * [borderColor alphaComponent]; |
| 118 [[borderColor colorWithAlphaComponent:alpha] set]; // Set with opacity. | 120 [[borderColor colorWithAlphaComponent:alpha] set]; // Set with opacity. |
| 119 [border stroke]; | 121 [border stroke]; |
| 120 | 122 |
| 121 // Fade in/out the divider. | 123 // Fade in/out the divider. |
| 122 // TODO(viettrungluu): It's not obvious that this divider lines up exactly | 124 // TODO(viettrungluu): It's not obvious that this divider lines up exactly |
| 123 // with |BackgroundGradientView|'s (in fact, it probably doesn't). | 125 // with |BackgroundGradientView|'s (in fact, it probably doesn't). |
| 124 NSColor* strokeColor = [self strokeColor]; | 126 NSColor* strokeColor = [self strokeColor]; |
| 125 alpha = (1 - morph) * [strokeColor alphaComponent]; | 127 alpha = (1 - morph) * [strokeColor alphaComponent]; |
| 126 [[strokeColor colorWithAlphaComponent:alpha] set]; | 128 [[strokeColor colorWithAlphaComponent:alpha] set]; |
| 127 NSBezierPath* divider = [NSBezierPath bezierPath]; | 129 NSBezierPath* divider = [NSBezierPath bezierPath]; |
| 128 NSPoint dividerStart = | 130 NSPoint dividerStart = |
| 129 NSMakePoint(morph * bookmarks::kNTPBookmarkBarPadding + morph * 0.5, | 131 NSMakePoint(morph * bookmarks::kNTPBookmarkBarPadding + morph * 0.5, |
| 130 morph * bookmarks::kNTPBookmarkBarPadding + morph * 0.5); | 132 morph * bookmarks::kNTPBookmarkBarPadding + morph * 0.5); |
| 131 CGFloat dividerWidth = | 133 CGFloat dividerWidth = |
| 132 NSWidth(bounds) - 2 * morph * bookmarks::kNTPBookmarkBarPadding - 2 * 0.5; | 134 NSWidth(bounds) - 2 * morph * bookmarks::kNTPBookmarkBarPadding - 2 * 0.5; |
| 133 [divider moveToPoint:dividerStart]; | 135 [divider moveToPoint:dividerStart]; |
| 134 [divider relativeLineToPoint:NSMakePoint(dividerWidth, 0)]; | 136 [divider relativeLineToPoint:NSMakePoint(dividerWidth, 0)]; |
| 135 [divider stroke]; | 137 [divider stroke]; |
| 136 | |
| 137 // Restore the graphics context. | |
| 138 [context restoreGraphicsState]; | |
| 139 } | 138 } |
| 140 | 139 |
| 141 @end // @implementation BookmarkBarToolbarView | 140 @end // @implementation BookmarkBarToolbarView |
| OLD | NEW |