Changeset 2973


Ignore:
Timestamp:
Sep 2, 2007, 2:16:40 PM (14 years ago)
Author:
livings124
Message:

patch from nickshanks to improve filter button code

Location:
trunk/macosx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/FilterBarButton.h

    r2697 r2973  
    2525#import <Cocoa/Cocoa.h>
    2626
     27@class CTGradient;
    2728@interface FilterBarButton : NSButton
    2829{
     
    3435    NSDictionary * fNormalAttributes, * fNormalDimAttributes,
    3536                 * fHighlightedAttributes, * fHighlightedDimAttributes;
     37    CTGradient * fHighlightedBackground, * fHighlightedOutline,
     38               * fActiveBackground, * fActiveOutline,
     39               * fHoveringBackground;
     40    NSColor    * fHoveringOutline;
    3641}
    3742
  • trunk/macosx/FilterBarButton.m

    r2878 r2973  
    3131
    3232- (void) createPaths;
     33- (void) createGradients;
    3334- (void) createFontAttributes;
    3435
     
    4647        [self setCount: 0];
    4748        [self createPaths];
     49        [self createGradients];
    4850        [self createFontAttributes];
    4951       
     
    6365    [fEdgePath release];
    6466    [fStepPath release];
     67   
    6568    [fNormalAttributes release];
    6669    [fNormalDimAttributes release];
    6770    [fHighlightedAttributes release];
     71   
    6872    [fHighlightedDimAttributes release];
     73    [fHighlightedBackground release];
     74    [fHighlightedOutline release];
     75    [fActiveBackground release];
     76    [fActiveOutline release];
     77    [fHoveringBackground release];
     78    [fHoveringOutline release];
    6979   
    7080    [super dealloc];
     
    7484{
    7585    NSSize size = [[self title] sizeWithAttributes: fNormalAttributes];
    76     size.width = floorf(size.width + 18.5);
     86    size.width = floorf(size.width + 14.5);
    7787    size.height += 1;
    7888    [self setFrameSize: size];
     
    91101    if ([[self cell] isHighlighted])
    92102    {
    93         [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 134.0/255 green: 151.0/255
    94                                                     blue: 176.0/255 alpha: 1.0]
    95                                     endingColor: [NSColor colorWithCalibratedRed: 104.0/255 green: 125.0/255
    96                                                     blue: 157.0/255 alpha: 1.0]]
    97                                  fillBezierPath: fPath angle: -90.0];
    98         [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedWhite: 0.0 alpha: 0.25]
    99 //                                  middleColor: [NSColor colorWithCalibratedWhite: 0.5 alpha: 0.00]
    100                                    middleColor1: [NSColor colorWithCalibratedWhite: 0.0 alpha: 0.25]
    101                                    middleColor2: [NSColor colorWithCalibratedWhite: 1.0 alpha: 0.50]
    102                                     endingColor: [NSColor colorWithCalibratedWhite: 1.0 alpha: 0.50]]
    103                                  fillBezierPath: fStepPath angle: -90.0];
     103        [fHighlightedBackground fillBezierPath: fPath angle: -90.0];
     104        [fHighlightedOutline fillBezierPath: fStepPath angle: -90.0];
    104105    }
    105     else switch (fState)
    106     {
    107         case 1:     // active
    108             [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 151.0/255 green: 166.0/255
    109                                                         blue: 188.0/255 alpha: 1.0]
    110                                         endingColor: [NSColor colorWithCalibratedRed: 126.0/255 green: 144.0/255
    111                                                         blue: 171.0/255 alpha: 1.0]]
    112                                      fillBezierPath: fPath angle: -90.0];
    113             [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedWhite: 0.0 alpha: 0.25]
    114 //                                      middleColor: [NSColor colorWithCalibratedWhite: 0.5 alpha: 0.00]
    115                                        middleColor1: [NSColor colorWithCalibratedWhite: 0.0 alpha: 0.25]
    116                                        middleColor2: [NSColor colorWithCalibratedWhite: 1.0 alpha: 0.50]
    117                                         endingColor: [NSColor colorWithCalibratedWhite: 1.0 alpha: 0.50]]
    118                                      fillBezierPath: fStepPath angle: -90.0];
    119             break;
    120         case 2:     // hovering
    121             [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 164.0/255 green: 177.0/255
    122                                                         blue: 196.0/255 alpha: 1.0]
    123                                         endingColor: [NSColor colorWithCalibratedRed: 141.0/255 green: 158.0/255
    124                                                         blue: 182.0/255 alpha: 1.0]]
    125                                      fillBezierPath: fPath angle: -90.0];
    126             [[NSColor colorWithCalibratedWhite: 0.0 alpha: 0.075] set];
    127             [fEdgePath stroke];
    128             break;
    129         case 3:     // clicked but cell is not highlighted
    130             break;
    131     }
     106    else
     107        switch (fState)
     108        {
     109            case 1:     // active
     110                [fActiveBackground fillBezierPath: fPath angle: -90.0];
     111                [fActiveOutline fillBezierPath: fStepPath angle: -90.0];
     112                break;
     113            case 2:     // hovering
     114            case 3:     // clicked but cell is not highlighted
     115                [fHoveringBackground fillBezierPath: fPath angle: -90.0];
     116                [fHoveringOutline setStroke];
     117                [fEdgePath stroke];
     118                break;
     119        }
    132120   
    133121    // draw title
     
    135123    NSPoint titlePos = NSMakePoint(([self bounds].size.width  - titleSize.width)  * 0.5,
    136124                                   ([self bounds].size.height - titleSize.height) * 0.5 + 1.5);
    137     if (fEnabled)
    138     {
    139         if (fState && !(fState == 3 && ![[self cell] isHighlighted]))
    140             [[self title] drawAtPoint: titlePos withAttributes: fHighlightedAttributes];
    141         else
    142             [[self title] drawAtPoint: titlePos withAttributes: fNormalAttributes];
    143     }
     125   
     126    NSDictionary * attributes;
     127    if (fState)
     128        attributes = fEnabled ? fHighlightedAttributes : fHighlightedDimAttributes;
    144129    else
    145     {
    146         if (fState)
    147             [[self title] drawAtPoint: titlePos withAttributes: fHighlightedDimAttributes];
    148         else
    149             [[self title] drawAtPoint: titlePos withAttributes: fNormalDimAttributes];
    150     }
     130        attributes = fEnabled ? fNormalAttributes : fNormalDimAttributes;
     131   
     132    [[self title] drawAtPoint: titlePos withAttributes: attributes];
    151133}
    152134
     
    257239}
    258240
     241- (void) createGradients
     242{
     243    NSColor *quarterAlphaBlack = [NSColor colorWithCalibratedWhite: 0.0 alpha: 0.25];
     244    NSColor *thirdAlphaWhite = [NSColor colorWithCalibratedWhite: 1.0 alpha: 0.3333];
     245    fHighlightedBackground = [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 134.0/255 green: 151.0/255 blue: 176.0/255 alpha: 1.0]
     246                                                         endingColor: [NSColor colorWithCalibratedRed: 104.0/255 green: 125.0/255 blue: 157.0/255 alpha: 1.0]] retain];
     247    fHighlightedOutline = [[CTGradient gradientWithBeginningColor: quarterAlphaBlack
     248                                                     middleColor1: quarterAlphaBlack
     249                                                     middleColor2: thirdAlphaWhite
     250                                                      endingColor: thirdAlphaWhite] retain];
     251    fActiveBackground = [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 151.0/255 green: 166.0/255 blue: 188.0/255 alpha: 1.0]
     252                                                    endingColor: [NSColor colorWithCalibratedRed: 126.0/255 green: 144.0/255 blue: 171.0/255 alpha: 1.0]] retain];
     253    fActiveOutline = [fHighlightedOutline retain];
     254    fHoveringBackground = [[CTGradient gradientWithBeginningColor: [NSColor colorWithCalibratedRed: 164.0/255 green: 177.0/255 blue: 196.0/255 alpha: 1.0]
     255                                                      endingColor: [NSColor colorWithCalibratedRed: 141.0/255 green: 158.0/255 blue: 182.0/255 alpha: 1.0]] retain];
     256    fHoveringOutline = [[NSColor colorWithCalibratedWhite: 0.0 alpha: 0.075] retain];
     257}
     258
    259259- (void) createFontAttributes
    260260{
Note: See TracChangeset for help on using the changeset viewer.