File: MTextImageCell.m

package info (click to toggle)
mysql-gui-tools 5.0r14%2BopenSUSE-2.1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 116,956 kB
  • ctags: 48,715
  • sloc: sql: 341,918; pascal: 276,698; ansic: 91,020; cpp: 90,451; objc: 33,236; sh: 29,481; yacc: 10,756; xml: 10,589; java: 10,079; php: 2,806; python: 2,092; makefile: 1,783; perl: 4
file content (88 lines) | stat: -rw-r--r-- 2,342 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//
//  MTextImageCell.m
//  MySQLGUICommon
//
//  Created by Alfredo Kojima on Wed Jul 07 2004.
//  Copyright (c) 2004 MySQL AB. All rights reserved.
//

#import "MTextImageCell.h"

#define IMAGE_OFFSET 2

@implementation MTextImageCell

- (void)dealloc 
{
  [_image release];
  [super dealloc];
}

- copyWithZone:(NSZone*)zone 
{
  MTextImageCell *copy = (MTextImageCell*)[super copyWithZone:zone];
  copy->_image = [_image retain];
  return copy;
}

- (void)setImage:(NSImage*)image 
{
  if (image != _image) 
  {
    [_image release];
    _image = [image retain];
  }
}

- (NSImage*)image 
{
  return _image;
}


- (void)editWithFrame:(NSRect)aRect inView:(NSView *)controlView editor:(NSText *)textObj delegate:(id)anObject event:(NSEvent *)theEvent 
{
  NSRect textFrame, imageFrame;
  NSDivideRect(aRect, &imageFrame, &textFrame, IMAGE_OFFSET + [_image size].width, NSMinXEdge);
  [super editWithFrame: textFrame 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 
{
  NSRect textFrame, imageFrame;
  NSDivideRect(aRect, &imageFrame, &textFrame, IMAGE_OFFSET + [_image size].width, NSMinXEdge);
  [super selectWithFrame: textFrame inView: controlView editor:textObj delegate:anObject start:selStart length:selLength];
}

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView 
{
  if (_image != nil) 
  {
    NSSize imageSize;
    NSRect imageFrame;
    
    imageSize = [_image size];
    NSDivideRect(cellFrame, &imageFrame, &cellFrame, IMAGE_OFFSET + imageSize.width, NSMinXEdge);
    if ([self drawsBackground]) 
    {
      [[self backgroundColor] set];
      NSRectFill(imageFrame);
    }
    imageFrame.origin.x += IMAGE_OFFSET;
    if ([controlView isFlipped])
      imageFrame.origin.y += ceil((cellFrame.size.height + imageSize.height) / 2);
    else
      imageFrame.origin.y += ceil((cellFrame.size.height - imageSize.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) + IMAGE_OFFSET;
  return cellSize;
}

@end