diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-26 20:58:42 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-26 20:58:42 +0000 |
commit | 8e294dbfd27c35b989ce15ea2ff1aaef44ea9edd (patch) | |
tree | 2c9ffc815d70d922b7b67f345b3e156be60a510a /chrome/browser/cocoa/gradient_button_cell.mm | |
parent | 40e59f901bc45d009b01b5252dc1e6140ba67642 (diff) | |
download | chromium_src-8e294dbfd27c35b989ce15ea2ff1aaef44ea9edd.zip chromium_src-8e294dbfd27c35b989ce15ea2ff1aaef44ea9edd.tar.gz chromium_src-8e294dbfd27c35b989ce15ea2ff1aaef44ea9edd.tar.bz2 |
Reverting 24512.
Review URL: http://codereview.chromium.org/174558
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@24527 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/cocoa/gradient_button_cell.mm')
-rw-r--r-- | chrome/browser/cocoa/gradient_button_cell.mm | 119 |
1 files changed, 29 insertions, 90 deletions
diff --git a/chrome/browser/cocoa/gradient_button_cell.mm b/chrome/browser/cocoa/gradient_button_cell.mm index df2a7c9..17d4998 100644 --- a/chrome/browser/cocoa/gradient_button_cell.mm +++ b/chrome/browser/cocoa/gradient_button_cell.mm @@ -2,10 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#import "base/scoped_nsobject.h" #include "chrome/browser/cocoa/gradient_button_cell.h" #import "third_party/GTM/AppKit/GTMTheme.h" -#import "third_party/GTM/AppKit/GTMNSColor+Luminance.h" +#import "base/scoped_nsobject.h" @interface GradientButtonCell (Private) - (void)sharedInit; @@ -13,48 +12,8 @@ inView:(NSView*)controlView; @end -static const NSTimeInterval kAnimationShowDuration = 0.2; -static const NSTimeInterval kAnimationHideDuration = 0.4; @implementation GradientButtonCell -@synthesize hoverAlpha = hoverAlpha_; - -- (void)adjustHoverValue { - NSTimeInterval thisUpdate = [NSDate timeIntervalSinceReferenceDate]; - - NSTimeInterval elapsed = thisUpdate - lastHoverUpdate_; - - CGFloat opacity = [self hoverAlpha]; - if (isMouseInside_) { - opacity += elapsed / kAnimationShowDuration; - } else { - opacity -= elapsed / kAnimationHideDuration; - } - - if (!isMouseInside_ && opacity < 0) { - opacity = 0; - } else if (isMouseInside_ && opacity > 1) { - opacity = 1; - } else { - [self performSelector:_cmd withObject:nil afterDelay:0.02]; - } - lastHoverUpdate_ = thisUpdate; - [self setHoverAlpha:opacity]; - - [[self controlView] setNeedsDisplay:YES]; -} - -- (void)setMouseInside:(BOOL)flag animate:(BOOL)animated { - isMouseInside_ = flag; - if (animated) { - lastHoverUpdate_ = [NSDate timeIntervalSinceReferenceDate]; - [self adjustHoverValue]; - } else { - [NSObject cancelPreviousPerformRequestsWithTarget:self]; - [self setHoverAlpha:flag ? 1.0 : 0.0]; - } - [[self controlView] setNeedsDisplay:YES]; -} // For nib instantiations - (id)initWithCoder:(NSCoder*)decoder { @@ -74,6 +33,10 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; - (void)sharedInit { shouldTheme_ = YES; + NSColor* startColor = [NSColor colorWithCalibratedWhite:1.0 alpha:0.666]; + NSColor* endColor = [NSColor colorWithCalibratedWhite:1.0 alpha:0.333]; + gradient_.reset([[NSGradient alloc] + initWithColorsAndLocations:startColor, 0.33, endColor, 1.0, nil]); } - (void)setShouldTheme:(BOOL)shouldTheme { @@ -96,11 +59,13 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; } - (void)mouseEntered:(NSEvent *)theEvent { - [self setMouseInside:YES animate:YES]; + isMouseInside_ = YES; + [[self controlView] setNeedsDisplay:YES]; } - (void)mouseExited:(NSEvent *)theEvent { - [self setMouseInside:NO animate:YES]; + isMouseInside_ = NO; + [[self controlView] setNeedsDisplay:YES]; } - (BOOL)isMouseInside { @@ -137,11 +102,13 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; controlView:(NSView*)controlView outerPath:(NSBezierPath*)outerPath innerPath:(NSBezierPath*)innerPath - showClickedGradient:(BOOL)showClickedGradient showHighlightGradient:(BOOL)showHighlightGradient - hoverAlpha:(CGFloat)hoverAlpha + showClickedGradient:(BOOL)showClickedGradient active:(BOOL)active cellFrame:(NSRect)cellFrame { + [[NSColor colorWithCalibratedWhite:1.0 alpha:0.25] set]; + [outerPath stroke]; + NSImage* backgroundImage = [theme backgroundImageForStyle:GTMThemeStyleToolBarButton state:YES]; @@ -162,68 +129,45 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; } } - BOOL isCustomTheme = backgroundImage != nil; - - if (!showClickedGradient && [self isEnabled]) { + if (!showClickedGradient && showHighlightGradient) { [NSGraphicsContext saveGraphicsState]; [innerPath addClip]; // Draw the inner glow. - if (hoverAlpha > 0) { - [innerPath setLineWidth:2]; - [[NSColor colorWithCalibratedWhite:1.0 alpha:0.2 * hoverAlpha] setStroke]; - [innerPath stroke]; - } + [innerPath setLineWidth:2]; + [[NSColor colorWithCalibratedWhite:1.0 alpha:0.9] setStroke]; + [innerPath stroke]; + + [[NSColor colorWithCalibratedWhite:1.0 alpha:0.9] setStroke]; + [[NSColor colorWithCalibratedWhite:1.0 alpha:0.2] setFill]; // Draw the top inner highlight. NSAffineTransform* highlightTransform = [NSAffineTransform transform]; [highlightTransform translateXBy:1 yBy:1]; scoped_nsobject<NSBezierPath> highlightPath([innerPath copy]); [highlightPath transformUsingAffineTransform:highlightTransform]; - [[NSColor colorWithCalibratedWhite:1.0 alpha:0.2] setStroke]; - [highlightPath stroke]; - CGFloat startAlpha = 0.6 + 0.3 * hoverAlpha; - CGFloat endAlpha = 0.333 * hoverAlpha; - - if (isCustomTheme) { - startAlpha = 0.2 + 0.35 * hoverAlpha; - endAlpha = 0.333 * hoverAlpha; - } - - NSColor* startColor = - [NSColor colorWithCalibratedWhite:1.0 - alpha:startAlpha]; - NSColor* endColor = - [NSColor colorWithCalibratedWhite:1.0 - 0.15 * hoverAlpha - alpha:endAlpha]; - scoped_nsobject<NSBezierPath> gradient([[NSGradient alloc] - initWithColorsAndLocations:startColor, hoverAlpha * 0.33, - endColor, 1.0, nil]); + [highlightPath stroke]; - [gradient drawInBezierPath:innerPath angle:90.0]; + [gradient_ drawInBezierPath:innerPath angle:90.0]; [NSGraphicsContext restoreGraphicsState]; } - // Draw the outer stroke NSColor* stroke = [theme strokeColorForStyle:GTMThemeStyleToolBarButton state:active]; - - if (showClickedGradient) { - stroke = [NSColor colorWithCalibratedWhite:0.0 alpha:0.3]; - } [stroke setStroke]; [innerPath setLineWidth:1]; [innerPath stroke]; } + - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView { // Constants from Cole. Will kConstant them once the feedback loop // is complete. NSRect drawFrame = NSInsetRect(cellFrame, 1.5, 1.5); - NSRect innerFrame = NSInsetRect(cellFrame, 2, 1); + NSRect innerFrame = NSInsetRect(cellFrame, 2, 2); ButtonType type = [[(NSControl*)controlView cell] tag]; switch (type) { case kMiddleButtonType: @@ -268,9 +212,8 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; controlView:controlView outerPath:outerPath innerPath:innerPath + showHighlightGradient:YES showClickedGradient:pressed - showHighlightGradient:[self isHighlighted] - hoverAlpha:[self hoverAlpha] active:active cellFrame:cellFrame]; } @@ -300,14 +243,9 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; CGContextRef context = (CGContextRef)([[NSGraphicsContext currentContext] graphicsPort]); - NSColor* color = [theme iconColorForStyle:GTMThemeStyleToolBarButton - state:YES]; - if (isTemplate) { scoped_nsobject<NSShadow> shadow([[NSShadow alloc] init]); - NSColor *shadowColor = [color gtm_legibleTextColor]; - shadowColor = [shadowColor colorWithAlphaComponent:0.25]; - [shadow setShadowColor:shadowColor]; + [shadow setShadowColor:[NSColor whiteColor]]; [shadow setShadowOffset:NSMakeSize(0, -1.0)]; [shadow setShadowBlurRadius:1.0]; [shadow set]; @@ -318,13 +256,14 @@ static const NSTimeInterval kAnimationHideDuration = 0.4; CGContextBeginTransparencyLayer(context, 0); NSRect imageRect = NSZeroRect; imageRect.size = [[self image] size]; - NSRect drawRect = [self imageRectForBounds:cellFrame]; [[self image] setFlipped:[controlView isFlipped]]; - [[self image] drawInRect:drawRect + [[self image] drawInRect:[self imageRectForBounds:cellFrame] fromRect:imageRect operation:NSCompositeSourceOver fraction:[self isEnabled] ? 1.0 : 0.5]; if (isTemplate) { + NSColor* color = [theme iconColorForStyle:GTMThemeStyleToolBarButton + state:YES]; if (color) { [color set]; NSRectFillUsingOperation(cellFrame, NSCompositeSourceAtop); |