Index: chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm |
diff --git a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm |
index 4048f5830a7266896d33b219ab07557f0477c05a..c83730c6f1250580cca2b0ea10ec0902c28de908 100644 |
--- a/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm |
+++ b/chrome/browser/ui/cocoa/location_bar/location_bar_view_mac.mm |
@@ -93,178 +93,6 @@ const SkColor kMaterialDarkVectorIconColor = SK_ColorWHITE; |
} // namespace |
-// A temporary class that draws hardcoded HTTP graphic icons for Material |
-// design. This class will be removed once the Material icons are available |
-// in M53. |
-@interface LocationBarImageRep : NSCustomImageRep |
-@property(assign, nonatomic) gfx::VectorIconId iconId; |
-@property(retain, nonatomic) NSColor* fillColor; |
- |
-+ (NSImage*)imageForId:(gfx::VectorIconId)vectorIconId |
- color:(SkColor)vectorIconColor; |
- |
-// NSCustomImageRep delegate method that performs the drawing. |
-+ (void)drawLocationBarIcon:(LocationBarImageRep*)imageRep; |
- |
-@end |
- |
-@implementation LocationBarImageRep |
- |
-@synthesize iconId = iconId_; |
-@synthesize fillColor = fillColor_; |
- |
-- (void)dealloc { |
- [fillColor_ release]; |
- [super dealloc]; |
-} |
- |
-+ (NSImage*)imageForId:(gfx::VectorIconId)vectorIconId |
- color:(SkColor)vectorIconColor { |
- if (vectorIconId != gfx::VectorIconId::LOCATION_BAR_HTTP && |
- vectorIconId != gfx::VectorIconId::LOCATION_BAR_HTTPS_INVALID && |
- vectorIconId != gfx::VectorIconId::LOCATION_BAR_HTTPS_VALID) { |
- return NSImageFromImageSkiaWithColorSpace( |
- gfx::CreateVectorIcon(vectorIconId, kDefaultIconSize, vectorIconColor), |
- base::mac::GetSRGBColorSpace()); |
- } |
- |
- base::scoped_nsobject<LocationBarImageRep> imageRep( |
- [[LocationBarImageRep alloc] |
- initWithDrawSelector:@selector(drawLocationBarIcon:) |
- delegate:[LocationBarImageRep class]]); |
- [imageRep setIconId:vectorIconId]; |
- [imageRep setFillColor:skia::SkColorToSRGBNSColor(vectorIconColor)]; |
- |
- // Create the image from the image rep. |
- const NSSize kImageSize = NSMakeSize(kDefaultIconSize, kDefaultIconSize); |
- NSImage* locationBarImage = |
- [[[NSImage alloc] initWithSize:kImageSize] autorelease]; |
- [locationBarImage setCacheMode:NSImageCacheAlways]; |
- [locationBarImage addRepresentation:imageRep]; |
- |
- return locationBarImage; |
-} |
- |
-+ (void)drawLocationBarIcon:(LocationBarImageRep*)imageRep { |
- [[imageRep fillColor] set]; |
- |
- // Determine the scale factor. |
- CGContextRef context = static_cast<CGContextRef>( |
- [[NSGraphicsContext currentContext] graphicsPort]); |
- CGRect unitRect = CGRectMake(0.0, 0.0, 1.0, 1.0); |
- CGRect deviceRect = CGContextConvertRectToDeviceSpace(context, unitRect); |
- int scaleFactor = deviceRect.size.height; |
- |
- switch ([imageRep iconId]) { |
- case gfx::VectorIconId::LOCATION_BAR_HTTP: |
- [self drawLocationBarIconHTTPForScale:scaleFactor]; |
- break; |
- case gfx::VectorIconId::LOCATION_BAR_HTTPS_INVALID: |
- [self drawLocationBarIconHTTPSInvalidForScale:scaleFactor]; |
- break; |
- case gfx::VectorIconId::LOCATION_BAR_HTTPS_VALID: |
- [self drawLocationBarIconHTTPSValidForScale:scaleFactor]; |
- break; |
- default: |
- // Make it obvious that there's a problem. |
- [[NSColor redColor] set]; |
- NSRectFill(NSMakeRect(0, 0, kDefaultIconSize, kDefaultIconSize)); |
- break; |
- } |
-} |
- |
-+ (void)drawLocationBarIconHTTPForScale:(int)scaleFactor { |
- if (scaleFactor > 1) { |
- NSRect ovalRect = NSMakeRect(2.25, 1.75, 12, 12); |
- NSBezierPath* circlePath = |
- [NSBezierPath bezierPathWithOvalInRect:ovalRect]; |
- [circlePath setLineWidth:1.5]; |
- [circlePath stroke]; |
- |
- NSRectFill(NSMakeRect(7.5, 4.5, 1.5, 4)); |
- NSRectFill(NSMakeRect(7.5, 9.5, 1.5, 1.5)); |
- } else { |
- NSRect ovalRect = NSMakeRect(2, 2, 12, 12); |
- NSBezierPath* circlePath = |
- [NSBezierPath bezierPathWithOvalInRect:ovalRect]; |
- [circlePath setLineWidth:1.5]; |
- [circlePath stroke]; |
- |
- NSRectFill(NSMakeRect(7, 4, 2, 5)); |
- NSRectFill(NSMakeRect(7, 10, 2, 2)); |
- } |
-} |
- |
-+ (void)drawLocationBarIconHTTPSInvalidForScale:(int)scaleFactor { |
- // The vector icon is upside down relative to the default OS X coordinate |
- // system so rotate by 180 degrees. |
- CGContextRef context = static_cast<CGContextRef>( |
- [[NSGraphicsContext currentContext] graphicsPort]); |
- const int kHalfDefaultIconSize = kDefaultIconSize / 2; |
- CGContextTranslateCTM(context, kHalfDefaultIconSize, kHalfDefaultIconSize); |
- CGContextRotateCTM(context, M_PI); |
- CGContextTranslateCTM(context, -kHalfDefaultIconSize, -kHalfDefaultIconSize); |
- |
- // If Retina, nudge the icon up 1/2pt. |
- if (scaleFactor == 2) { |
- CGContextTranslateCTM(context, 0, -0.5); |
- } |
- |
- NSBezierPath* trianglePath = [NSBezierPath bezierPath]; |
- [trianglePath moveToPoint:NSMakePoint(0.5f, 14)]; |
- [trianglePath relativeLineToPoint:NSMakePoint(15, 0)]; |
- [trianglePath lineToPoint:NSMakePoint(8, 1)]; |
- [trianglePath closePath]; |
- |
- NSBezierPath* cutOutPath = [NSBezierPath bezierPath]; |
- [cutOutPath moveToPoint:NSMakePoint(9, 12)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(-2, 0)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(0, -2)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(2, 0)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(0, 2)]; |
- [cutOutPath closePath]; |
- [cutOutPath relativeMoveToPoint:NSMakePoint(0, -3)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(-2, 0)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(0, -3)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(2, 0)]; |
- [cutOutPath relativeLineToPoint:NSMakePoint(0, 3)]; |
- [cutOutPath closePath]; |
- |
- [trianglePath appendBezierPath:cutOutPath]; |
- [trianglePath fill]; |
-} |
- |
-+ (void)drawLocationBarIconHTTPSValidForScale:(int)scaleFactor { |
- NSAffineTransform* transform = [NSAffineTransform transform]; |
- // Adjust down 1px in Retina, so that the lock sits on the text baseline. |
- if (scaleFactor > 1) { |
- [transform translateXBy:0 yBy:-0.5]; |
- } |
- |
- NSBezierPath* rectPath = |
- [NSBezierPath bezierPathWithRoundedRect:NSMakeRect(4, 3, 8, 7) |
- xRadius:1 |
- yRadius:1]; |
- [rectPath transformUsingAffineTransform:transform]; |
- [rectPath fill]; |
- |
- NSBezierPath* curvePath = [NSBezierPath bezierPath]; |
- [curvePath moveToPoint:NSMakePoint(5.5, 9.75)]; |
- [curvePath lineToPoint:NSMakePoint(5.5, 10)]; |
- [curvePath curveToPoint:NSMakePoint(8, 13) |
- controlPoint1:NSMakePoint(5.5, 13) |
- controlPoint2:NSMakePoint(7.5, 13)]; |
- [curvePath curveToPoint:NSMakePoint(10.5, 10) |
- controlPoint1:NSMakePoint(8.5, 13) |
- controlPoint2:NSMakePoint(10.5, 13)]; |
- [curvePath lineToPoint:NSMakePoint(10.5, 9.75)]; |
- [curvePath setLineWidth:1.25]; |
- [curvePath transformUsingAffineTransform:transform]; |
- [curvePath stroke]; |
-} |
- |
-@end |
- |
// TODO(shess): This code is mostly copied from the gtk |
// implementation. Make sure it's all appropriate and flesh it out. |
@@ -764,9 +592,10 @@ void LocationBarViewMac::UpdateLocationIcon() { |
vector_icon_color = kMaterialDarkVectorIconColor; |
DCHECK(vector_icon_id != gfx::VectorIconId::VECTOR_ICON_NONE); |
- NSImage* image = |
- [LocationBarImageRep imageForId:vector_icon_id color:vector_icon_color]; |
- |
+ NSImage* image = NSImageFromImageSkiaWithColorSpace( |
+ gfx::CreateVectorIcon(vector_icon_id, kDefaultIconSize, |
+ vector_icon_color), |
+ base::mac::GetSRGBColorSpace()); |
location_icon_decoration_->SetImage(image); |
ev_bubble_decoration_->SetImage(image); |
Layout(); |