| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/cocoa/extensions/browser_action_button.h" | 5 #import "chrome/browser/cocoa/extensions/browser_action_button.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cmath> | 8 #include <cmath> |
| 9 | 9 |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "base/sys_string_conversions.h" | 11 #include "base/sys_string_conversions.h" |
| 12 #include "chrome/browser/cocoa/extensions/extension_action_context_menu.h" | 12 #include "chrome/browser/cocoa/extensions/extension_action_context_menu.h" |
| 13 #import "chrome/browser/cocoa/image_utils.h" |
| 13 #include "chrome/browser/extensions/image_loading_tracker.h" | 14 #include "chrome/browser/extensions/image_loading_tracker.h" |
| 14 #include "chrome/common/extensions/extension.h" | 15 #include "chrome/common/extensions/extension.h" |
| 15 #include "chrome/common/extensions/extension_action.h" | 16 #include "chrome/common/extensions/extension_action.h" |
| 16 #include "chrome/common/extensions/extension_resource.h" | 17 #include "chrome/common/extensions/extension_resource.h" |
| 17 #include "chrome/common/notification_observer.h" | 18 #include "chrome/common/notification_observer.h" |
| 18 #include "chrome/common/notification_registrar.h" | 19 #include "chrome/common/notification_registrar.h" |
| 19 #include "chrome/common/notification_source.h" | 20 #include "chrome/common/notification_source.h" |
| 20 #include "chrome/common/notification_type.h" | 21 #include "chrome/common/notification_type.h" |
| 21 #include "gfx/canvas_paint.h" | 22 #include "gfx/canvas_paint.h" |
| 22 #include "gfx/rect.h" | 23 #include "gfx/rect.h" |
| (...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 bitsPerPixel:0]; | 297 bitsPerPixel:0]; |
| 297 | 298 |
| 298 [NSGraphicsContext saveGraphicsState]; | 299 [NSGraphicsContext saveGraphicsState]; |
| 299 [NSGraphicsContext setCurrentContext: | 300 [NSGraphicsContext setCurrentContext: |
| 300 [NSGraphicsContext graphicsContextWithBitmapImageRep:bitmap]]; | 301 [NSGraphicsContext graphicsContextWithBitmapImageRep:bitmap]]; |
| 301 [[NSColor clearColor] set]; | 302 [[NSColor clearColor] set]; |
| 302 NSRectFill(bounds); | 303 NSRectFill(bounds); |
| 303 [[self cell] setIconShadow]; | 304 [[self cell] setIconShadow]; |
| 304 | 305 |
| 305 NSImage* actionImage = [self image]; | 306 NSImage* actionImage = [self image]; |
| 306 // Never draw within a flipped coordinate system. | 307 const NSSize imageSize = [actionImage size]; |
| 307 // TODO(andybons): Figure out why |flipped| can be yes in certain cases. | 308 const NSRect imageRect = |
| 308 // http://crbug.com/38943 | 309 NSMakeRect(std::floor((NSWidth(bounds) - imageSize.width) / 2.0), |
| 309 [actionImage setFlipped:NO]; | 310 std::floor((NSHeight(bounds) - imageSize.height) / 2.0), |
| 310 CGFloat xPos = std::floor((NSWidth(bounds) - [actionImage size].width) / 2); | 311 imageSize.width, imageSize.height); |
| 311 CGFloat yPos = std::floor((NSHeight(bounds) - [actionImage size].height) / 2); | 312 [actionImage drawInRect:imageRect |
| 312 [actionImage drawAtPoint:NSMakePoint(xPos, yPos) | 313 fromRect:NSZeroRect |
| 313 fromRect:NSZeroRect | 314 operation:NSCompositeSourceOver |
| 314 operation:NSCompositeSourceOver | 315 fraction:1.0 |
| 315 fraction:1.0]; | 316 neverFlipped:YES]; |
| 316 | 317 |
| 317 bounds.origin.y += kShadowOffset - kBrowserActionBadgeOriginYOffset; | 318 bounds.origin.y += kShadowOffset - kBrowserActionBadgeOriginYOffset; |
| 318 bounds.origin.x -= kShadowOffset; | 319 bounds.origin.x -= kShadowOffset; |
| 319 [[self cell] drawBadgeWithinFrame:bounds]; | 320 [[self cell] drawBadgeWithinFrame:bounds]; |
| 320 | 321 |
| 321 [NSGraphicsContext restoreGraphicsState]; | 322 [NSGraphicsContext restoreGraphicsState]; |
| 322 NSImage* compositeImage = | 323 NSImage* compositeImage = |
| 323 [[[NSImage alloc] initWithSize:[bitmap size]] autorelease]; | 324 [[[NSImage alloc] initWithSize:[bitmap size]] autorelease]; |
| 324 [compositeImage addRepresentation:bitmap]; | 325 [compositeImage addRepresentation:bitmap]; |
| 325 return compositeImage; | 326 return compositeImage; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 352 - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { | 353 - (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { |
| 353 [NSGraphicsContext saveGraphicsState]; | 354 [NSGraphicsContext saveGraphicsState]; |
| 354 [self setIconShadow]; | 355 [self setIconShadow]; |
| 355 [super drawInteriorWithFrame:cellFrame inView:controlView]; | 356 [super drawInteriorWithFrame:cellFrame inView:controlView]; |
| 356 cellFrame.origin.y += kBrowserActionBadgeOriginYOffset; | 357 cellFrame.origin.y += kBrowserActionBadgeOriginYOffset; |
| 357 [self drawBadgeWithinFrame:cellFrame]; | 358 [self drawBadgeWithinFrame:cellFrame]; |
| 358 [NSGraphicsContext restoreGraphicsState]; | 359 [NSGraphicsContext restoreGraphicsState]; |
| 359 } | 360 } |
| 360 | 361 |
| 361 @end | 362 @end |
| OLD | NEW |