-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMyViewController.m
More file actions
executable file
·136 lines (89 loc) · 3.63 KB
/
Copy pathMyViewController.m
File metadata and controls
executable file
·136 lines (89 loc) · 3.63 KB
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
//
// MyViewController.m
// CocoaPictionary
//
// Created by Jason on 10/16/09.
// Copyright 2009 TokBox Inc.. All rights reserved.
//
#import <Carbon/Carbon.h>
#import "TabletApplication.h"
#import "MyViewController.h"
@implementation MyViewController
- (id)initWithFrame:(NSRect)pNsrectFrameRect {
if ((self = [super initWithFrame:pNsrectFrameRect]) == nil) {
return self;
} // end if
myMutaryOfBrushStrokes = [[NSMutableArray alloc]init];
// initialise random numebr generator used in drawRect for creating colours etc.
srand(time(NULL));
return self;
} // end initWithFrame
-(void) awakeFromNib
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleProximity:)
name:kProximityNotification
object:nil];
}
- (void)clear {
[myMutaryOfBrushStrokes removeAllObjects];
[myMutaryOfPoints removeAllObjects];
[self setNeedsDisplay:YES];
}
-(void)mouseDown:(NSEvent *)pTheEvent {
myMutaryOfPoints = [[NSMutableArray alloc]init];
[myMutaryOfBrushStrokes addObject:myMutaryOfPoints];
NSPoint tvarMousePointInWindow = [pTheEvent locationInWindow];
NSPoint tvarMousePointInView = [self convertPoint:tvarMousePointInWindow fromView:nil];
MyPoint * tvarMyPointObj = [[MyPoint alloc]initWithNSPoint:tvarMousePointInView];
[myMutaryOfPoints addObject:tvarMyPointObj];
} // end mouseDown
-(void)mouseDragged:(NSEvent *)pTheEvent {
BOOL eraser = false;
NSPoint tvarMousePointInWindow = [pTheEvent locationInWindow];
NSPoint tvarMousePointInView = [self convertPoint:tvarMousePointInWindow fromView:nil];
MyPoint * tvarMyPointObj = [[MyPoint alloc]initWithNSPoint:tvarMousePointInView is_eraser:eraser];
[myMutaryOfPoints addObject:tvarMyPointObj];
[self setNeedsDisplay:YES];
} // end mouseDragged
-(void)mouseUp:(NSEvent *)pTheEvent {
bool eraser=false;
NSPoint tvarMousePointInWindow = [pTheEvent locationInWindow];
NSPoint tvarMousePointInView = [self convertPoint:tvarMousePointInWindow fromView:nil];
MyPoint * tvarMyPointObj = [[MyPoint alloc]initWithNSPoint:tvarMousePointInView is_eraser:eraser];
[myMutaryOfPoints addObject:tvarMyPointObj];
[self setNeedsDisplay:YES];
} // end mouseUp
- (float)randVar;
{
return ( (float)(rand() % 10000 ) / 10000.0);
} // end randVar
- (void)drawRect:(NSRect)pNSRect {
// colour the background white
[[NSColor whiteColor] set]; // this is Cocoa
NSRectFill( pNSRect );
if ([myMutaryOfBrushStrokes count] == 0) {
return;
} // end if
// This is Quartz
NSGraphicsContext * tvarNSGraphicsContext = [NSGraphicsContext currentContext];
CGContextRef tvarCGContextRef = (CGContextRef) [tvarNSGraphicsContext graphicsPort];
NSUInteger tvarIntNumberOfStrokes = [myMutaryOfBrushStrokes count];
NSUInteger i;
for (i = 0; i < tvarIntNumberOfStrokes; i++) {
CGContextSetRGBStrokeColor(tvarCGContextRef,0,0,0,255);
CGContextSetLineWidth(tvarCGContextRef, (3.0) );
myMutaryOfPoints = [myMutaryOfBrushStrokes objectAtIndex:i];
NSUInteger tvarIntNumberOfPoints = [myMutaryOfPoints count]; // always >= 2
MyPoint * tvarLastPointObj = [myMutaryOfPoints objectAtIndex:0];
CGContextBeginPath(tvarCGContextRef);
CGContextMoveToPoint(tvarCGContextRef,[tvarLastPointObj x],[tvarLastPointObj y]);
NSUInteger j;
for (j = 1; j < tvarIntNumberOfPoints; j++) { // note the index starts at 1
MyPoint * tvarCurPointObj = [myMutaryOfPoints objectAtIndex:j];
CGContextAddLineToPoint(tvarCGContextRef,[tvarCurPointObj x],[tvarCurPointObj y]);
} // end for
CGContextDrawPath(tvarCGContextRef,kCGPathStroke);
} // end for
} // end drawRect
@end