forked from arauchfuss/Simple-Comic
-
Notifications
You must be signed in to change notification settings - Fork 1
/
TSSTImageView.m
87 lines (66 loc) · 2.12 KB
/
TSSTImageView.m
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
//
// TSSTImageView.m
// SimpleComic
//
// Created by Alexander Rauchfuss on 7/15/07.
// Copyright 2007 Dancing Tortoise Software. All rights reserved.
//
#import "TSSTImageView.h"
#import "TSSTImageUtilities.h"
static NSDictionary * stringAttributes;
@implementation TSSTImageView
@synthesize imageName;
+ (void)initialize
{
NSMutableParagraphStyle * style = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[style setLineBreakMode: NSLineBreakByTruncatingHead];
stringAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:
[NSFont fontWithName: @"Lucida Grande" size: 14], NSFontAttributeName,
[NSColor colorWithCalibratedWhite: 1 alpha: 1.0], NSForegroundColorAttributeName,
style, NSParagraphStyleAttributeName,
nil] retain];
[style release];
}
- (id) init
{
self = [super init];
if (self != nil)
{
clears = NO;
}
return self;
}
- (void)setClears:(BOOL)canClear
{
clears = canClear;
}
- (BOOL)clears
{
return clears;
}
- (void)drawRect:(NSRect)rect
{
if(clears)
{
[[NSColor clearColor] set];
NSRectFill( [self bounds]);
}
NSRect imageRect = rectWithSizeCenteredInRect([[self image] size], [self bounds]);
// [NSGraphicsContext saveGraphicsState];
// [[NSGraphicsContext currentContext] setImageInterpolation: NSImageInterpolationHigh];
[[self image] drawInRect: imageRect
fromRect: NSZeroRect
operation: NSCompositeSourceOver
fraction: 1];
if(self.imageName)
{
imageRect = NSInsetRect(imageRect, 10, 10);
NSRect stringRect = [self.imageName boundingRectWithSize: imageRect.size options: 0 attributes: stringAttributes];
stringRect = rectWithSizeCenteredInRect(stringRect.size, imageRect);
[[NSColor colorWithCalibratedWhite: 0 alpha: 0.8] set];
[roundedRectWithCornerRadius(NSInsetRect(stringRect, -5, -5), 10) fill];
[self.imageName drawInRect: stringRect withAttributes: stringAttributes];
}
// [NSGraphicsContext restoreGraphicsState];
}
@end