diff options
Diffstat (limited to 'ImageAndTextCell.m')
-rwxr-xr-x | ImageAndTextCell.m | 135 |
1 files changed, 0 insertions, 135 deletions
diff --git a/ImageAndTextCell.m b/ImageAndTextCell.m deleted file mode 100755 index a8165f85..00000000 --- a/ImageAndTextCell.m +++ /dev/null @@ -1,135 +0,0 @@ -/* - ImageAndTextCell.m - Copyright © 2006, Apple Computer, Inc., all rights reserved. - - Subclass of NSTextFieldCell which can display text and an image simultaneously. -*/ - -#import "ImageAndTextCell.h" - -@implementation ImageAndTextCell - -- (void)dealloc { - [image release]; - image = nil; - [super dealloc]; -} - -- copyWithZone:(NSZone *)zone -{ - ImageAndTextCell *cell = (ImageAndTextCell *)[super copyWithZone:zone]; - cell->image = [image retain]; - return cell; -} - -- (void)setImage:(NSImage *)anImage -{ - if (anImage != image) - { - [image release]; - image = [anImage retain]; - } -} - -- (NSImage *)image -{ - return image; -} - -- (NSRect)imageFrameForCellFrame:(NSRect)cellFrame -{ - if (image != nil) - { - NSRect imageFrame; - imageFrame.size = [image size]; - imageFrame.origin = cellFrame.origin; - imageFrame.origin.x += ((1 - MIN(1,INDENT_AMOUNT)) * 3) + (INDENT_AMOUNT * _indentationLevel); - imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); - return imageFrame; - } - else - return NSZeroRect; -} - -- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent -{ - if (_indentationLevel != 0) { - NSRect indentationFrame; - NSDivideRect(aRect, &indentationFrame, &aRect, (INDENT_AMOUNT * _indentationLevel), NSMinXEdge); - } - - if (image != nil) { - NSRect imageFrame; - NSDivideRect (aRect, &imageFrame, &aRect, 3 + [image size].width, NSMinXEdge); - } - - [super editWithFrame:aRect inView: controlView editor:textObj delegate:anObject event:theEvent]; -} - -- (void)selectWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject start:(int)selStart length:(int)selLength -{ - if (_indentationLevel != 0) { - NSRect indentationFrame; - NSDivideRect(aRect, &indentationFrame, &aRect, (INDENT_AMOUNT * _indentationLevel), NSMinXEdge); - } - - if (image != nil) { - NSRect imageFrame; - NSDivideRect (aRect, &imageFrame, &aRect, 3 + [image size].width, NSMinXEdge); - } - - [super selectWithFrame:aRect inView: controlView editor:textObj delegate:anObject start:selStart length:selLength]; -} - -- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView -{ - if (_indentationLevel != 0) - { - NSRect indentationFrame; - NSDivideRect(cellFrame, &indentationFrame, &cellFrame, (INDENT_AMOUNT * _indentationLevel), NSMinXEdge); - } - - if (image != nil) - { - NSSize imageSize; - NSRect imageFrame; - - imageSize = [image size]; - NSDivideRect(cellFrame, &imageFrame, &cellFrame, 3 + imageSize.width, NSMinXEdge); - if ([self drawsBackground]) - { - [[self backgroundColor] set]; - NSRectFill(imageFrame); - } - imageFrame.origin.x += 3; - imageFrame.size = imageSize; - - if ([controlView isFlipped]) - imageFrame.origin.y += ceil((cellFrame.size.height + imageFrame.size.height) / 2); - else - imageFrame.origin.y += ceil((cellFrame.size.height - imageFrame.size.height) / 2); - - [image compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver]; - } - [super drawWithFrame:cellFrame inView:controlView]; -} - -- (NSSize)cellSize -{ - NSSize cellSize = [super cellSize]; - cellSize.width += (image ? [image size].width : 0) + ((1 - MIN(1,INDENT_AMOUNT)) * 3) + (INDENT_AMOUNT * _indentationLevel); - return cellSize; -} - -- (void)setIndentationLevel:(int)level -{ - _indentationLevel = MAX(0,level); -} - -- (int)IndentationLevel -{ - return _indentationLevel; -} - -@end - |