| 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/dock_icon.h" | 5 #import "chrome/browser/ui/cocoa/dock_icon.h" |
| 6 | 6 |
| 7 #include "base/memory/scoped_nsobject.h" | 7 #include "base/memory/scoped_nsobject.h" |
| 8 #include "ui/gfx/scoped_ns_graphics_context_state_mac.h" |
| 8 | 9 |
| 9 // The fraction of the size of the dock icon that the badge is. | 10 // The fraction of the size of the dock icon that the badge is. |
| 10 static const float kBadgeFraction = 0.4f; | 11 static const float kBadgeFraction = 0.4f; |
| 11 | 12 |
| 12 // The indentation of the badge. | 13 // The indentation of the badge. |
| 13 static const float kBadgeIndent = 5.0f; | 14 static const float kBadgeIndent = 5.0f; |
| 14 | 15 |
| 15 // A view that draws our dock tile. | 16 // A view that draws our dock tile. |
| 16 @interface DockTileView : NSView { | 17 @interface DockTileView : NSView { |
| 17 @private | 18 @private |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 green:0.85 | 71 green:0.85 |
| 71 blue:0.85 | 72 blue:0.85 |
| 72 alpha:1.0]; | 73 alpha:1.0]; |
| 73 NSColor* backgroundHighlight = | 74 NSColor* backgroundHighlight = |
| 74 [backgroundColor blendedColorWithFraction:0.85 | 75 [backgroundColor blendedColorWithFraction:0.85 |
| 75 ofColor:[NSColor whiteColor]]; | 76 ofColor:[NSColor whiteColor]]; |
| 76 scoped_nsobject<NSGradient> backgroundGradient( | 77 scoped_nsobject<NSGradient> backgroundGradient( |
| 77 [[NSGradient alloc] initWithStartingColor:backgroundHighlight | 78 [[NSGradient alloc] initWithStartingColor:backgroundHighlight |
| 78 endingColor:backgroundColor]); | 79 endingColor:backgroundColor]); |
| 79 NSBezierPath* badgeEdge = [NSBezierPath bezierPathWithOvalInRect:badgeRect]; | 80 NSBezierPath* badgeEdge = [NSBezierPath bezierPathWithOvalInRect:badgeRect]; |
| 80 [NSGraphicsContext saveGraphicsState]; | 81 { |
| 81 [badgeEdge addClip]; | 82 gfx::ScopedNSGraphicsContextState scopedGState; |
| 82 [backgroundGradient drawFromCenter:badgeCenter | 83 [badgeEdge addClip]; |
| 83 radius:0.0 | 84 [backgroundGradient drawFromCenter:badgeCenter |
| 84 toCenter:badgeCenter | 85 radius:0.0 |
| 85 radius:badgeRadius | 86 toCenter:badgeCenter |
| 86 options:0]; | 87 radius:badgeRadius |
| 87 [NSGraphicsContext restoreGraphicsState]; | 88 options:0]; |
| 89 } |
| 88 | 90 |
| 89 // Slice | 91 // Slice |
| 90 if (!indeterminate_) { | 92 if (!indeterminate_) { |
| 91 NSColor* sliceColor = [NSColor colorWithCalibratedRed:0.45 | 93 NSColor* sliceColor = [NSColor colorWithCalibratedRed:0.45 |
| 92 green:0.8 | 94 green:0.8 |
| 93 blue:0.25 | 95 blue:0.25 |
| 94 alpha:1.0]; | 96 alpha:1.0]; |
| 95 NSColor* sliceHighlight = | 97 NSColor* sliceHighlight = |
| 96 [sliceColor blendedColorWithFraction:0.4 | 98 [sliceColor blendedColorWithFraction:0.4 |
| 97 ofColor:[NSColor whiteColor]]; | 99 ofColor:[NSColor whiteColor]]; |
| 98 scoped_nsobject<NSGradient> sliceGradient( | 100 scoped_nsobject<NSGradient> sliceGradient( |
| 99 [[NSGradient alloc] initWithStartingColor:sliceHighlight | 101 [[NSGradient alloc] initWithStartingColor:sliceHighlight |
| 100 endingColor:sliceColor]); | 102 endingColor:sliceColor]); |
| 101 NSBezierPath* progressSlice; | 103 NSBezierPath* progressSlice; |
| 102 if (progress_ >= 1.0) { | 104 if (progress_ >= 1.0) { |
| 103 progressSlice = [NSBezierPath bezierPathWithOvalInRect:badgeRect]; | 105 progressSlice = [NSBezierPath bezierPathWithOvalInRect:badgeRect]; |
| 104 } else { | 106 } else { |
| 105 CGFloat endAngle = 90.0 - 360.0 * progress_; | 107 CGFloat endAngle = 90.0 - 360.0 * progress_; |
| 106 if (endAngle < 0.0) | 108 if (endAngle < 0.0) |
| 107 endAngle += 360.0; | 109 endAngle += 360.0; |
| 108 progressSlice = [NSBezierPath bezierPath]; | 110 progressSlice = [NSBezierPath bezierPath]; |
| 109 [progressSlice moveToPoint:badgeCenter]; | 111 [progressSlice moveToPoint:badgeCenter]; |
| 110 [progressSlice appendBezierPathWithArcWithCenter:badgeCenter | 112 [progressSlice appendBezierPathWithArcWithCenter:badgeCenter |
| 111 radius:badgeRadius | 113 radius:badgeRadius |
| 112 startAngle:90.0 | 114 startAngle:90.0 |
| 113 endAngle:endAngle | 115 endAngle:endAngle |
| 114 clockwise:YES]; | 116 clockwise:YES]; |
| 115 [progressSlice closePath]; | 117 [progressSlice closePath]; |
| 116 } | 118 } |
| 117 [NSGraphicsContext saveGraphicsState]; | 119 gfx::ScopedNSGraphicsContextState scopedGState; |
| 118 [progressSlice addClip]; | 120 [progressSlice addClip]; |
| 119 [sliceGradient drawFromCenter:badgeCenter | 121 [sliceGradient drawFromCenter:badgeCenter |
| 120 radius:0.0 | 122 radius:0.0 |
| 121 toCenter:badgeCenter | 123 toCenter:badgeCenter |
| 122 radius:badgeRadius | 124 radius:badgeRadius |
| 123 options:0]; | 125 options:0]; |
| 124 [NSGraphicsContext restoreGraphicsState]; | |
| 125 } | 126 } |
| 126 | 127 |
| 127 // Edge | 128 // Edge |
| 128 [NSGraphicsContext saveGraphicsState]; | 129 { |
| 129 [[NSColor whiteColor] set]; | 130 gfx::ScopedNSGraphicsContextState scopedGState; |
| 130 scoped_nsobject<NSShadow> shadow([[NSShadow alloc] init]); | 131 [[NSColor whiteColor] set]; |
| 131 [shadow.get() setShadowOffset:NSMakeSize(0, -2)]; | 132 scoped_nsobject<NSShadow> shadow([[NSShadow alloc] init]); |
| 132 [shadow setShadowBlurRadius:2]; | 133 [shadow.get() setShadowOffset:NSMakeSize(0, -2)]; |
| 133 [shadow set]; | 134 [shadow setShadowBlurRadius:2]; |
| 134 [badgeEdge setLineWidth:2]; | 135 [shadow set]; |
| 135 [badgeEdge stroke]; | 136 [badgeEdge setLineWidth:2]; |
| 136 [NSGraphicsContext restoreGraphicsState]; | 137 [badgeEdge stroke]; |
| 138 } |
| 137 | 139 |
| 138 // Download count | 140 // Download count |
| 139 scoped_nsobject<NSNumberFormatter> formatter( | 141 scoped_nsobject<NSNumberFormatter> formatter( |
| 140 [[NSNumberFormatter alloc] init]); | 142 [[NSNumberFormatter alloc] init]); |
| 141 NSString* countString = | 143 NSString* countString = |
| 142 [formatter stringFromNumber:[NSNumber numberWithInt:downloads_]]; | 144 [formatter stringFromNumber:[NSNumber numberWithInt:downloads_]]; |
| 143 | 145 |
| 144 scoped_nsobject<NSShadow> countShadow([[NSShadow alloc] init]); | 146 scoped_nsobject<NSShadow> countShadow([[NSShadow alloc] init]); |
| 145 [countShadow setShadowBlurRadius:3.0]; | 147 [countShadow setShadowBlurRadius:3.0]; |
| 146 [countShadow.get() setShadowColor:[NSColor whiteColor]]; | 148 [countShadow.get() setShadowColor:[NSColor whiteColor]]; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 215 } | 217 } |
| 216 | 218 |
| 217 - (void)setProgress:(float)progress { | 219 - (void)setProgress:(float)progress { |
| 218 NSDockTile* dockTile = [[NSApplication sharedApplication] dockTile]; | 220 NSDockTile* dockTile = [[NSApplication sharedApplication] dockTile]; |
| 219 DockTileView* dockTileView = (DockTileView*)([dockTile contentView]); | 221 DockTileView* dockTileView = (DockTileView*)([dockTile contentView]); |
| 220 | 222 |
| 221 [dockTileView setProgress:progress]; | 223 [dockTileView setProgress:progress]; |
| 222 } | 224 } |
| 223 | 225 |
| 224 @end | 226 @end |
| OLD | NEW |