1/******************************************************************************
2 * $Id: ProgressGradients.m 13253 2012-03-13 03:20:09Z livings124 $
3 * 
4 * Copyright (c) 2007-2012 Transmission authors and contributors
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 *****************************************************************************/
24
25#import "ProgressGradients.h"
26
27@implementation ProgressGradients (Private)
28
29+ (NSGradient *) progressGradientForRed: (CGFloat) redComponent green: (CGFloat) greenComponent blue: (CGFloat) blueComponent
30{
31    const CGFloat alpha = [[NSUserDefaults standardUserDefaults] boolForKey: @"SmallView"] ? 0.27 : 1.0;
32    
33    NSColor * baseColor = [NSColor colorWithCalibratedRed: redComponent green: greenComponent blue: blueComponent alpha: alpha];
34    
35    NSColor * color2 = [NSColor colorWithCalibratedRed: redComponent * 0.95 green: greenComponent * 0.95 blue: blueComponent * 0.95
36                        alpha: alpha];
37    
38    NSColor * color3 = [NSColor colorWithCalibratedRed: redComponent * 0.85 green: greenComponent * 0.85 blue: blueComponent * 0.85
39                        alpha: alpha];
40    
41    return [[[NSGradient alloc] initWithColorsAndLocations: baseColor, 0.0, color2, 0.5, color3, 0.5, baseColor, 1.0, nil] autorelease];
42}
43
44@end
45
46@implementation ProgressGradients
47
48+ (NSGradient *) progressWhiteGradient
49{
50    return [[self class] progressGradientForRed: 0.95 green: 0.95 blue: 0.95];
51}
52
53+ (NSGradient *) progressGrayGradient
54{
55    return [[self class] progressGradientForRed: 0.7 green: 0.7 blue: 0.7];
56}
57
58+ (NSGradient *) progressLightGrayGradient
59{
60    return [[self class] progressGradientForRed: 0.87 green: 0.87 blue: 0.87];
61}
62
63+ (NSGradient *) progressBlueGradient
64{
65    return [[self class] progressGradientForRed: 0.35 green: 0.67 blue: 0.98];
66}
67
68+ (NSGradient *) progressDarkBlueGradient
69{
70    return [[self class] progressGradientForRed: 0.616 green: 0.722 blue: 0.776];
71}
72
73+ (NSGradient *) progressGreenGradient
74{
75    return [[self class] progressGradientForRed: 0.44 green: 0.89 blue: 0.40];
76}
77
78+ (NSGradient *) progressLightGreenGradient
79{
80    return [[self class] progressGradientForRed: 0.62 green: 0.99 blue: 0.58];
81}
82
83+ (NSGradient *) progressDarkGreenGradient
84{
85    return [[self class] progressGradientForRed: 0.627 green: 0.714 blue: 0.639];
86}
87
88+ (NSGradient *) progressRedGradient
89{
90    return [[self class] progressGradientForRed: 0.902 green: 0.439 blue: 0.451];
91}
92
93+ (NSGradient *) progressYellowGradient
94{
95    return [[self class] progressGradientForRed: 0.933 green: 0.890 blue: 0.243];
96}
97
98@end
99