-
Notifications
You must be signed in to change notification settings - Fork 2
/
LMHexCell.m
89 lines (66 loc) · 1.78 KB
/
LMHexCell.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
88
89
//
// LMHexCell.m
// Elysium
//
// Created by Matt Mower on 29/07/2008.
// Copyright 2008 LucidMac Software. All rights reserved.
//
#import <HoneycombView/LMHexCell.h>
#import <HoneycombView/LMHoneycombView.h>
#import "LMRegularPolygon.h"
@implementation LMHexCell
#pragma mark Initializers
- (id)initWithColumn:(int)col row:(int)row {
return [self initWithColumn:col row:row data:nil];
}
- (id)initWithColumn:(int)col row:(int)row data:(id)data {
if( self = [super init] ) {
mPath = nil;
mCol = col;
mRow = row;
mData = data;
mSelected = NO;
mDirty = YES;
}
return self;
}
#pragma mark Properties
@synthesize mCentre;
@synthesize mRadius;
@synthesize mPath;
@synthesize mCol;
@synthesize mRow;
@synthesize mData;
@synthesize mSelected;
- (void)setSelected:(BOOL)selected {
mSelected = selected;
[self setDirty:YES];
}
@synthesize mDirty;
- (void)setHexCentre:(NSPoint)centre radius:(CGFloat)radius {
mCentre = centre;
mRadius = radius;
mPath = [NSBezierPath bezierPath];
[mPath appendHexagonWithCentre:centre radius:radius];
[self setDirty:YES];
}
- (void)drawOnHoneycombView:(LMHoneycombView *)view withAttributes:(NSMutableDictionary *)attributes {
if( [self selected] ) {
[[attributes objectForKey:LMHoneycombViewSelectedColor] set];
} else {
[[attributes objectForKey:LMHoneycombViewDefaultColor] set];
}
[[self path] fill];
if( [self selected] ) {
[[attributes objectForKey:LMHoneycombViewSelectedBorderColor] set];
} else {
[[attributes objectForKey:LMHoneycombViewBorderColor] set];
}
[[self path] setLineWidth:[[attributes objectForKey:LMHoneycombViewBorderWidth] floatValue]];
[[self path] stroke];
[self setDirty:NO];
}
- (NSMenu *)contextMenu {
return nil;
}
@end