source: trunk/Cocoa/Pester/Source/NSImage-NJRExtensions.m@ 39

Last change on this file since 39 was 34, checked in by Nicholas Riley, 22 years ago

Changes for Pester 1.1d1.

File size: 1.9 KB
Line 
1//
2// NSImage-NJRExtensions.m
3// Pester
4//
5// Created by Nicholas Riley on Mon Oct 28 2002.
6// Copyright (c) 2002 __MyCompanyName__. All rights reserved.
7//
8
9#import "NSImage-NJRExtensions.h"
10
11
12@implementation NSImage (NJRExtensions)
13
14- (NSImage *)bestFitImageForSize:(NSSize)imageSize;
15{
16 NSSize repSize;
17 NSArray *imageReps;
18 int i, repCount;
19 NSImageRep *preferredRep, *rep;
20 imageReps = [self representations];
21 repCount = [imageReps count];
22 preferredRep = [imageReps objectAtIndex: 0];
23 for (i = 1 ; i < repCount ; i++) {
24 rep = [imageReps objectAtIndex: i];
25 repSize = [rep size];
26 if (repSize.width == imageSize.width && repSize.height == imageSize.height) {
27 preferredRep = rep;
28 break;
29 }
30 if (repSize.width >= imageSize.width || repSize.height >= imageSize.height) {
31 // pick the smallest of the larger representations
32 if (repSize.width <= [preferredRep size].width ||
33 repSize.height <= [preferredRep size].height) preferredRep = rep;
34 } else {
35 // or the largest of the smaller representations
36 if (([preferredRep size].width > imageSize.width ||
37 [preferredRep size].height > imageSize.height) ||
38 // (assuming that the previous preferred rep was smaller, too)
39 // XXX fix this in HostLauncher too
40 (repSize.width >= [preferredRep size].width ||
41 repSize.height >= [preferredRep size].height)) preferredRep = rep;
42 }
43 }
44 // Begin workaround code for bug in OS X 10.1 (removeRepresentation: has no effect)
45 if (repCount > 1) {
46 NSImage *image = [[[NSImage alloc] initWithSize: [preferredRep size]] autorelease];
47 [image addRepresentation: preferredRep];
48 return image;
49 } else {
50 return self;
51 }
52}
53
54@end
Note: See TracBrowser for help on using the repository browser.