59 - (id)initWithPickerMask:(
int)mask colorPanel:(
CPColorPanel)owningColorPanel
68 _contentView = [[
CPView alloc] initWithFrame:aFrame];
69 [_contentView setAutoresizingMask:CPViewWidthSizable | CPViewHeightSizable];
72 [_rgbLabel setStringValue:"Red, Green, Blue"];
76 [_redLabel setStringValue:"R"];
79 _redSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 35, aFrame.size.width - 70, 20)];
80 [_redSlider setMaxValue:1.0];
81 [_redSlider setMinValue:0.0];
82 [_redSlider setTarget:self];
83 [_redSlider setAction:@selector(sliderChanged:)];
84 [_redSlider setAutoresizingMask:CPViewWidthSizable];
87 _redValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 30, 45, 28)];
88 [_redValue setAutoresizingMask:CPViewMinXMargin];
89 [_redValue setEditable:YES];
90 [_redValue setBezeled:YES];
91 [_redValue setDelegate:self];
92 [_contentView addSubview:_redValue];
95 [_greenLabel setStringValue:"G"];
98 _greenSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 61, aFrame.size.width - 70, 20)];
99 [_greenSlider setMaxValue:1.0];
100 [_greenSlider setMinValue:0.0];
101 [_greenSlider setTarget:self];
102 [_greenSlider setAction:@selector(sliderChanged:)];
103 [_greenSlider setAutoresizingMask:CPViewWidthSizable];
106 _greenValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 56, 45, 28)];
107 [_greenValue setAutoresizingMask:CPViewMinXMargin];
108 [_greenValue setEditable:YES];
109 [_greenValue setBezeled:YES];
110 [_greenValue setDelegate:self];
111 [_contentView addSubview:_greenValue];
114 [_blueLabel setStringValue:"B"];
117 _blueSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 87, aFrame.size.width - 70, 20)];
118 [_blueSlider setMaxValue:1.0];
119 [_blueSlider setMinValue:0.0];
120 [_blueSlider setTarget:self];
121 [_blueSlider setAction:@selector(sliderChanged:)];
122 [_blueSlider setAutoresizingMask:CPViewWidthSizable];
125 _blueValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 82, 45, 28)];
126 [_blueValue setAutoresizingMask:CPViewMinXMargin];
127 [_blueValue setEditable:YES];
128 [_blueValue setBezeled:YES];
129 [_blueValue setDelegate:self];
130 [_contentView addSubview:_blueValue];
132 _hsbLabel = [[
CPTextField alloc] initWithFrame:CGRectMake(0, 120, 190, 20)];
133 [_hsbLabel setStringValue:"Hue, Saturation, Brightness"];
137 [_hueLabel setStringValue:"H"];
140 _hueSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 143, aFrame.size.width - 70, 20)];
141 [_hueSlider setMaxValue:359.0];
142 [_hueSlider setMinValue:0.0];
143 [_hueSlider setTarget:self];
144 [_hueSlider setAction:@selector(sliderChanged:)];
145 [_hueSlider setAutoresizingMask:CPViewWidthSizable];
148 _hueValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 138, 45, 28)];
149 [_hueValue setAutoresizingMask:CPViewMinXMargin];
150 [_hueValue setEditable:YES];
151 [_hueValue setBezeled:YES];
152 [_hueValue setDelegate:self];
153 [_contentView addSubview:_hueValue];
155 _saturationLabel = [[
CPTextField alloc] initWithFrame:CGRectMake(0, 170, 15, 20)];
156 [_saturationLabel setStringValue:"S"];
159 _saturationSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 168, aFrame.size.width - 70, 20)];
160 [_saturationSlider setMaxValue:100.0];
161 [_saturationSlider setMinValue:0.0];
162 [_saturationSlider setTarget:self];
163 [_saturationSlider setAction:@selector(sliderChanged:)];
164 [_saturationSlider setAutoresizingMask:CPViewWidthSizable];
167 _saturationValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 164, 45, 28)];
168 [_saturationValue setAutoresizingMask:CPViewMinXMargin];
169 [_saturationValue setEditable:YES];
170 [_saturationValue setBezeled:YES];
171 [_saturationValue setDelegate:self];
172 [_contentView addSubview:_saturationValue];
174 _brightnessLabel = [[
CPTextField alloc] initWithFrame:CGRectMake(0, 196, 15, 20)];
175 [_brightnessLabel setStringValue:"B"];
178 _brightnessSlider = [[
CPSlider alloc] initWithFrame:CGRectMake(15, 194, aFrame.size.width - 70, 20)];
179 [_brightnessSlider setMaxValue:100.0];
180 [_brightnessSlider setMinValue:0.0];
181 [_brightnessSlider setTarget:self];
182 [_brightnessSlider setAction:@selector(sliderChanged:)];
183 [_brightnessSlider setAutoresizingMask:CPViewWidthSizable];
186 _brightnessValue = [[
CPTextField alloc] initWithFrame:CGRectMake(aFrame.size.width - 45, 190, 45, 28)];
187 [_brightnessValue setAutoresizingMask:CPViewMinXMargin];
188 [_brightnessValue setEditable:YES];
189 [_brightnessValue setBezeled:YES];
190 [_brightnessValue setDelegate:self];
191 [_contentView addSubview:_brightnessValue];
194 [_hexLabel setStringValue:"Hex"];
198 _hexValue = [[
CPTextField alloc] initWithFrame:CGRectMake(32, 225, 80, 28)];
199 [_hexValue setEditable:YES];
200 [_hexValue setBezeled:YES];
201 [_hexValue setDelegate:self];
202 [_contentView addSubview:_hexValue];
204 [_contentView addSubview:_rgbLabel];
205 [_contentView addSubview:_redLabel];
206 [_contentView addSubview:_greenLabel];
207 [_contentView addSubview:_blueLabel];
208 [_contentView addSubview:_redSlider];
209 [_contentView addSubview:_greenSlider];
210 [_contentView addSubview:_blueSlider];
212 [_contentView addSubview:_hsbLabel];
213 [_contentView addSubview:_hueLabel];
214 [_contentView addSubview:_saturationLabel];
215 [_contentView addSubview:_brightnessLabel];
216 [_contentView addSubview:_hueSlider];
217 [_contentView addSubview:_saturationSlider];
218 [_contentView addSubview:_brightnessSlider];
220 [_contentView addSubview:_hexLabel];
223 - (
CPView)provideNewView:(BOOL)initialRequest
236 - (BOOL)supportsMode:(
int)mode
241 - (void)sliderChanged:(
id)sender
250 case _saturationSlider:
262 green:[_greenSlider floatValue]
263 blue:[_blueSlider floatValue]
287 [_hueSlider setFloatValue:hsb[0]];
288 [_saturationSlider setFloatValue:hsb[1]];
289 [_brightnessSlider setFloatValue:hsb[2]];
294 [_hexValue setStringValue:[aColor
hexString]];
301 [_redSlider setFloatValue:rgb[0]];
302 [_greenSlider setFloatValue:rgb[1]];
303 [_blueSlider setFloatValue:rgb[2]];
308 [_hueValue setStringValue:ROUND([_hueSlider floatValue])];
309 [_saturationValue setStringValue:ROUND([_saturationSlider floatValue])];
310 [_brightnessValue setStringValue:ROUND([_brightnessSlider floatValue])];
312 [_redValue setStringValue:ROUND([_redSlider floatValue] * 255)];
313 [_greenValue setStringValue:ROUND([_greenSlider floatValue] * 255)];
314 [_blueValue setStringValue:ROUND([_blueSlider floatValue] * 255)];
329 var field = [aNotification
object],
330 value = [[field stringValue] stringByTrimmingWhitespace];
332 if (field === _hexValue)
346 case _redValue: [_redSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)];
350 case _greenValue: [_greenSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)];
354 case _blueValue: [_blueSlider setFloatValue:MAX(MIN(ROUND(value), 255) / 255.0, 0)];
358 case _hueValue: [_hueSlider setFloatValue:MAX(MIN(ROUND(value), 360), 0)];
362 case _saturationValue: [_saturationSlider setFloatValue:MAX(MIN(ROUND(value), 100), 0)];
366 case _brightnessValue: [_brightnessSlider setFloatValue:MAX(MIN(ROUND(value), 100), 0)];