code from nickshanks to generate the progress bars without images, also makes the bars resolution independent
|
@ -0,0 +1,74 @@
|
|||
//
|
||||
// CTGradient.h
|
||||
//
|
||||
// Created by Chad Weider on 2/14/07.
|
||||
// Copyright (c) 2007 Chad Weider.
|
||||
// Some rights reserved: <http://creativecommons.org/licenses/by/2.5/>
|
||||
//
|
||||
// Version: 1.6
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
typedef struct _CTGradientElement
|
||||
{
|
||||
float red, green, blue, alpha;
|
||||
float position;
|
||||
|
||||
struct _CTGradientElement *nextElement;
|
||||
} CTGradientElement;
|
||||
|
||||
typedef enum _CTBlendingMode
|
||||
{
|
||||
CTLinearBlendingMode,
|
||||
CTChromaticBlendingMode,
|
||||
CTInverseChromaticBlendingMode
|
||||
} CTGradientBlendingMode;
|
||||
|
||||
|
||||
@interface CTGradient : NSObject <NSCopying, NSCoding>
|
||||
{
|
||||
CTGradientElement* elementList;
|
||||
CTGradientBlendingMode blendingMode;
|
||||
|
||||
CGFunctionRef gradientFunction;
|
||||
}
|
||||
|
||||
+ (id)gradientWithBeginningColor:(NSColor *)begin endingColor:(NSColor *)end;
|
||||
|
||||
+ (id)aquaSelectedGradient;
|
||||
+ (id)aquaNormalGradient;
|
||||
+ (id)aquaPressedGradient;
|
||||
|
||||
+ (id)unifiedSelectedGradient;
|
||||
+ (id)unifiedNormalGradient;
|
||||
+ (id)unifiedPressedGradient;
|
||||
+ (id)unifiedDarkGradient;
|
||||
|
||||
+ (id)sourceListSelectedGradient;
|
||||
+ (id)sourceListUnselectedGradient;
|
||||
|
||||
+ (id)rainbowGradient;
|
||||
+ (id)hydrogenSpectrumGradient;
|
||||
|
||||
- (CTGradient *)gradientWithAlphaComponent:(float)alpha;
|
||||
|
||||
- (void)addElement:(CTGradientElement*)newElement;
|
||||
|
||||
- (CTGradient *)addColorStop:(NSColor *)color atPosition:(float)position; //positions given relative to [0,1]
|
||||
- (CTGradient *)removeColorStopAtIndex:(unsigned)index;
|
||||
- (CTGradient *)removeColorStopAtPosition:(float)position;
|
||||
|
||||
- (CTGradientBlendingMode)blendingMode;
|
||||
- (NSColor *)colorStopAtIndex:(unsigned)index;
|
||||
- (NSColor *)colorAtPosition:(float)position;
|
||||
|
||||
|
||||
- (void)drawSwatchInRect:(NSRect)rect;
|
||||
- (void)fillRect:(NSRect)rect angle:(float)angle; //fills rect with axial gradient
|
||||
// angle in degrees
|
||||
- (void)radialFillRect:(NSRect)rect; //fills rect with radial gradient
|
||||
// gradient from center outwards
|
||||
- (void)fillBezierPath:(NSBezierPath *)path angle:(float)angle;
|
||||
- (void)radialFillBezierPath:(NSBezierPath *)path;
|
||||
|
||||
@end
|
|
@ -0,0 +1,44 @@
|
|||
/******************************************************************************
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (c) 2007 Transmission authors and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "CTGradient.h"
|
||||
|
||||
@interface CTGradient (ActionBarView)
|
||||
+ (CTGradient *)actionNormalGradient;
|
||||
+ (CTGradient *)actionPressedGradient;
|
||||
@end
|
||||
|
||||
@interface CTGradient (ProgressBar)
|
||||
+ (CTGradient *)progressWhiteGradient;
|
||||
+ (CTGradient *)progressGreyGradient;
|
||||
+ (CTGradient *)progressBlueGradient;
|
||||
+ (CTGradient *)progressGreenGradient;
|
||||
+ (CTGradient *)progressLightGreenGradient;
|
||||
+ (CTGradient *)progressTransparentGradient;
|
||||
@end
|
||||
|
||||
@interface CTGradient (MiddleColour)
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor:(NSColor *)middle endingColor:(NSColor *)end;
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor1:(NSColor *)middle1 middleColor2:(NSColor *)middle2 endingColor:(NSColor *)end;
|
||||
@end
|
|
@ -0,0 +1,387 @@
|
|||
/******************************************************************************
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (c) 2007 Transmission authors and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "CTGradientAdditions.h"
|
||||
|
||||
@implementation CTGradient (ActionBar)
|
||||
|
||||
+ (CTGradient *)actionNormalGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.9;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.9;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.95;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 1.0;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)actionPressedGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.80;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.64;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 11.5/23;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.80;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 11.5/23;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.77;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation CTGradient (ProgressBar)
|
||||
|
||||
+ (CTGradient *)progressWhiteGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.95;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.8;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.95;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.95;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressGreyGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.7;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.6;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.7;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.7;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressBlueGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.416;
|
||||
color1.green = 0.788;
|
||||
color1.blue = 0.97;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.274;
|
||||
color2.green = 0.52;
|
||||
color2.blue = 0.94;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.372;
|
||||
color3.green = 0.635;
|
||||
color3.blue = 0.98;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.396;
|
||||
color4.green = 0.66;
|
||||
color4.blue = 1.00;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressGreenGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.270;
|
||||
color1.green = 0.89;
|
||||
color1.blue = 0.35;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.180;
|
||||
color2.green = 0.71;
|
||||
color2.blue = 0.23;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.420;
|
||||
color3.green = 0.86;
|
||||
color3.blue = 0.32;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.466;
|
||||
color4.green = 0.89;
|
||||
color4.blue = 0.34;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressLightGreenGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.478;
|
||||
color1.green = 1.00;
|
||||
color1.blue = 0.55;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.388;
|
||||
color2.green = 0.92;
|
||||
color2.blue = 0.44;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.627;
|
||||
color3.green = 1.00;
|
||||
color3.blue = 0.53;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.675;
|
||||
color4.green = 1.00;
|
||||
color4.blue = 0.55;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressTransparentGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 1.0;
|
||||
color1.alpha = 0.65;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 1.0;
|
||||
color2.alpha = 0.05;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 1.0;
|
||||
color3.alpha = 0.4;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 1.0;
|
||||
color4.alpha = 0.4;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation CTGradient (MiddleColour)
|
||||
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor:(NSColor *)middle endingColor:(NSColor *)end
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
CTGradientElement color2;
|
||||
CTGradientElement color3;
|
||||
|
||||
[[begin colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color1.red
|
||||
green:&color1.green
|
||||
blue:&color1.blue
|
||||
alpha:&color1.alpha];
|
||||
[[middle colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color2.red
|
||||
green:&color2.green
|
||||
blue:&color2.blue
|
||||
alpha:&color2.alpha];
|
||||
[[end colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color3.red
|
||||
green:&color3.green
|
||||
blue:&color3.blue
|
||||
alpha:&color3.alpha];
|
||||
color1.position = 0;
|
||||
color2.position = 0.5;
|
||||
color3.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor1:(NSColor *)middle1 middleColor2:(NSColor *)middle2 endingColor:(NSColor *)end
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
CTGradientElement color2;
|
||||
CTGradientElement color3;
|
||||
CTGradientElement color4;
|
||||
|
||||
[[begin colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color1.red
|
||||
green:&color1.green
|
||||
blue:&color1.blue
|
||||
alpha:&color1.alpha];
|
||||
[[middle1 colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color2.red
|
||||
green:&color2.green
|
||||
blue:&color2.blue
|
||||
alpha:&color2.alpha];
|
||||
[[middle2 colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color3.red
|
||||
green:&color3.green
|
||||
blue:&color3.blue
|
||||
alpha:&color3.alpha];
|
||||
[[end colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color4.red
|
||||
green:&color4.green
|
||||
blue:&color4.blue
|
||||
alpha:&color4.alpha];
|
||||
color1.position = 0;
|
||||
color2.position = 0.5;
|
||||
color3.position = 0.5;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
|
@ -98,16 +98,6 @@
|
|||
A21F5C040AF26DD5008CE5CE /* ActionMenuSpeedToDisplayLimitTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = A21F5C020AF26DD5008CE5CE /* ActionMenuSpeedToDisplayLimitTransformer.m */; };
|
||||
A2265F420B5EF5F40093DDA5 /* FileBrowserCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A2265F400B5EF5F40093DDA5 /* FileBrowserCell.m */; };
|
||||
A22A8D560AEEAFA5007E9CB9 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = A22A8D540AEEAFA5007E9CB9 /* Localizable.strings */; };
|
||||
A2305A800A3DC9E400AB2D77 /* ProgressBarWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7C0A3DC9E400AB2D77 /* ProgressBarWhite.png */; };
|
||||
A2305A810A3DC9E400AB2D77 /* ProgressBarBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7D0A3DC9E400AB2D77 /* ProgressBarBlue.png */; };
|
||||
A2305A820A3DC9E400AB2D77 /* ProgressBarGray.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7E0A3DC9E400AB2D77 /* ProgressBarGray.png */; };
|
||||
A2305A830A3DC9E400AB2D77 /* ProgressBarGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A7F0A3DC9E400AB2D77 /* ProgressBarGreen.png */; };
|
||||
A2305A950A3DCAC500AB2D77 /* ProgressBarAdvanced.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305A940A3DCAC500AB2D77 /* ProgressBarAdvanced.png */; };
|
||||
A2305AA90A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305AA40A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png */; };
|
||||
A2305AAA0A3DCCEF00AB2D77 /* ProgressBarEndBlue.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305AA50A3DCCEF00AB2D77 /* ProgressBarEndBlue.png */; };
|
||||
A2305AAB0A3DCCEF00AB2D77 /* ProgressBarEndWhite.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305AA60A3DCCEF00AB2D77 /* ProgressBarEndWhite.png */; };
|
||||
A2305AAC0A3DCCEF00AB2D77 /* ProgressBarEndGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305AA70A3DCCEF00AB2D77 /* ProgressBarEndGreen.png */; };
|
||||
A2305AAD0A3DCCEF00AB2D77 /* ProgressBarEndGray.png in Resources */ = {isa = PBXBuildFile; fileRef = A2305AA80A3DCCEF00AB2D77 /* ProgressBarEndGray.png */; };
|
||||
A232D29E0A70903E00973B12 /* Filter.png in Resources */ = {isa = PBXBuildFile; fileRef = A232D29D0A70903E00973B12 /* Filter.png */; };
|
||||
A2385DD40BFE06C800B24EF6 /* DragOverlayWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = A2385DD20BFE06C800B24EF6 /* DragOverlayWindow.m */; };
|
||||
A23BBEB70A9BBE77003F7274 /* BarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = A27431D90A68538400FA780A /* BarButton.m */; };
|
||||
|
@ -143,7 +133,6 @@
|
|||
A27ABC240A6ADE410020EC71 /* ImageBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = A27ABC220A6ADE410020EC71 /* ImageBackgroundView.m */; };
|
||||
A289EB0C0A33C56D00B082A3 /* ButtonBorder.png in Resources */ = {isa = PBXBuildFile; fileRef = A289EB0B0A33C56D00B082A3 /* ButtonBorder.png */; };
|
||||
A28DBADC0A33C1D800F4B4A7 /* ActionButton.png in Resources */ = {isa = PBXBuildFile; fileRef = A28DBADB0A33C1D800F4B4A7 /* ActionButton.png */; };
|
||||
A28FF34E0BB23A4E001F5010 /* ProgressBarLightGreen.png in Resources */ = {isa = PBXBuildFile; fileRef = A28FF34D0BB23A4E001F5010 /* ProgressBarLightGreen.png */; };
|
||||
A2912C540A2956E80097A0CA /* PrefsWindow.nib in Resources */ = {isa = PBXBuildFile; fileRef = A2912C520A2956E80097A0CA /* PrefsWindow.nib */; };
|
||||
A291DAAF0AC8BEB6003385E9 /* PiecesView.m in Sources */ = {isa = PBXBuildFile; fileRef = A291DAAD0AC8BEB6003385E9 /* PiecesView.m */; };
|
||||
A29597350A72A9E10057248B /* StatusBarBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = A29597340A72A9E10057248B /* StatusBarBackground.png */; };
|
||||
|
@ -166,6 +155,8 @@
|
|||
A2F40AE40A361C00006B8288 /* Transmission.icns in Resources */ = {isa = PBXBuildFile; fileRef = 4D2784360905709500687951 /* Transmission.icns */; };
|
||||
A2F6DB090A55F31C0058D1E5 /* SpeedLimitButton.png in Resources */ = {isa = PBXBuildFile; fileRef = A2F6DB070A55F31C0058D1E5 /* SpeedLimitButton.png */; };
|
||||
A2FB057F0BFEB6800095564D /* DragOverlayView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2FB057D0BFEB6800095564D /* DragOverlayView.m */; };
|
||||
E138A9770C04D88F00C5426C /* CTGradient.m in Sources */ = {isa = PBXBuildFile; fileRef = E138A9740C04D88F00C5426C /* CTGradient.m */; };
|
||||
E138A9780C04D88F00C5426C /* CTGradientAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E138A9760C04D88F00C5426C /* CTGradientAdditions.m */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
@ -316,16 +307,6 @@
|
|||
A2265F3F0B5EF5F40093DDA5 /* FileBrowserCell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = FileBrowserCell.h; path = macosx/FileBrowserCell.h; sourceTree = "<group>"; };
|
||||
A2265F400B5EF5F40093DDA5 /* FileBrowserCell.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = FileBrowserCell.m; path = macosx/FileBrowserCell.m; sourceTree = "<group>"; };
|
||||
A22A8D550AEEAFA5007E9CB9 /* English */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.strings; name = English; path = macosx/English.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
A2305A7C0A3DC9E400AB2D77 /* ProgressBarWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarWhite.png; path = macosx/Images/ProgressBarWhite.png; sourceTree = "<group>"; };
|
||||
A2305A7D0A3DC9E400AB2D77 /* ProgressBarBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarBlue.png; path = macosx/Images/ProgressBarBlue.png; sourceTree = "<group>"; };
|
||||
A2305A7E0A3DC9E400AB2D77 /* ProgressBarGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarGray.png; path = macosx/Images/ProgressBarGray.png; sourceTree = "<group>"; };
|
||||
A2305A7F0A3DC9E400AB2D77 /* ProgressBarGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarGreen.png; path = macosx/Images/ProgressBarGreen.png; sourceTree = "<group>"; };
|
||||
A2305A940A3DCAC500AB2D77 /* ProgressBarAdvanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarAdvanced.png; path = macosx/Images/ProgressBarAdvanced.png; sourceTree = "<group>"; };
|
||||
A2305AA40A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndAdvanced.png; path = macosx/Images/ProgressBarEndAdvanced.png; sourceTree = "<group>"; };
|
||||
A2305AA50A3DCCEF00AB2D77 /* ProgressBarEndBlue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndBlue.png; path = macosx/Images/ProgressBarEndBlue.png; sourceTree = "<group>"; };
|
||||
A2305AA60A3DCCEF00AB2D77 /* ProgressBarEndWhite.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndWhite.png; path = macosx/Images/ProgressBarEndWhite.png; sourceTree = "<group>"; };
|
||||
A2305AA70A3DCCEF00AB2D77 /* ProgressBarEndGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndGreen.png; path = macosx/Images/ProgressBarEndGreen.png; sourceTree = "<group>"; };
|
||||
A2305AA80A3DCCEF00AB2D77 /* ProgressBarEndGray.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarEndGray.png; path = macosx/Images/ProgressBarEndGray.png; sourceTree = "<group>"; };
|
||||
A232D29D0A70903E00973B12 /* Filter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = Filter.png; path = macosx/Images/Filter.png; sourceTree = "<group>"; };
|
||||
A2385DD20BFE06C800B24EF6 /* DragOverlayWindow.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = DragOverlayWindow.m; path = macosx/DragOverlayWindow.m; sourceTree = "<group>"; };
|
||||
A2385DD30BFE06C800B24EF6 /* DragOverlayWindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DragOverlayWindow.h; path = macosx/DragOverlayWindow.h; sourceTree = "<group>"; };
|
||||
|
@ -378,7 +359,6 @@
|
|||
A27ABC220A6ADE410020EC71 /* ImageBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = ImageBackgroundView.m; path = macosx/ImageBackgroundView.m; sourceTree = "<group>"; };
|
||||
A289EB0B0A33C56D00B082A3 /* ButtonBorder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ButtonBorder.png; path = macosx/Images/ButtonBorder.png; sourceTree = "<group>"; };
|
||||
A28DBADB0A33C1D800F4B4A7 /* ActionButton.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ActionButton.png; path = macosx/Images/ActionButton.png; sourceTree = "<group>"; };
|
||||
A28FF34D0BB23A4E001F5010 /* ProgressBarLightGreen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = ProgressBarLightGreen.png; path = macosx/Images/ProgressBarLightGreen.png; sourceTree = "<group>"; };
|
||||
A2912C530A2956E80097A0CA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = macosx/English.lproj/PrefsWindow.nib; sourceTree = "<group>"; };
|
||||
A291DAAC0AC8BEB6003385E9 /* PiecesView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = PiecesView.h; path = macosx/PiecesView.h; sourceTree = "<group>"; };
|
||||
A291DAAD0AC8BEB6003385E9 /* PiecesView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = PiecesView.m; path = macosx/PiecesView.m; sourceTree = "<group>"; };
|
||||
|
@ -418,6 +398,10 @@
|
|||
A2FB057C0BFEB6800095564D /* DragOverlayView.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = DragOverlayView.h; path = macosx/DragOverlayView.h; sourceTree = "<group>"; };
|
||||
A2FB057D0BFEB6800095564D /* DragOverlayView.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = DragOverlayView.m; path = macosx/DragOverlayView.m; sourceTree = "<group>"; };
|
||||
A2FB06950BFF484A0095564D /* Globe.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; name = Globe.tiff; path = macosx/Images/Globe.tiff; sourceTree = "<group>"; };
|
||||
E138A9730C04D88F00C5426C /* CTGradient.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CTGradient.h; sourceTree = "<group>"; };
|
||||
E138A9740C04D88F00C5426C /* CTGradient.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CTGradient.m; sourceTree = "<group>"; };
|
||||
E138A9750C04D88F00C5426C /* CTGradientAdditions.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = CTGradientAdditions.h; sourceTree = "<group>"; };
|
||||
E138A9760C04D88F00C5426C /* CTGradientAdditions.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = CTGradientAdditions.m; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -518,6 +502,7 @@
|
|||
A24999210B49F1B5001EADA3 /* ActionPopUpButton.m */,
|
||||
A2A1CB770BF29D5500AE959F /* PeerProgressIndicatorCell.h */,
|
||||
A2A1CB780BF29D5500AE959F /* PeerProgressIndicatorCell.m */,
|
||||
E138A9720C04D88F00C5426C /* CTGradient */,
|
||||
);
|
||||
name = Sources;
|
||||
sourceTree = "<group>";
|
||||
|
@ -551,17 +536,6 @@
|
|||
A259316A0A73B2CC002F4FE7 /* Transmission Help */,
|
||||
A2F8951E0A2D4BA500ED2127 /* Credits.rtf */,
|
||||
A2FB06950BFF484A0095564D /* Globe.tiff */,
|
||||
A2305AA40A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png */,
|
||||
A2305AA50A3DCCEF00AB2D77 /* ProgressBarEndBlue.png */,
|
||||
A2305AA60A3DCCEF00AB2D77 /* ProgressBarEndWhite.png */,
|
||||
A2305AA70A3DCCEF00AB2D77 /* ProgressBarEndGreen.png */,
|
||||
A2305AA80A3DCCEF00AB2D77 /* ProgressBarEndGray.png */,
|
||||
A2305A940A3DCAC500AB2D77 /* ProgressBarAdvanced.png */,
|
||||
A2305A7C0A3DC9E400AB2D77 /* ProgressBarWhite.png */,
|
||||
A2305A7D0A3DC9E400AB2D77 /* ProgressBarBlue.png */,
|
||||
A2305A7E0A3DC9E400AB2D77 /* ProgressBarGray.png */,
|
||||
A2305A7F0A3DC9E400AB2D77 /* ProgressBarGreen.png */,
|
||||
A28FF34D0BB23A4E001F5010 /* ProgressBarLightGreen.png */,
|
||||
A260C9AB0AA3B8D700FDC1B7 /* Error.tiff */,
|
||||
A29C8B320ACC6E93000ED9F9 /* YellowDot.tiff */,
|
||||
A2D4F0840A915F7200890C32 /* GreenDot.tiff */,
|
||||
|
@ -718,6 +692,18 @@
|
|||
name = CLI;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
E138A9720C04D88F00C5426C /* CTGradient */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
E138A9730C04D88F00C5426C /* CTGradient.h */,
|
||||
E138A9740C04D88F00C5426C /* CTGradient.m */,
|
||||
E138A9750C04D88F00C5426C /* CTGradientAdditions.h */,
|
||||
E138A9760C04D88F00C5426C /* CTGradientAdditions.m */,
|
||||
);
|
||||
name = CTGradient;
|
||||
path = macosx/CTGradient;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXHeadersBuildPhase section */
|
||||
|
@ -828,6 +814,7 @@
|
|||
);
|
||||
mainGroup = 29B97314FDCFA39411CA2CEA /* Transmission */;
|
||||
projectDirPath = "";
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8D1107260486CEB800E47090 /* Transmission */,
|
||||
4DDBB71809E16BAE00284745 /* transmissioncli */,
|
||||
|
@ -873,16 +860,6 @@
|
|||
A2F40AE40A361C00006B8288 /* Transmission.icns in Resources */,
|
||||
A25FCDEF0A3769A6002BCBBE /* PauseSelected.png in Resources */,
|
||||
A25FCDF00A3769AC002BCBBE /* ResumeSelected.png in Resources */,
|
||||
A2305A800A3DC9E400AB2D77 /* ProgressBarWhite.png in Resources */,
|
||||
A2305A810A3DC9E400AB2D77 /* ProgressBarBlue.png in Resources */,
|
||||
A2305A820A3DC9E400AB2D77 /* ProgressBarGray.png in Resources */,
|
||||
A2305A830A3DC9E400AB2D77 /* ProgressBarGreen.png in Resources */,
|
||||
A2305A950A3DCAC500AB2D77 /* ProgressBarAdvanced.png in Resources */,
|
||||
A2305AA90A3DCCEF00AB2D77 /* ProgressBarEndAdvanced.png in Resources */,
|
||||
A2305AAA0A3DCCEF00AB2D77 /* ProgressBarEndBlue.png in Resources */,
|
||||
A2305AAB0A3DCCEF00AB2D77 /* ProgressBarEndWhite.png in Resources */,
|
||||
A2305AAC0A3DCCEF00AB2D77 /* ProgressBarEndGreen.png in Resources */,
|
||||
A2305AAD0A3DCCEF00AB2D77 /* ProgressBarEndGray.png in Resources */,
|
||||
A2D0E0490A54A97C003C72CF /* Bandwidth.png in Resources */,
|
||||
A2F6DB090A55F31C0058D1E5 /* SpeedLimitButton.png in Resources */,
|
||||
A20AB97B0A5C622A004F81FA /* SmallTurtle.png in Resources */,
|
||||
|
@ -910,7 +887,6 @@
|
|||
A29C8B330ACC6E93000ED9F9 /* YellowDot.tiff in Resources */,
|
||||
A22A8D560AEEAFA5007E9CB9 /* Localizable.strings in Resources */,
|
||||
A24103070AF80E390001C8D0 /* FilterButtonPressedLeft.png in Resources */,
|
||||
A28FF34E0BB23A4E001F5010 /* ProgressBarLightGreen.png in Resources */,
|
||||
A241528B0C0261B8007DD3B4 /* Globe.tiff in Resources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
|
@ -1005,6 +981,8 @@
|
|||
A2A1CB7A0BF29D5500AE959F /* PeerProgressIndicatorCell.m in Sources */,
|
||||
A2385DD40BFE06C800B24EF6 /* DragOverlayWindow.m in Sources */,
|
||||
A2FB057F0BFEB6800095564D /* DragOverlayView.m in Sources */,
|
||||
E138A9770C04D88F00C5426C /* CTGradient.m in Sources */,
|
||||
E138A9780C04D88F00C5426C /* CTGradientAdditions.m in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
//
|
||||
// CTGradient.h
|
||||
//
|
||||
// Created by Chad Weider on 2/14/07.
|
||||
// Copyright (c) 2007 Chad Weider.
|
||||
// Some rights reserved: <http://creativecommons.org/licenses/by/2.5/>
|
||||
//
|
||||
// Version: 1.6
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
|
||||
typedef struct _CTGradientElement
|
||||
{
|
||||
float red, green, blue, alpha;
|
||||
float position;
|
||||
|
||||
struct _CTGradientElement *nextElement;
|
||||
} CTGradientElement;
|
||||
|
||||
typedef enum _CTBlendingMode
|
||||
{
|
||||
CTLinearBlendingMode,
|
||||
CTChromaticBlendingMode,
|
||||
CTInverseChromaticBlendingMode
|
||||
} CTGradientBlendingMode;
|
||||
|
||||
|
||||
@interface CTGradient : NSObject <NSCopying, NSCoding>
|
||||
{
|
||||
CTGradientElement* elementList;
|
||||
CTGradientBlendingMode blendingMode;
|
||||
|
||||
CGFunctionRef gradientFunction;
|
||||
}
|
||||
|
||||
+ (id)gradientWithBeginningColor:(NSColor *)begin endingColor:(NSColor *)end;
|
||||
|
||||
+ (id)aquaSelectedGradient;
|
||||
+ (id)aquaNormalGradient;
|
||||
+ (id)aquaPressedGradient;
|
||||
|
||||
+ (id)unifiedSelectedGradient;
|
||||
+ (id)unifiedNormalGradient;
|
||||
+ (id)unifiedPressedGradient;
|
||||
+ (id)unifiedDarkGradient;
|
||||
|
||||
+ (id)sourceListSelectedGradient;
|
||||
+ (id)sourceListUnselectedGradient;
|
||||
|
||||
+ (id)rainbowGradient;
|
||||
+ (id)hydrogenSpectrumGradient;
|
||||
|
||||
- (CTGradient *)gradientWithAlphaComponent:(float)alpha;
|
||||
|
||||
- (void)addElement:(CTGradientElement*)newElement;
|
||||
|
||||
- (CTGradient *)addColorStop:(NSColor *)color atPosition:(float)position; //positions given relative to [0,1]
|
||||
- (CTGradient *)removeColorStopAtIndex:(unsigned)index;
|
||||
- (CTGradient *)removeColorStopAtPosition:(float)position;
|
||||
|
||||
- (CTGradientBlendingMode)blendingMode;
|
||||
- (NSColor *)colorStopAtIndex:(unsigned)index;
|
||||
- (NSColor *)colorAtPosition:(float)position;
|
||||
|
||||
|
||||
- (void)drawSwatchInRect:(NSRect)rect;
|
||||
- (void)fillRect:(NSRect)rect angle:(float)angle; //fills rect with axial gradient
|
||||
// angle in degrees
|
||||
- (void)radialFillRect:(NSRect)rect; //fills rect with radial gradient
|
||||
// gradient from center outwards
|
||||
- (void)fillBezierPath:(NSBezierPath *)path angle:(float)angle;
|
||||
- (void)radialFillBezierPath:(NSBezierPath *)path;
|
||||
|
||||
@end
|
|
@ -0,0 +1,45 @@
|
|||
/******************************************************************************
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (c) 2007 Transmission authors and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "CTGradient.h"
|
||||
|
||||
@interface CTGradient (ActionBarView)
|
||||
+ (CTGradient *)actionNormalGradient;
|
||||
+ (CTGradient *)actionPressedGradient;
|
||||
@end
|
||||
|
||||
@interface CTGradient (ProgressBar)
|
||||
+ (CTGradient *)progressWhiteGradient;
|
||||
+ (CTGradient *)progressGrayGradient;
|
||||
+ (CTGradient *)progressBlueGradient;
|
||||
+ (CTGradient *)progressGreenGradient;
|
||||
+ (CTGradient *)progressLightGreenGradient;
|
||||
+ (CTGradient *)progressTransparentGradient;
|
||||
@end
|
||||
|
||||
@interface CTGradient (MiddleColour)
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor:(NSColor *)middle endingColor:(NSColor *)end;
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor1:(NSColor *)middle1
|
||||
middleColor2:(NSColor *)middle2 endingColor:(NSColor *)end;
|
||||
@end
|
|
@ -0,0 +1,388 @@
|
|||
/******************************************************************************
|
||||
* $Id$
|
||||
*
|
||||
* Copyright (c) 2007 Transmission authors and contributors
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*****************************************************************************/
|
||||
|
||||
#import "CTGradientAdditions.h"
|
||||
|
||||
@implementation CTGradient (ActionBar)
|
||||
|
||||
+ (CTGradient *)actionNormalGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.9;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.9;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.95;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 1.0;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)actionPressedGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.80;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.64;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 11.5/23;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.80;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 11.5/23;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.77;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@implementation CTGradient (ProgressBar)
|
||||
|
||||
+ (CTGradient *)progressWhiteGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.95;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.8;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.95;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.95;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressGrayGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 0.7;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 0.6;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 0.7;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 0.7;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressBlueGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.416;
|
||||
color1.green = 0.788;
|
||||
color1.blue = 0.97;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.274;
|
||||
color2.green = 0.52;
|
||||
color2.blue = 0.94;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.372;
|
||||
color3.green = 0.635;
|
||||
color3.blue = 0.98;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.396;
|
||||
color4.green = 0.66;
|
||||
color4.blue = 1.00;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressGreenGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.270;
|
||||
color1.green = 0.89;
|
||||
color1.blue = 0.35;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.180;
|
||||
color2.green = 0.71;
|
||||
color2.blue = 0.23;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.420;
|
||||
color3.green = 0.86;
|
||||
color3.blue = 0.32;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.466;
|
||||
color4.green = 0.89;
|
||||
color4.blue = 0.34;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressLightGreenGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = 0.478;
|
||||
color1.green = 1.00;
|
||||
color1.blue = 0.55;
|
||||
color1.alpha = 1.00;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = 0.388;
|
||||
color2.green = 0.92;
|
||||
color2.blue = 0.44;
|
||||
color2.alpha = 1.00;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = 0.627;
|
||||
color3.green = 1.00;
|
||||
color3.blue = 0.53;
|
||||
color3.alpha = 1.00;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = 0.675;
|
||||
color4.green = 1.00;
|
||||
color4.blue = 0.55;
|
||||
color4.alpha = 1.00;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)progressTransparentGradient
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
color1.red = color1.green = color1.blue = 1.0;
|
||||
color1.alpha = 0.65;
|
||||
color1.position = 0;
|
||||
|
||||
CTGradientElement color2;
|
||||
color2.red = color2.green = color2.blue = 1.0;
|
||||
color2.alpha = 0.05;
|
||||
color2.position = 0.5;
|
||||
|
||||
CTGradientElement color3;
|
||||
color3.red = color3.green = color3.blue = 1.0;
|
||||
color3.alpha = 0.4;
|
||||
color3.position = 0.5;
|
||||
|
||||
CTGradientElement color4;
|
||||
color4.red = color4.green = color4.blue = 1.0;
|
||||
color4.alpha = 0.4;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
@implementation CTGradient (MiddleColour)
|
||||
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor:(NSColor *)middle endingColor:(NSColor *)end
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
CTGradientElement color2;
|
||||
CTGradientElement color3;
|
||||
|
||||
[[begin colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color1.red
|
||||
green:&color1.green
|
||||
blue:&color1.blue
|
||||
alpha:&color1.alpha];
|
||||
[[middle colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color2.red
|
||||
green:&color2.green
|
||||
blue:&color2.blue
|
||||
alpha:&color2.alpha];
|
||||
[[end colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color3.red
|
||||
green:&color3.green
|
||||
blue:&color3.blue
|
||||
alpha:&color3.alpha];
|
||||
color1.position = 0;
|
||||
color2.position = 0.5;
|
||||
color3.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
+ (CTGradient *)gradientWithBeginningColor:(NSColor *)begin middleColor1:(NSColor *)middle1
|
||||
middleColor2:(NSColor *)middle2 endingColor:(NSColor *)end
|
||||
{
|
||||
CTGradient *newInstance = [[[self class] alloc] init];
|
||||
|
||||
CTGradientElement color1;
|
||||
CTGradientElement color2;
|
||||
CTGradientElement color3;
|
||||
CTGradientElement color4;
|
||||
|
||||
[[begin colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color1.red
|
||||
green:&color1.green
|
||||
blue:&color1.blue
|
||||
alpha:&color1.alpha];
|
||||
[[middle1 colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color2.red
|
||||
green:&color2.green
|
||||
blue:&color2.blue
|
||||
alpha:&color2.alpha];
|
||||
[[middle2 colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color3.red
|
||||
green:&color3.green
|
||||
blue:&color3.blue
|
||||
alpha:&color3.alpha];
|
||||
[[end colorUsingColorSpaceName:NSCalibratedRGBColorSpace] getRed:&color4.red
|
||||
green:&color4.green
|
||||
blue:&color4.blue
|
||||
alpha:&color4.alpha];
|
||||
color1.position = 0;
|
||||
color2.position = 0.5;
|
||||
color3.position = 0.5;
|
||||
color4.position = 1;
|
||||
|
||||
[newInstance addElement:&color1];
|
||||
[newInstance addElement:&color2];
|
||||
[newInstance addElement:&color3];
|
||||
[newInstance addElement:&color4];
|
||||
|
||||
return [newInstance autorelease];
|
||||
}
|
||||
|
||||
@end
|
Before Width: | Height: | Size: 142 B |
Before Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 123 B |
Before Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 125 B |
Before Width: | Height: | Size: 136 B |
Before Width: | Height: | Size: 151 B |
Before Width: | Height: | Size: 2.8 KiB |
Before Width: | Height: | Size: 152 B |
|
@ -25,16 +25,14 @@
|
|||
#ifndef TORRENTCELL_H
|
||||
#define TORRENTCELL_H
|
||||
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#import "Torrent.h"
|
||||
#import "CTGradient.h"
|
||||
|
||||
@interface TorrentCell : NSCell
|
||||
{
|
||||
NSImage * fProgressWhite, * fProgressBlue, * fProgressGray, * fProgressGreen,
|
||||
* fProgressAdvanced, * fProgressEndWhite, * fProgressEndBlue,
|
||||
* fProgressEndGray, * fProgressEndGreen, * fProgressLightGreen,
|
||||
* fProgressEndAdvanced, * fErrorImage;
|
||||
|
||||
NSImage * fErrorImage;
|
||||
CTGradient * fWhiteGradient, * fGreyGradient, * fLightGreenGradient,
|
||||
* fGreenGradient, * fBlueGradient, * fTransparentGradient;
|
||||
NSUserDefaults * fDefaults;
|
||||
}
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#import "TorrentCell.h"
|
||||
#import "TorrentTableView.h"
|
||||
#import "StringAdditions.h"
|
||||
#import "CTGradientAdditions.h"
|
||||
|
||||
//also defined in Torrent.m
|
||||
#define BAR_HEIGHT 12.0
|
||||
|
@ -41,42 +42,21 @@
|
|||
|
||||
- (id) init
|
||||
{
|
||||
if ((self = [super init]))
|
||||
{
|
||||
if((self = [super init]))
|
||||
{
|
||||
fDefaults = [NSUserDefaults standardUserDefaults];
|
||||
|
||||
NSSize startSize = NSMakeSize(100.0, BAR_HEIGHT);
|
||||
|
||||
fProgressWhite = [NSImage imageNamed: @"ProgressBarWhite.png"];
|
||||
[fProgressWhite setScalesWhenResized: YES];
|
||||
fWhiteGradient = [[CTGradient aquaNormalGradient] retain];
|
||||
fGreyGradient = [[CTGradient progressGrayGradient] retain];
|
||||
fBlueGradient = [[CTGradient progressBlueGradient] retain];
|
||||
fGreenGradient = [[CTGradient progressGreenGradient] retain];
|
||||
fLightGreenGradient = [[CTGradient progressLightGreenGradient] retain];
|
||||
fTransparentGradient = [[CTGradient progressTransparentGradient] retain];
|
||||
|
||||
fProgressBlue = [NSImage imageNamed: @"ProgressBarBlue.png"];
|
||||
[fProgressBlue setScalesWhenResized: YES];
|
||||
[fProgressBlue setSize: startSize];
|
||||
|
||||
fProgressGray = [NSImage imageNamed: @"ProgressBarGray.png"];
|
||||
[fProgressGray setScalesWhenResized: YES];
|
||||
[fProgressGray setSize: startSize];
|
||||
|
||||
fProgressGreen = [NSImage imageNamed: @"ProgressBarGreen.png"];
|
||||
[fProgressGreen setScalesWhenResized: YES];
|
||||
|
||||
fProgressLightGreen = [NSImage imageNamed: @"ProgressBarLightGreen.png"];
|
||||
[fProgressLightGreen setScalesWhenResized: YES];
|
||||
|
||||
fProgressAdvanced = [NSImage imageNamed: @"ProgressBarAdvanced.png"];
|
||||
[fProgressAdvanced setScalesWhenResized: YES];
|
||||
|
||||
fProgressEndWhite = [NSImage imageNamed: @"ProgressBarEndWhite.png"];
|
||||
fProgressEndBlue = [NSImage imageNamed: @"ProgressBarEndBlue.png"];
|
||||
fProgressEndGray = [NSImage imageNamed: @"ProgressBarEndGray.png"];
|
||||
fProgressEndGreen = [NSImage imageNamed: @"ProgressBarEndGreen.png"];
|
||||
fProgressEndAdvanced = [NSImage imageNamed: @"ProgressBarEndAdvanced.png"];
|
||||
|
||||
fErrorImage = [[NSImage imageNamed: @"Error.tiff"] copy]; //no need to release for some reason
|
||||
[fErrorImage setFlipped: YES];
|
||||
fErrorImage = [[NSImage imageNamed: @"Error"] copy];
|
||||
[fErrorImage setFlipped: YES];
|
||||
}
|
||||
return self;
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) placeBar: (NSImage *) barImage width: (float) width point: (NSPoint) point
|
||||
|
@ -93,88 +73,61 @@
|
|||
- (void) buildSimpleBar: (float) width point: (NSPoint) point
|
||||
{
|
||||
NSDictionary * info = [self objectValue];
|
||||
|
||||
width -= 2.0;
|
||||
float completedWidth, remainingWidth;
|
||||
|
||||
//bar images and widths
|
||||
NSImage * barLeftEnd, * barRightEnd, * barComplete, * barRemaining;
|
||||
NSRect barBounds, completeBounds;
|
||||
if([[self controlView] isFlipped])
|
||||
barBounds = NSMakeRect(point.x, point.y, width, BAR_HEIGHT);
|
||||
else
|
||||
barBounds = NSMakeRect(point.x, point.y - BAR_HEIGHT, width, BAR_HEIGHT);
|
||||
completeBounds = barBounds;
|
||||
|
||||
if ([[info objectForKey: @"Seeding"] boolValue])
|
||||
{
|
||||
float stopRatio, ratio;
|
||||
if ((stopRatio = [[info objectForKey: @"StopRatio"] floatValue]) != INVALID
|
||||
&& (ratio = [[info objectForKey: @"Ratio"] floatValue]) < stopRatio)
|
||||
{
|
||||
if (ratio < 0)
|
||||
ratio = 0;
|
||||
completedWidth = width * ratio / stopRatio;
|
||||
}
|
||||
else
|
||||
completedWidth = width;
|
||||
remainingWidth = width - completedWidth;
|
||||
{
|
||||
if (ratio < 0)
|
||||
ratio = 0;
|
||||
completeBounds.size.width = width * ratio / stopRatio;
|
||||
}
|
||||
|
||||
barLeftEnd = fProgressEndGreen;
|
||||
barRightEnd = fProgressEndGreen;
|
||||
barComplete = fProgressGreen;
|
||||
barRemaining = fProgressLightGreen;
|
||||
if (completeBounds.size.width < barBounds.size.width)
|
||||
[fLightGreenGradient fillRect: barBounds angle: -90];
|
||||
[fGreenGradient fillRect: completeBounds angle: -90];
|
||||
}
|
||||
else
|
||||
{
|
||||
completedWidth = [[info objectForKey: @"Progress"] floatValue] * width;
|
||||
remainingWidth = width - completedWidth;
|
||||
completeBounds.size.width = [[info objectForKey: @"Progress"] floatValue] * width;
|
||||
if (completeBounds.size.width < barBounds.size.width)
|
||||
[fWhiteGradient fillRect: barBounds angle: -90];
|
||||
|
||||
BOOL isActive = [[info objectForKey: @"Active"] boolValue];
|
||||
|
||||
if (remainingWidth == width)
|
||||
barLeftEnd = fProgressEndWhite;
|
||||
else if (isActive)
|
||||
barLeftEnd = fProgressEndBlue;
|
||||
if ([[info objectForKey: @"Active"] boolValue])
|
||||
[fBlueGradient fillRect: completeBounds angle: -90];
|
||||
else
|
||||
barLeftEnd = fProgressEndGray;
|
||||
|
||||
if (completedWidth < width)
|
||||
barRightEnd = fProgressEndWhite;
|
||||
else if (isActive)
|
||||
barRightEnd = fProgressEndBlue;
|
||||
else
|
||||
barRightEnd = fProgressEndGray;
|
||||
|
||||
barComplete = isActive ? fProgressBlue : fProgressGray;
|
||||
barRemaining = fProgressWhite;
|
||||
[fGreyGradient fillRect: completeBounds angle: -90];
|
||||
}
|
||||
|
||||
//place bar
|
||||
[barLeftEnd compositeToPoint: point operation: NSCompositeSourceOver];
|
||||
|
||||
point.x += 1.0;
|
||||
[self placeBar: barComplete width: completedWidth point: point];
|
||||
|
||||
point.x += completedWidth;
|
||||
[self placeBar: barRemaining width: remainingWidth point: point];
|
||||
|
||||
point.x += remainingWidth;
|
||||
[barRightEnd compositeToPoint: point operation: NSCompositeSourceOver];
|
||||
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
||||
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
||||
}
|
||||
|
||||
- (void) buildAdvancedBar: (float) widthFloat point: (NSPoint) point
|
||||
- (void) buildAdvancedBar: (float) width point: (NSPoint) point
|
||||
{
|
||||
NSDictionary * info = [self objectValue];
|
||||
|
||||
//draw overlay over advanced bar
|
||||
[fProgressEndAdvanced compositeToPoint: point operation: NSCompositeSourceOver];
|
||||
|
||||
widthFloat -= 2.0;
|
||||
point.x += 1.0;
|
||||
|
||||
//place actual advanced bar
|
||||
NSImage * image = [info objectForKey: @"AdvancedBar"];
|
||||
[image setSize: NSMakeSize(widthFloat, BAR_HEIGHT)];
|
||||
[image setSize: NSMakeSize(width, BAR_HEIGHT)];
|
||||
[image compositeToPoint: point operation: NSCompositeSourceOver];
|
||||
|
||||
[self placeBar: fProgressAdvanced width: widthFloat point: point];
|
||||
|
||||
point.x += widthFloat;
|
||||
[fProgressEndAdvanced compositeToPoint: point operation: NSCompositeSourceOver];
|
||||
NSRect barBounds;
|
||||
if([[self controlView] isFlipped])
|
||||
barBounds = NSMakeRect(point.x, point.y, width, BAR_HEIGHT);
|
||||
else
|
||||
barBounds = NSMakeRect(point.x, point.y - BAR_HEIGHT, width, BAR_HEIGHT);
|
||||
[fTransparentGradient fillRect: barBounds angle: -90];
|
||||
[[NSColor colorWithDeviceWhite: 0.0 alpha: 0.2] set];
|
||||
[NSBezierPath strokeRect: NSInsetRect(barBounds, 0.5, 0.5)];
|
||||
}
|
||||
|
||||
- (void) toggleMinimalStatus
|
||||
|
|