226 |
case NSScaleProportionally: |
case NSScaleProportionally: |
227 |
{ |
{ |
228 |
NSDebugLLog(@"NSImageCell", @"NSScaleProportionally"); |
NSDebugLLog(@"NSImageCell", @"NSScaleProportionally"); |
229 |
[_cell_image setScalesWhenResized:YES]; |
imageSize = scaleProportionally ([_cell_image size], cellFrame); |
|
[_cell_image setSize: scaleProportionally (_original_image_size, |
|
|
cellFrame)]; |
|
230 |
break; |
break; |
231 |
} |
} |
232 |
case NSScaleToFit: |
case NSScaleToFit: |
233 |
{ |
{ |
234 |
NSDebugLLog(@"NSImageCell", @"NSScaleToFit"); |
NSDebugLLog(@"NSImageCell", @"NSScaleToFit"); |
235 |
[_cell_image setScalesWhenResized:YES]; |
imageSize = cellFrame.size; |
|
[_cell_image setSize: cellFrame.size]; |
|
236 |
break; |
break; |
237 |
} |
} |
238 |
|
default: |
239 |
case NSScaleNone: |
case NSScaleNone: |
240 |
{ |
{ |
241 |
NSDebugLLog(@"NSImageCell", @"NSScaleNone"); |
NSDebugLLog(@"NSImageCell", @"NSScaleNone"); |
242 |
[_cell_image setScalesWhenResized:NO]; |
imageSize = [_cell_image size]; |
|
// don't let the image size overrun the space available |
|
|
if (_original_image_size.width > cellFrame.size.width |
|
|
|| _original_image_size.height > cellFrame.size.height) |
|
|
[_cell_image setSize: cellFrame.size]; |
|
|
else |
|
|
[_cell_image setSize: _original_image_size]; |
|
243 |
break; |
break; |
244 |
} |
} |
245 |
} |
} |
246 |
|
|
|
imageSize = [_cell_image size]; |
|
|
|
|
247 |
switch (_imageAlignment) |
switch (_imageAlignment) |
248 |
{ |
{ |
249 |
|
default: |
250 |
case NSImageAlignLeft: |
case NSImageAlignLeft: |
251 |
position.x = xLeftInRect(imageSize, cellFrame); |
position.x = xLeftInRect(imageSize, cellFrame); |
252 |
position.y = yCenterInRect(imageSize, cellFrame, is_flipped); |
position.y = yCenterInRect(imageSize, cellFrame, is_flipped); |
290 |
position.y += imageSize.height; |
position.y += imageSize.height; |
291 |
|
|
292 |
// draw! |
// draw! |
293 |
[_cell_image compositeToPoint: position operation: NSCompositeSourceOver]; |
/* TODO: Clean this up when bug #11712 is fixed. */ |
294 |
|
if (NSEqualSizes(imageSize, [_cell_image size])) |
295 |
|
[_cell_image compositeToPoint: position operation: NSCompositeSourceOver]; |
296 |
|
else |
297 |
|
{ |
298 |
|
BOOL wasScalable = [_cell_image scalesWhenResized]; |
299 |
|
[_cell_image setScalesWhenResized: YES]; |
300 |
|
[_cell_image drawRepresentation: |
301 |
|
[_cell_image bestRepresentationForDevice: nil] |
302 |
|
inRect: |
303 |
|
NSMakeRect(position.x, position.y, imageSize.width, |
304 |
|
imageSize.height)]; |
305 |
|
[_cell_image setScalesWhenResized: wasScalable]; |
306 |
|
} |
307 |
|
|
308 |
if (_cell.shows_first_responder) |
if (_cell.shows_first_responder) |
309 |
NSDottedFrameRect(cellFrame); |
NSDottedFrameRect(cellFrame); |