-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathDiffScroller.m
66 lines (53 loc) · 1.47 KB
/
DiffScroller.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
#import "DiffScroller.h"
#include <math.h>
@implementation DiffScroller
- (void) drawRect: (NSRect) aRect
{
int i;
NSRect knobRect = [self rectForPart: NSScrollerKnob];
NSRect knobSlotRect = [self rectForPart: NSScrollerKnobSlot];
NSRect rect1, rect2;
NSRect rect;
[super drawRect: aRect];
//[[NSColor lightGrayColor] set];
[[NSColor colorWithDeviceRed:0.7 green:0.7 blue:1. alpha:0.1] set];
rect.size.width = knobSlotRect.size.width;
rect.origin.x = knobSlotRect.origin.x;
rect1.size.width = knobSlotRect.size.width;
rect1.origin.x = knobSlotRect.origin.x;
rect2.size.width = knobSlotRect.size.width;
rect2.origin.x = knobSlotRect.origin.x;
for (i = 1; i < length - 2; i += 2)
{
rect.origin.y =
floor((position[i] * knobSlotRect.size.height) / height);
rect.size.height =
floor(( (position[i + 1] - position[i]) * knobSlotRect.size.height )
/ height);
if (rect.size.height < 1)
rect.size.height = 1;
if (NSIntersectsRect(rect, knobRect))
{
if (rect.origin.y < knobRect.origin.y)
{
rect1.origin.y = rect.origin.y;
rect1.size.height = NSMinY(knobRect) - rect1.origin.y;
NSRectFill(rect1);
}
if (NSMaxY(rect) > NSMaxY(knobRect))
{
rect2.origin.y = NSMaxY(knobRect);
rect2.size.height = NSMaxY(rect) - rect2.origin.y;
NSRectFill(rect2);
}
}
else
{
NSRectFill(rect);
}
}
return;
NSRectFill (rect1);
NSRectFill (rect2);
}
@end